Skip to content

Commit 2370e49

Browse files
committed
Disable signing_certificate by default
1 parent 0399496 commit 2370e49

1 file changed

Lines changed: 24 additions & 18 deletions

File tree

signxml/xades/xades.py

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)