openssl/openssl
Data models
Quick maps of the most-touched OpenSSL types and how they relate. These are not exhaustive class diagrams — just enough for a reader to navigate without paging through 80 KB headers.
Library context, providers, methods
classDiagram
class OSSL_LIB_CTX {
+Provider list
+Namemap
+Per-op Method stores
+Default property
+Per-context data slots
}
class OSSL_PROVIDER {
+name
+OSSL_DISPATCH from-provider
+activation refcount
}
class OSSL_NAMEMAP {
+bidirectional name<->id
}
class OSSL_METHOD_STORE {
+per (op, name, props) cache
}
class OSSL_ALGORITHM {
+names
+property def
+OSSL_DISPATCH
+description
}
OSSL_LIB_CTX *-- OSSL_PROVIDER
OSSL_LIB_CTX *-- OSSL_NAMEMAP
OSSL_LIB_CTX *-- OSSL_METHOD_STORE
OSSL_PROVIDER --> OSSL_ALGORITHM : exposesEVP
classDiagram
class EVP_MD {
+OSSL_DISPATCH
+size, block_size
+provider
}
class EVP_CIPHER {
+OSSL_DISPATCH
+iv_len, key_len, block_size, flags
}
class EVP_MD_CTX {
+EVP_MD*
+provider state
+PKEY_CTX (for sign)
}
class EVP_CIPHER_CTX {
+EVP_CIPHER*
+provider state
}
class EVP_PKEY {
+EVP_KEYMGMT*
+keydata
+legacy union (RSA*, EC_KEY*, ...)
}
class EVP_PKEY_CTX {
+EVP_PKEY*
+operation (SIGN, VERIFY, DERIVE, ENCAPSULATE, DECAPSULATE, ENCRYPT, DECRYPT, KEYGEN, PARAMGEN)
+per-op provider state
}
class EVP_KEYMGMT {
+OSSL_DISPATCH
}
class EVP_SIGNATURE
class EVP_KEYEXCH
class EVP_KEM
class EVP_ASYM_CIPHER
EVP_MD_CTX --> EVP_MD
EVP_CIPHER_CTX --> EVP_CIPHER
EVP_PKEY --> EVP_KEYMGMT
EVP_PKEY_CTX --> EVP_PKEY
EVP_PKEY_CTX --> EVP_SIGNATURE
EVP_PKEY_CTX --> EVP_KEYEXCH
EVP_PKEY_CTX --> EVP_KEM
EVP_PKEY_CTX --> EVP_ASYM_CIPHERTLS
classDiagram
class SSL_CTX {
+SSL_METHOD*
+cert chain, key
+ciphersuites
+cipherlist
+session cache
+verify settings
+extensions hooks
}
class SSL {
+SSL_CTX*
+state machine cursor
+rbio, wbio
+session
+derived keys
+OSSL_RECORD_METHOD*
+per-extension state
}
class SSL_METHOD {
+protocol version
+role (client/server)
+SSL_new, SSL_clear, ...
}
class SSL_SESSION {
+master secret / ticket
+ciphersuite
+peer cert chain
}
class SSL_CIPHER {
+IANA id
+name aliases
+ALG_kEX, ALG_aAUTH, ALG_ENC, ALG_MAC
+version mask
+strength bits
}
class OSSL_RECORD_METHOD {
+per-version record encrypt/decrypt
}
SSL_CTX --> SSL_METHOD
SSL --> SSL_CTX
SSL --> SSL_SESSION
SSL_CTX --> SSL_CIPHER
SSL --> OSSL_RECORD_METHODQUIC
classDiagram
class QUIC_DOMAIN {
+listeners
+reactor
}
class QUIC_LISTENER {
+UDP socket BIO
+port
}
class QUIC_PORT {
+DCID demuxer
}
class QUIC_CHANNEL {
+TLS state
+ackm
+txp
+stream map
+flow control
+loss detection
}
class QUIC_STREAM {
+stream id
+sstream / rstream buffers
}
class SSL {
+polymorphic kind: TLS-SSL / QUIC-CONN / QUIC-STREAM / QUIC-LISTENER / QUIC-DOMAIN
}
QUIC_DOMAIN o-- QUIC_LISTENER
QUIC_LISTENER --> QUIC_PORT
QUIC_PORT *-- QUIC_CHANNEL
QUIC_CHANNEL *-- QUIC_STREAM
SSL ..> QUIC_DOMAIN
SSL ..> QUIC_LISTENER
SSL ..> QUIC_CHANNEL
SSL ..> QUIC_STREAMX.509
classDiagram
class X509 {
+tbsCertificate
+signatureAlgorithm
+signatureValue
+cached EXFLAG_*
}
class X509_NAME {
+RDNs
+canonical encoding cache
}
class X509_EXTENSION {
+OID
+critical
+value (DER)
}
class X509_PUBKEY {
+AlgorithmIdentifier
+SubjectPublicKey
+cached EVP_PKEY
}
class X509_STORE {
+trust anchors
+CRLs
+X509_LOOKUP backends
+callbacks
}
class X509_STORE_CTX {
+leaf
+untrusted chain
+X509_VERIFY_PARAM
+verify callback
+error state
}
class X509_VERIFY_PARAM {
+flags
+depth
+purpose, trust
+host, ip, email
+policies
}
class X509_CRL {
+revoked entries
+signature
}
X509 o-- X509_NAME : subject, issuer
X509 o-- X509_EXTENSION
X509 o-- X509_PUBKEY
X509_STORE_CTX --> X509_STORE
X509_STORE_CTX --> X509_VERIFY_PARAM
X509_STORE o-- X509_CRLCMS
classDiagram
class CMS_ContentInfo {
+contentType (signed-data / enveloped-data / digested-data / encrypted-data / authenticated-enveloped-data / compressed-data)
+content (one-of below)
}
class CMS_SignedData {
+digest algorithms
+EncapsulatedContentInfo
+certificates
+CRLs
+SignerInfos
}
class CMS_EnvelopedData {
+RecipientInfos
+EncryptedContentInfo
+unprotected attributes
}
class CMS_RecipientInfo {
<<one-of>>
KeyTransRecipientInfo
KeyAgreeRecipientInfo
KEKRecipientInfo
PasswordRecipientInfo
OtherRecipientInfo
}
class CMS_SignerInfo {
+SignerIdentifier
+digestAlgorithm
+signedAttrs
+signatureAlgorithm
+signature
+unsignedAttrs
}
CMS_ContentInfo *-- CMS_SignedData
CMS_ContentInfo *-- CMS_EnvelopedData
CMS_SignedData *-- CMS_SignerInfo
CMS_EnvelopedData *-- CMS_RecipientInfoBIO
classDiagram
class BIO {
+BIO_METHOD*
+next_bio (chain link)
+flags, retry
+references
+callback
}
class BIO_METHOD {
+type id
+write_ex
+read_ex
+ctrl
+create / destroy
+callback_ctrl
}
BIO --> BIO_METHOD
BIO --> BIO : next_bioError stack
classDiagram
class ERR_STATE {
+ring buffer of ERR_STATE_DATA
+marks (for ERR_set_mark / ERR_pop_to_mark)
}
class ERR_STATE_DATA {
+library id
+reason
+file
+line
+function
+data string
+flags
}
ERR_STATE *-- ERR_STATE_DATAHeader map
| Public header | What's in it |
|---|---|
openssl/core.h |
OSSL_DISPATCH, OSSL_ALGORITHM, OSSL_PARAM, OSSL_provider_init signature, OSSL_FUNC_* ids. |
openssl/core_dispatch.h |
The OSSL_OP_* and OSSL_FUNC_* numeric constants. |
openssl/core_names.h (.in) |
Standard parameter / property keys. |
openssl/core_object.h |
Object types for store loaders. |
openssl/types.h |
Forward declarations for every public type (X509, EVP_PKEY, SSL, …). |
openssl/crypto.h (.in) |
OSSL_LIB_CTX, OPENSSL_init_crypto, OPENSSL_malloc, CRYPTO_THREAD_*. |
openssl/evp.h |
The whole EVP API (cipher, digest, MAC, KDF, RAND, KEM, SIGNATURE, EXCHANGE, ASYM_CIPHER, KEYMGMT, PKEY). |
openssl/ssl.h (.in) |
SSL, SSL_CTX, SSL_METHOD, ciphersuite ids. |
openssl/quic.h |
QUIC method, listener, domain. |
openssl/x509.h |
X509, X509_NAME, X509_EXTENSION, X509_PUBKEY, X509_REQ, X509_CRL. |
openssl/x509v3.h (.in) |
Per-extension types and X509V3_EXT_METHOD. |
openssl/cms.h |
CMS_ContentInfo and operations. |
openssl/cmp.h, crmf.h |
CMP / CRMF. |
openssl/store.h |
OSSL_STORE_*. |
openssl/encoder.h, decoder.h |
OSSL_ENCODER, OSSL_DECODER. |
openssl/bio.h (.in) |
BIO API. |
openssl/err.h (.in) |
Error stack and ERR_LIB_* ids. |
openssl/rand.h |
RAND_*. |
openssl/asn1.h (.in) and asn1t.h |
ASN.1 type system + template DSL. |
openssl/obj_mac.h |
Generated NID enum. |
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.