@@ -98,6 +98,8 @@ class XAdESSigner(XAdESProcessor, XMLSigner):
9898 Parameters to pass to the :class:`signxml.XMLSigner` constructor.
9999 """
100100
101+ use_deprecated_legacy_signing_certificate : bool = False
102+
101103 def __init__ (
102104 self ,
103105 signature_policy : Optional [XAdESSignaturePolicy ] = None ,
@@ -191,9 +193,6 @@ def add_signing_time(self, signed_signature_properties, sig_root, signing_settin
191193
192194 def add_signing_certificate (self , signed_signature_properties , sig_root , signing_settings : SigningSettings ):
193195 # Emit both legacy SigningCertificate (SHA1 + IssuerSerial) and SigningCertificateV2
194- signing_cert = SubElement (
195- signed_signature_properties , xades_tag ("SigningCertificate" ), nsmap = self .namespaces
196- )
197196 signing_cert_v2 = SubElement (
198197 signed_signature_properties , xades_tag ("SigningCertificateV2" ), nsmap = self .namespaces
199198 )
@@ -208,21 +207,28 @@ def add_signing_certificate(self, signed_signature_properties, sig_root, signing
208207 cert_digest_sha1_bytes = self ._get_digest (der_encoded_cert , algorithm = DigestAlgorithm .SHA1 )
209208
210209 # Legacy SigningCertificate
211- cert_node_legacy = SubElement (signing_cert , xades_tag ("Cert" ), nsmap = self .namespaces )
212- cert_digest = SubElement (cert_node_legacy , xades_tag ("CertDigest" ), nsmap = self .namespaces )
213- SubElement (cert_digest , ds_tag ("DigestMethod" ), nsmap = self .namespaces , Algorithm = DigestAlgorithm .SHA1 .value )
214- digest_value_node = SubElement (cert_digest , ds_tag ("DigestValue" ), nsmap = self .namespaces )
215- digest_value_node .text = b64encode (cert_digest_sha1_bytes ).decode ()
216- issuer_serial = SubElement (cert_node_legacy , xades_tag ("IssuerSerial" ), nsmap = self .namespaces )
217- issuer_name = SubElement (issuer_serial , ds_tag ("X509IssuerName" ), nsmap = self .namespaces )
218- issuer_name .text = "C={C},O={O},OU={OU},CN={CN}" .format (
219- C = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .COUNTRY_NAME )[0 ].value ,
220- O = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .ORGANIZATION_NAME )[0 ].value ,
221- OU = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .ORGANIZATIONAL_UNIT_NAME )[0 ].value ,
222- CN = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .COMMON_NAME )[0 ].value ,
223- )
224- serial_number = SubElement (issuer_serial , ds_tag ("X509SerialNumber" ), nsmap = self .namespaces )
225- serial_number .text = str (loaded_cert .serial_number )
210+ if self .use_deprecated_legacy_signing_certificate :
211+ signing_cert = SubElement (
212+ signed_signature_properties , xades_tag ("SigningCertificate" ), nsmap = self .namespaces
213+ )
214+
215+ cert_node_legacy = SubElement (signing_cert , xades_tag ("Cert" ), nsmap = self .namespaces )
216+ cert_digest = SubElement (cert_node_legacy , xades_tag ("CertDigest" ), nsmap = self .namespaces )
217+ SubElement (
218+ cert_digest , ds_tag ("DigestMethod" ), nsmap = self .namespaces , Algorithm = DigestAlgorithm .SHA1 .value
219+ )
220+ digest_value_node = SubElement (cert_digest , ds_tag ("DigestValue" ), nsmap = self .namespaces )
221+ digest_value_node .text = b64encode (cert_digest_sha1_bytes ).decode ()
222+ issuer_serial = SubElement (cert_node_legacy , xades_tag ("IssuerSerial" ), nsmap = self .namespaces )
223+ issuer_name = SubElement (issuer_serial , ds_tag ("X509IssuerName" ), nsmap = self .namespaces )
224+ issuer_name .text = "C={C},O={O},OU={OU},CN={CN}" .format (
225+ C = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .COUNTRY_NAME )[0 ].value ,
226+ O = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .ORGANIZATION_NAME )[0 ].value ,
227+ OU = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .ORGANIZATIONAL_UNIT_NAME )[0 ].value ,
228+ CN = loaded_cert .issuer .get_attributes_for_oid (x509 .oid .NameOID .COMMON_NAME )[0 ].value ,
229+ )
230+ serial_number = SubElement (issuer_serial , ds_tag ("X509SerialNumber" ), nsmap = self .namespaces )
231+ serial_number .text = str (loaded_cert .serial_number )
226232
227233 # SigningCertificateV2 (current default)
228234 cert_node = SubElement (signing_cert_v2 , xades_tag ("Cert" ), nsmap = self .namespaces )
0 commit comments