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 ────────────────────────────────────────
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
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)