@@ -352,34 +352,58 @@ encode_supportedPublicKey(#'OTPSubjectPublicKeyInfo'{
352352
353353% %% Extensions
354354
355- extension_id (?'id-ce-authorityKeyIdentifier' ) -> 'AuthorityKeyIdentifier' ;
356- extension_id (?'id-ce-subjectKeyIdentifier' ) -> 'SubjectKeyIdentifier' ;
357- extension_id (?'id-ce-keyUsage' ) -> 'KeyUsage' ;
358- extension_id (?'id-ce-privateKeyUsagePeriod' ) -> 'PrivateKeyUsagePeriod' ;
359- extension_id (?'id-ce-certificatePolicies' ) -> 'CertificatePolicies' ;
360- extension_id (?'id-ce-policyMappings' ) -> 'PolicyMappings' ;
361- extension_id (?'id-ce-subjectAltName' ) -> 'SubjectAltName' ;
362- extension_id (?'id-ce-issuerAltName' ) -> 'IssuerAltName' ;
363- extension_id (?'id-ce-subjectDirectoryAttributes' ) -> 'SubjectDirectoryAttributes' ;
364- extension_id (?'id-ce-basicConstraints' ) -> 'BasicConstraints' ;
365- extension_id (?'id-ce-nameConstraints' ) -> 'NameConstraints' ;
366- extension_id (?'id-ce-policyConstraints' ) -> 'PolicyConstraints' ;
367- extension_id (?'id-ce-extKeyUsage' ) -> 'ExtKeyUsageSyntax' ;
368- extension_id (?'id-ce-inhibitAnyPolicy' ) -> 'InhibitAnyPolicy' ;
369- extension_id (?'id-ce-freshestCRL' ) -> 'FreshestCRL' ;
370- extension_id (?'id-ce-issuingDistributionPoint' ) -> 'IssuingDistributionPoint' ;
371- % % Missing in public_key doc
372- extension_id (?'id-pe-authorityInfoAccess' ) -> 'AuthorityInfoAccessSyntax' ;
373- extension_id (?'id-pe-subjectInfoAccess' ) -> 'SubjectInfoAccessSyntax' ;
374- extension_id (?'id-ce-cRLNumber' ) -> 'CRLNumber' ;
375- extension_id (?'id-ce-deltaCRLIndicator' ) -> 'BaseCRLNumber' ;
376- extension_id (?'id-ce-cRLReasons' ) -> 'CRLReason' ;
377- extension_id (?'id-ce-certificateIssuer' ) -> 'CertificateIssuer' ;
378- extension_id (?'id-ce-holdInstructionCode' ) -> 'HoldInstructionCode' ;
379- extension_id (?'id-ce-invalidityDate' ) -> 'InvalidityDate' ;
380- extension_id (?'id-ce-cRLDistributionPoints' ) -> 'CRLDistributionPoints' ;
355+ extension_id (?'id-ce-authorityKeyIdentifier' ) ->
356+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'AuthorityKeyIdentifier' };
357+ extension_id (?'id-ce-subjectKeyIdentifier' ) ->
358+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectKeyIdentifier' };
359+ extension_id (?'id-ce-keyUsage' ) ->
360+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'KeyUsage' };
361+ extension_id (?'id-ce-privateKeyUsagePeriod' ) ->
362+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'PrivateKeyUsagePeriod' };
363+ extension_id (?'id-ce-certificatePolicies' ) ->
364+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'CertificatePolicies' };
365+ extension_id (?'id-ce-policyMappings' ) ->
366+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'PolicyMappings' };
367+ extension_id (?'id-ce-subjectAltName' ) ->
368+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectAltName' };
369+ extension_id (?'id-ce-issuerAltName' ) ->
370+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'IssuerAltName' };
371+ extension_id (?'id-ce-subjectDirectoryAttributes' ) ->
372+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectDirectoryAttributes' };
373+ extension_id (?'id-ce-basicConstraints' ) ->
374+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'BasicConstraints' };
375+ extension_id (?'id-ce-nameConstraints' ) ->
376+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'NameConstraints' };
377+ extension_id (?'id-ce-policyConstraints' ) ->
378+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'PolicyConstraints' };
379+ extension_id (?'id-ce-extKeyUsage' ) ->
380+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'ExtKeyUsageSyntax' };
381+ extension_id (?'id-ce-inhibitAnyPolicy' ) ->
382+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'InhibitAnyPolicy' };
383+ extension_id (?'id-ce-freshestCRL' ) ->
384+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'FreshestCRL' };
385+ extension_id (?'id-ce-issuingDistributionPoint' ) ->
386+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'IssuingDistributionPoint' };
387+ extension_id (?'id-pe-authorityInfoAccess' ) ->
388+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'AuthorityInfoAccessSyntax' };
389+ extension_id (?'id-pe-subjectInfoAccess' ) ->
390+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'SubjectInfoAccessSyntax' };
391+ extension_id (?'id-ce-cRLNumber' ) ->
392+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'CRLNumber' };
393+ extension_id (?'id-ce-deltaCRLIndicator' ) ->
394+ {'PKIX1Implicit-2009' , getdec_CrlExtensions , getenc_CrlExtensions , 'BaseCRLNumber' };
395+ extension_id (?'id-ce-cRLReasons' ) ->
396+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'CRLReason' };
397+ extension_id (?'id-ce-certificateIssuer' ) ->
398+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'CertificateIssuer' };
399+ extension_id (?'id-ce-holdInstructionCode' ) ->
400+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'HoldInstructionCode' };
401+ extension_id (?'id-ce-invalidityDate' ) ->
402+ {'PKIX1Implicit-2009' , getdec_CrlEntryExtensions , getenc_CrlEntryExtensions , 'InvalidityDate' };
403+ extension_id (?'id-ce-cRLDistributionPoints' ) ->
404+ {'PKIX1Implicit-2009' , getdec_CertExtensions , getenc_CertExtensions , 'CRLDistributionPoints' };
381405extension_id (_ ) ->
382- undefined .
406+ { undefined , undefined , undefined , undefined } .
383407
384408ext_oid ('AuthorityKeyIdentifier' ) -> ?'id-ce-authorityKeyIdentifier' ;
385409ext_oid ('SubjectKeyIdentifier' ) -> ?'id-ce-subjectKeyIdentifier' ;
@@ -419,10 +443,8 @@ decode_extensions(Exts, WhenCRL) ->
419443 lists :map (fun (Ext = # 'Extension' {extnID = Id , extnValue = Value0 }) ->
420444 % % Some Extensions only has special decoding functions
421445 % % with other naming-convention
422- ExtId = extension_id (Id ),
423- case ExtId =/= undefined andalso
424- 'PKIX1Implicit-2009' :getdec_CertExtensions (Id )
425- of
446+ {Mod , DecLookup , _Enc , ExtId } = extension_id (Id ),
447+ case ExtId =/= undefined andalso Mod :DecLookup (Id ) of
426448 false ->
427449 Ext ;
428450 DecodeExt when ExtId =:= 'CertificatePolicies' ,
@@ -473,10 +495,8 @@ encode_extensions(Exts) ->
473495 % % Some Extensions only has special decoding functions
474496 % % with other naming-convention
475497 lists :map (fun (Ext = # 'Extension' {extnID = Id , extnValue = Value0 }) ->
476- ExtId = extension_id (Id ),
477- case ExtId =/= undefined andalso
478- 'PKIX1Implicit-2009' :getenc_CertExtensions (Id )
479- of
498+ {Mod , _Dec , EncLookup , ExtId } = extension_id (Id ),
499+ case ExtId =/= undefined andalso Mod :EncLookup (Id ) of
480500 false ->
481501 Ext ;
482502 EncodeExt when is_function (EncodeExt , 3 ) ->
0 commit comments