Skip to main content

Module ext_builders

Module ext_builders 

Source
Expand description

Python bindings for X.509 extension DER value builders.

Registers the synta.ext submodule with low-level DER-encoding helpers for the most common X.509 v3 extension values. Each function returns the raw DER bytes of the extension’s extnValue — the content inside the OCTET STRING wrapper.

§Key identifier method constants

Pass these to subject_key_identifier and authority_key_identifier as the method argument:

ConstantValueSpecification
KEYID_RFC52800SHA-1 of BIT STRING value of subjectPublicKey (RFC 5280 §4.2.1.2)
KEYID_RFC7093M11SHA-256 of BIT STRING value, truncated to 160 bits (RFC 7093 §2 m1)
KEYID_RFC7093M22SHA-384 of BIT STRING value, truncated to 160 bits (RFC 7093 §2 m2)
KEYID_RFC7093M33SHA-512 of BIT STRING value, truncated to 160 bits (RFC 7093 §2 m3)
KEYID_RFC7093M44SHA-256 of full SubjectPublicKeyInfo DER (RFC 7093 §2 m4)

§Key usage bitmask constants

KU_* constants are ready-to-OR bitmasks for key_usage:

ConstantMaskNamed bit (RFC 5280 §4.2.1.3)
KU_DIGITAL_SIGNATURE0x001digitalSignature
KU_NON_REPUDIATION0x002contentCommitment
KU_KEY_ENCIPHERMENT0x004keyEncipherment
KU_DATA_ENCIPHERMENT0x008dataEncipherment
KU_KEY_AGREEMENT0x010keyAgreement
KU_KEY_CERT_SIGN0x020keyCertSign
KU_CRL_SIGN0x040cRLSign
KU_ENCIPHER_ONLY0x080encipherOnly
KU_DECIPHER_ONLY0x100decipherOnly

§Fluent builder classes

Four builder classes accumulate entries and produce DER on .build():

ClassShort aliasExtensionOID
SubjectAlternativeNameBuilderSANSubject Alternative Name2.5.29.17
AuthorityInformationAccessBuilderAIAAuthority Information Access1.3.6.1.5.5.7.1.1
ExtendedKeyUsageBuilderEKUExtended Key Usage2.5.29.37
NameConstraintsBuilderNCName Constraints2.5.29.30

Structs§

PyAuthorityInformationAccessBuilder
Fluent builder for an AuthorityInfoAccessSyntax extension value (OID 1.3.6.1.5.5.7.1.1, Authority Information Access, RFC 5280 §4.2.2.1).
PyCRLDistributionPointsBuilder
Fluent builder for a CRLDistributionPoints extension value (OID 2.5.29.31).
PyCertificatePoliciesBuilder
Fluent builder for a CertificatePolicies extension value (OID 2.5.29.32, RFC 5280 §4.2.1.4).
PyExtendedKeyUsageBuilder
Fluent builder for an ExtKeyUsageSyntax extension value (OID 2.5.29.37, Extended Key Usage, RFC 5280 §4.2.1.12).
PyIssuerAlternativeNameBuilder
Fluent builder for an IssuerAltName extension value (OID 2.5.29.18).
PyIssuingDistributionPointBuilder
Fluent builder for an IssuingDistributionPoint extension value (OID 2.5.29.28, RFC 5280 §5.2.5).
PyNameConstraintsBuilder
Fluent builder for a NameConstraints extension value (OID 2.5.29.30, RFC 5280 §4.2.1.10).
PySubjectAlternativeNameBuilder
Fluent builder for a SubjectAltName extension value (OID 2.5.29.17).

Constants§

KEYID_RFC5280
RFC 5280 §4.2.1.2: SHA-1 of the BIT STRING value of subjectPublicKey.
KEYID_RFC7093M1
RFC 7093 §2 method 1: SHA-256 of BIT STRING value, truncated to 160 bits.
KEYID_RFC7093M2
RFC 7093 §2 method 2: SHA-384 of BIT STRING value, truncated to 160 bits.
KEYID_RFC7093M3
RFC 7093 §2 method 3: SHA-512 of BIT STRING value, truncated to 160 bits.
KEYID_RFC7093M4
RFC 7093 §2 method 4: SHA-256 of the full SubjectPublicKeyInfo DER encoding.
KU_CRL_SIGN
cRLSign (bit 6) — RFC 5280 §4.2.1.3.
KU_DATA_ENCIPHERMENT
dataEncipherment (bit 3) — RFC 5280 §4.2.1.3.
KU_DECIPHER_ONLY
decipherOnly (bit 8) — RFC 5280 §4.2.1.3; only meaningful when keyAgreement is set.
KU_DIGITAL_SIGNATURE
digitalSignature (bit 0) — RFC 5280 §4.2.1.3.
KU_ENCIPHER_ONLY
encipherOnly (bit 7) — RFC 5280 §4.2.1.3; only meaningful when keyAgreement is set.
KU_KEY_AGREEMENT
keyAgreement (bit 4) — RFC 5280 §4.2.1.3.
KU_KEY_CERT_SIGN
keyCertSign (bit 5) — RFC 5280 §4.2.1.3.
KU_KEY_ENCIPHERMENT
keyEncipherment (bit 2) — RFC 5280 §4.2.1.3.
KU_NON_REPUDIATION
contentCommitment / nonRepudiation (bit 1) — RFC 5280 §4.2.1.3.

Functions§

register_ext_module
Register the synta.ext submodule.