api

x509_crt.ch

Declarations in x509_crt.ch

1 declarationstls

Declarations

Public only
tls#
Publicnamespace
namespace tls
============================================================================
X509Cert#
Publicstruct
struct X509Cert { var raw_pem : *u8 var raw_pem_len : size_t var version : u32 var serial : *u8 var serial_len : size_t var sig_oid : *u8 var sig_oid_len : size_t var sig_md : u8 var sig_pk : u8 var issuer_raw : *u8 var issuer_raw_len : size_t var issuer : string var subject_raw : *u8 var subject_raw_len : size_t var subject : string var valid_from : u8[15] var valid_to : u8[15] var pk_type : u8 var pk_bitlen : u16 var pk_raw : *u8 var pk_raw_len : size_t var sig : *u8 var sig_len : size_t var sig_alg : *u8 var sig_alg_len : size_t var ext_key_usage : u32 var ext_is_ca : bool var ext_max_pathlen : i32 var san_count : u16 var san_entries : *u8 var tbs_der : *u8 var tbs_der_len : size_t var next : *X509Cert var prev : *X509Cert var flags : u32 }
─── X.509 Certificate Structure ────────────────────────────────────────
constructor#
PublicfunctionConstructor
func constructor() : X509Cert
destruct#
Publicfunction
func destruct(self : &X509Cert) : void
cert_free#
Publicfunction
func cert_free(crt : *X509Cert) : void
cert_chain_free#
Publicfunction
func cert_chain_free(head : *X509Cert) : void
Free an entire certificate chain, deallocating every node's malloc'd
x509_cert_init#
Publicfunction
func x509_cert_init(crt : *X509Cert) : void
Initialize an X509 certificate
cert_get_cn#
Publicfunction
func cert_get_cn(crt : *X509Cert, out : *string) : void
Get CN from subject
asn1_get_tag#
function
func asn1_get_tag(data : *u8, data_len : size_t, pos : *size_t, tag : *u8, length : *size_t) : int
============================================================================
oid_matches#
function
func oid_matches(data : *u8, oid_len : size_t, ref : *u8, ref_len : size_t) : bool
Compare an OID at data+pos of oid_len bytes against reference bytes
asn1_read_string#
function
func asn1_read_string(data : *u8, data_len : size_t, pos : *size_t, out : *string) : int
Parse a printable/IA5/UTF8 string from ASN.1 into a Chemical string
asn1_read_time#
function
func asn1_read_time(data : *u8, data_len : size_t, pos : *size_t, out : *u8, out_max : size_t) : int
Parse ASN.1 time (UTCTime or GeneralizedTime)
asn1_read_integer#
function
func asn1_read_integer(data : *u8, data_len : size_t, pos : *size_t, out : **u8, out_len : *size_t) : int
Parse an ASN.1 integer
get_oid_short_name#
function
func get_oid_short_name(oid_data : *u8, oid_len : size_t) : string
Common attribute OIDs (from X.500 / RFC 5280)
parse_attribute#
function
func parse_attribute(data : *u8, data_len : size_t, pos : *size_t, out : *string) : int
Parse a single AttributeTypeAndValue: SEQUENCE { OID, value }
parse_rdn#
function
func parse_rdn(data : *u8, data_len : size_t, pos : *size_t, out : *string) : int
Parse a Relative Distinguished Name (SET of AttributeTypeAndValue)
parse_distinguished_name#
function
func parse_distinguished_name(data : *u8, data_len : size_t, pos : *size_t, out : *string, raw_out : **u8, raw_len_out : *size_t) : int
Parse the full Distinguished Name (SEQUENCE of RDN)
parse_cert_der#
Publicfunction
func parse_cert_der(crt : *X509Cert, der_data : *u8, der_len : size_t) : int
============================================================================
parse_cert_pem#
Publicfunction
func parse_cert_pem(crt : *X509Cert, pem_data : *u8, pem_len : size_t) : int
============================================================================