Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Well-known OIDs

synta.oids provides 70+ well-known OID constants as ObjectIdentifier instances (frozen, hashable). Import with import synta.oids as oids.

Algorithm OIDs

ConstantOIDStandard
RSA_ENCRYPTION1.2.840.113549.1.1.1PKCS #1
MD5_WITH_RSA1.2.840.113549.1.1.4PKCS #1
SHA1_WITH_RSA1.2.840.113549.1.1.5PKCS #1
SHA256_WITH_RSA1.2.840.113549.1.1.11RFC 4055
SHA384_WITH_RSA1.2.840.113549.1.1.12RFC 4055
SHA512_WITH_RSA1.2.840.113549.1.1.13RFC 4055
EC_PUBLIC_KEY1.2.840.10045.2.1RFC 5480
ECDSA_WITH_SHA11.2.840.10045.4.1ANSI X9.62
ECDSA_WITH_SHA2561.2.840.10045.4.3.2RFC 5758
ECDSA_WITH_SHA3841.2.840.10045.4.3.3RFC 5758
ECDSA_WITH_SHA5121.2.840.10045.4.3.4RFC 5758
ED255191.3.101.112RFC 8410
ED4481.3.101.113RFC 8410
ML_DSA_442.16.840.1.101.3.4.3.17FIPS 204
ML_DSA_652.16.840.1.101.3.4.3.18FIPS 204
ML_DSA_872.16.840.1.101.3.4.3.19FIPS 204
ML_KEM_5122.16.840.1.101.3.4.4.1FIPS 203
ML_KEM_7682.16.840.1.101.3.4.4.2FIPS 203
ML_KEM_10242.16.840.1.101.3.4.4.3FIPS 203
EC_CURVE_P2561.2.840.10045.3.1.7NIST P-256
EC_CURVE_P3841.3.132.0.34NIST P-384
EC_CURVE_P5211.3.132.0.35NIST P-521
EC_CURVE_SECP256K11.3.132.0.10Bitcoin curve

Hash algorithm OIDs

ConstantOIDStandard
SHA2242.16.840.1.101.3.4.2.4FIPS 180-4
SHA2562.16.840.1.101.3.4.2.1FIPS 180-4
SHA3842.16.840.1.101.3.4.2.2FIPS 180-4
SHA5122.16.840.1.101.3.4.2.3FIPS 180-4
SHA512_2242.16.840.1.101.3.4.2.5FIPS 180-4
SHA512_2562.16.840.1.101.3.4.2.6FIPS 180-4
SHA3_2242.16.840.1.101.3.4.2.7FIPS 202
SHA3_2562.16.840.1.101.3.4.2.8FIPS 202
SHA3_3842.16.840.1.101.3.4.2.9FIPS 202
SHA3_5122.16.840.1.101.3.4.2.10FIPS 202
SHAKE1282.16.840.1.101.3.4.2.11FIPS 202
SHAKE2562.16.840.1.101.3.4.2.12FIPS 202

SLH-DSA OIDs (FIPS 205)

SLH_DSA_SHA2_128F, SLH_DSA_SHA2_128S, SLH_DSA_SHA2_192F, SLH_DSA_SHA2_192S, SLH_DSA_SHA2_256F, SLH_DSA_SHA2_256S, SLH_DSA_SHAKE_128F, SLH_DSA_SHAKE_128S, SLH_DSA_SHAKE_192F, SLH_DSA_SHAKE_192S, SLH_DSA_SHAKE_256F, SLH_DSA_SHAKE_256S.

Prefix OIDs

These are prefix arcs for use with oid.components() rather than exact match.

ConstantOID prefixCovers
RSA1.2.840.113549.1.1All PKCS#1 signature algorithms
ECDSA_SIG1.2.840.10045.4All ECDSA signature algorithms
ECDSA_KEY1.2.840.10045.2EC public-key types
DSA1.2.840.10040.4DSA and DSA-with-hash algorithms
# Example: match any RSA algorithm
import synta.oids as oids
rsa_prefix = oids.RSA.components()
if cert.signature_algorithm_oid.components()[:len(rsa_prefix)] == rsa_prefix:
    print("RSA family")

X.509v3 extension OIDs

ConstantOIDRFC reference
SUBJECT_ALT_NAME2.5.29.17RFC 5280
ISSUER_ALT_NAME2.5.29.18RFC 5280
BASIC_CONSTRAINTS2.5.29.19RFC 5280
KEY_USAGE2.5.29.15RFC 5280
EXTENDED_KEY_USAGE2.5.29.37RFC 5280
SUBJECT_KEY_IDENTIFIER2.5.29.14RFC 5280
AUTHORITY_KEY_IDENTIFIER2.5.29.35RFC 5280
CERTIFICATE_POLICIES2.5.29.32RFC 5280
CRL_DISTRIBUTION_POINTS2.5.29.31RFC 5280
AUTHORITY_INFO_ACCESS1.3.6.1.5.5.7.1.1RFC 5280
CT_PRECERT_SCTS1.3.6.1.4.1.11129.2.4.2RFC 6962

Extended Key Usage (EKU) OIDs

ConstantOIDUse
KP_SERVER_AUTH1.3.6.1.5.5.7.3.1TLS server authentication
KP_CLIENT_AUTH1.3.6.1.5.5.7.3.2TLS client authentication
KP_CODE_SIGNING1.3.6.1.5.5.7.3.3Code signing
KP_EMAIL_PROTECTION1.3.6.1.5.5.7.3.4S/MIME
KP_TIME_STAMPING1.3.6.1.5.5.7.3.8RFC 3161 TSA
KP_OCSP_SIGNING1.3.6.1.5.5.7.3.9OCSP responder
ANY_EXTENDED_KEY_USAGE2.5.29.37.0Match any EKU

PKINIT OIDs (RFC 4556 / RFC 8636)

ConstantOIDDescription
ID_PKINIT_SAN1.3.6.1.5.2.2KRB5PrincipalName OtherName type-id
ID_PKINIT_KPCLIENT_AUTH1.3.6.1.5.2.3.4PKINIT client auth EKU
ID_PKINIT_KPKDC1.3.6.1.5.2.3.5PKINIT KDC EKU
ID_PKINIT_AUTH_DATA1.3.6.1.5.2.3.1PA-PK-AS-REQ content type
ID_PKINIT_DHKEY_DATA1.3.6.1.5.2.3.2DH key data content type
ID_PKINIT_RKEY_DATA1.3.6.1.5.2.3.3Reply key pack content type
ID_PKINIT_KDF1.3.6.1.5.2.3.6KDF algorithm arc (RFC 8636)
ID_PKINIT_KDF_AH_SHA11.3.6.1.5.2.3.6.1PKINIT KDF with SHA-1
ID_PKINIT_KDF_AH_SHA2561.3.6.1.5.2.3.6.2PKINIT KDF with SHA-256
ID_PKINIT_KDF_AH_SHA3841.3.6.1.5.2.3.6.4PKINIT KDF with SHA-384
ID_PKINIT_KDF_AH_SHA5121.3.6.1.5.2.3.6.3PKINIT KDF with SHA-512

Microsoft PKI OIDs

ConstantOIDWindows name
ID_MS_SAN_UPN1.3.6.1.4.1.311.20.2.3szOID_NT_PRINCIPAL_NAME — UPN in OtherName
ID_MS_CERTIFICATE_TEMPLATE_NAME1.3.6.1.4.1.311.20.2szOID_CERTIFICATE_TEMPLATE_NAME (v1)
ID_MS_CERTIFICATE_TEMPLATE1.3.6.1.4.1.311.21.7szOID_CERTIFICATE_TEMPLATE (v2)
ID_MS_KP_SMARTCARD_LOGON1.3.6.1.4.1.311.20.2.2szOID_MS_KP_SMARTCARD_LOGON EKU
ID_MS_NTDS_REPLICATION1.3.6.1.4.1.311.25.1szOID_NTDS_REPLICATION EKU

CMS content-type OIDs (RFC 5652)

ConstantOIDName
CMS_DATA1.2.840.113549.1.7.1id-data
CMS_SIGNED_DATA1.2.840.113549.1.7.2id-signedData
CMS_ENVELOPED_DATA1.2.840.113549.1.7.3id-envelopedData
CMS_DIGESTED_DATA1.2.840.113549.1.7.5id-digestedData
CMS_ENCRYPTED_DATA1.2.840.113549.1.7.6id-encryptedData
CMS_AUTH_DATA1.2.840.113549.1.9.16.1.2id-ct-authData
CMS_ORI1.2.840.113549.1.9.16.13OtherRecipientInfo arc (RFC 9629)
CMS_ORI_KEM1.2.840.113549.1.9.16.13.3KEMRecipientInfo (RFC 9629)

PKCS#9 attribute OIDs

ConstantOIDDescription
PKCS9_EMAIL_ADDRESS1.2.840.113549.1.9.1emailAddress
PKCS9_CONTENT_TYPE1.2.840.113549.1.9.3id-contentType
PKCS9_MESSAGE_DIGEST1.2.840.113549.1.9.4id-messageDigest
PKCS9_SIGNING_TIME1.2.840.113549.1.9.5id-signingTime
PKCS9_COUNTERSIGNATURE1.2.840.113549.1.9.6id-countersignature
PKCS9_CHALLENGE_PASSWORD1.2.840.113549.1.9.7id-challengePassword
PKCS9_EXTENSION_REQUEST1.2.840.113549.1.9.14id-extensionRequest
PKCS9_FRIENDLY_NAME1.2.840.113549.1.9.20id-friendlyName
PKCS9_LOCAL_KEY_ID1.2.840.113549.1.9.21id-localKeyId

OID helper functions

def identify_signature_algorithm(oid: ObjectIdentifier | str) -> str: ...
# Returns a display name such as "sha256WithRSAEncryption", "ecdsa-with-SHA256",
# "Ed25519", "ML-DSA-65", etc.  Returns "Other" for unknown OIDs.

def identify_public_key_algorithm(oid: ObjectIdentifier | str) -> str | None: ...
# Returns "RSA", "EC", "Ed25519", "ML-DSA-65", etc., or None for unknown OIDs.

def ec_curve_short_name(oid: ObjectIdentifier | str) -> str | None: ...
# Returns the ASN.1 short name, e.g. "prime256v1", "secp384r1".

def ec_curve_nist_name(oid: ObjectIdentifier | str) -> str | None: ...
# Returns the NIST name, e.g. "P-256", "P-384".  None for curves with no NIST name.

def ec_curve_key_bits(oid: ObjectIdentifier | str) -> int | None: ...
# Returns the field size in bits, e.g. 256, 384, 521.

def extension_oid_name(oid: ObjectIdentifier | str) -> str: ...
# Returns a display name, e.g. "X509v3 Subject Alternative Name".
# Returns the dotted-decimal string for unknown OIDs.

Usage

import synta.oids as oids

# Equality comparison against a string
assert oids.EC_PUBLIC_KEY == "1.2.840.10045.2.1"

# Use as a dict key (hashable)
lookup = {oids.SHA256: "SHA-256", oids.SHA384: "SHA-384"}
name = lookup.get(cert.signature_algorithm_oid, "unknown")

# OID helper functions
print(oids.identify_signature_algorithm(cert.signature_algorithm_oid))
print(oids.identify_public_key_algorithm(cert.public_key_algorithm_oid))

See also DN Attribute OIDs and PKCS#9 OIDs.