@@ -365,34 +365,58 @@ encode_supportedPublicKey(#'OTPSubjectPublicKeyInfo'{
365365
366366% %% Extensions
367367
368- extension_id (?'id-ce-authorityKeyIdentifier' ) -> 'AuthorityKeyIdentifier' ;
369- extension_id (?'id-ce-subjectKeyIdentifier' ) -> 'SubjectKeyIdentifier' ;
370- extension_id (?'id-ce-keyUsage' ) -> 'KeyUsage' ;
371- extension_id (?'id-ce-privateKeyUsagePeriod' ) -> 'PrivateKeyUsagePeriod' ;
372- extension_id (?'id-ce-certificatePolicies' ) -> 'CertificatePolicies' ;
373- extension_id (?'id-ce-policyMappings' ) -> 'PolicyMappings' ;
374- extension_id (?'id-ce-subjectAltName' ) -> 'SubjectAltName' ;
375- extension_id (?'id-ce-issuerAltName' ) -> 'IssuerAltName' ;
376- extension_id (?'id-ce-subjectDirectoryAttributes' ) -> 'SubjectDirectoryAttributes' ;
377- extension_id (?'id-ce-basicConstraints' ) -> 'BasicConstraints' ;
378- extension_id (?'id-ce-nameConstraints' ) -> 'NameConstraints' ;
379- extension_id (?'id-ce-policyConstraints' ) -> 'PolicyConstraints' ;
380- extension_id (?'id-ce-extKeyUsage' ) -> 'ExtKeyUsageSyntax' ;
381- extension_id (?'id-ce-inhibitAnyPolicy' ) -> 'InhibitAnyPolicy' ;
382- extension_id (?'id-ce-freshestCRL' ) -> 'FreshestCRL' ;
383- extension_id (?'id-ce-issuingDistributionPoint' ) -> 'IssuingDistributionPoint' ;
384- % % Missing in public_key doc
385- extension_id (?'id-pe-authorityInfoAccess' ) -> 'AuthorityInfoAccessSyntax' ;
386- extension_id (?'id-pe-subjectInfoAccess' ) -> 'SubjectInfoAccessSyntax' ;
387- extension_id (?'id-ce-cRLNumber' ) -> 'CRLNumber' ;
388- extension_id (?'id-ce-deltaCRLIndicator' ) -> 'BaseCRLNumber' ;
389- extension_id (?'id-ce-cRLReasons' ) -> 'CRLReason' ;
390- extension_id (?'id-ce-certificateIssuer' ) -> 'CertificateIssuer' ;
391- extension_id (?'id-ce-holdInstructionCode' ) -> 'HoldInstructionCode' ;
392- extension_id (?'id-ce-invalidityDate' ) -> 'InvalidityDate' ;
393- extension_id (?'id-ce-cRLDistributionPoints' ) -> 'CRLDistributionPoints' ;
368+ extension_id (?'id-ce-authorityKeyIdentifier' ) ->
369+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'AuthorityKeyIdentifier' };
370+ extension_id (?'id-ce-subjectKeyIdentifier' ) ->
371+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectKeyIdentifier' };
372+ extension_id (?'id-ce-keyUsage' ) ->
373+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'KeyUsage' };
374+ extension_id (?'id-ce-privateKeyUsagePeriod' ) ->
375+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'PrivateKeyUsagePeriod' };
376+ extension_id (?'id-ce-certificatePolicies' ) ->
377+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'CertificatePolicies' };
378+ extension_id (?'id-ce-policyMappings' ) ->
379+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'PolicyMappings' };
380+ extension_id (?'id-ce-subjectAltName' ) ->
381+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectAltName' };
382+ extension_id (?'id-ce-issuerAltName' ) ->
383+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'IssuerAltName' };
384+ extension_id (?'id-ce-subjectDirectoryAttributes' ) ->
385+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectDirectoryAttributes' };
386+ extension_id (?'id-ce-basicConstraints' ) ->
387+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'BasicConstraints' };
388+ extension_id (?'id-ce-nameConstraints' ) ->
389+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'NameConstraints' };
390+ extension_id (?'id-ce-policyConstraints' ) ->
391+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'PolicyConstraints' };
392+ extension_id (?'id-ce-extKeyUsage' ) ->
393+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'ExtKeyUsageSyntax' };
394+ extension_id (?'id-ce-inhibitAnyPolicy' ) ->
395+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'InhibitAnyPolicy' };
396+ extension_id (?'id-ce-freshestCRL' ) ->
397+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'FreshestCRL' };
398+ extension_id (?'id-ce-issuingDistributionPoint' ) ->
399+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'IssuingDistributionPoint' };
400+ extension_id (?'id-pe-authorityInfoAccess' ) ->
401+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'AuthorityInfoAccessSyntax' };
402+ extension_id (?'id-pe-subjectInfoAccess' ) ->
403+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectInfoAccessSyntax' };
404+ extension_id (?'id-ce-cRLNumber' ) ->
405+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'CRLNumber' };
406+ extension_id (?'id-ce-deltaCRLIndicator' ) ->
407+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'BaseCRLNumber' };
408+ extension_id (?'id-ce-cRLReasons' ) ->
409+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'CRLReason' };
410+ extension_id (?'id-ce-certificateIssuer' ) ->
411+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'CertificateIssuer' };
412+ extension_id (?'id-ce-holdInstructionCode' ) ->
413+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'HoldInstructionCode' };
414+ extension_id (?'id-ce-invalidityDate' ) ->
415+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'InvalidityDate' };
416+ extension_id (?'id-ce-cRLDistributionPoints' ) ->
417+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'CRLDistributionPoints' };
394418extension_id (_ ) ->
395- undefined .
419+ { undefined , undefined , undefined , undefined } .
396420
397421ext_oid ('AuthorityKeyIdentifier' ) -> ?'id-ce-authorityKeyIdentifier' ;
398422ext_oid ('SubjectKeyIdentifier' ) -> ?'id-ce-subjectKeyIdentifier' ;
@@ -432,10 +456,8 @@ decode_extensions(Exts, WhenCRL) ->
432456 lists :map (fun (Ext = # 'Extension' {extnID = Id , extnValue = Value0 }) ->
433457 % % Some Extensions only has special decoding functions
434458 % % with other naming-convention
435- ExtId = extension_id (Id ),
436- case ExtId =/= undefined andalso
437- 'PKIX1Implicit-2009' :getdec_CertExtensions (Id )
438- of
459+ {Mod , DecLookup , _Enc , ExtId } = extension_id (Id ),
460+ case ExtId =/= undefined andalso Mod :DecLookup (Id ) of
439461 false ->
440462 Ext ;
441463 DecodeExt when ExtId =:= 'CertificatePolicies' ,
@@ -486,10 +508,8 @@ encode_extensions(Exts) ->
486508 % % Some Extensions only has special decoding functions
487509 % % with other naming-convention
488510 lists :map (fun (Ext = # 'Extension' {extnID = Id , extnValue = Value0 }) ->
489- ExtId = extension_id (Id ),
490- case ExtId =/= undefined andalso
491- 'PKIX1Implicit-2009' :getenc_CertExtensions (Id )
492- of
511+ {Mod , _Dec , EncLookup , ExtId } = extension_id (Id ),
512+ case ExtId =/= undefined andalso Mod :EncLookup (Id ) of
493513 false ->
494514 Ext ;
495515 EncodeExt when is_function (EncodeExt , 3 ) ->
0 commit comments