keyobject.h

Provides API for importing PKCS, SEC1 keyfiles. \par License: GNU GPL v3.0.

Author

Anthony Cagliano

Defines

TLS_PRIVKEY_RSA_FIELDS
TLS_PRIVKEY_EC_FIELDS
TLS_PUBKEY_RSA_FIELDS
TLS_PUBKEY_EC_FIELDS
TLS_CERTIFICATE_FIELDS

Enums

enum tls_key_type_flags

Values:

enumerator TLS_KEY_PUBLIC

Indicates the tls_keyobject describes a public key.

enumerator TLS_KEY_PRIVATE

Indicates the tls_keyobject describes a private key.

enumerator TLS_KEY_RSA

Indicates the tls_keyobject describes an RSA key.

enumerator TLS_KEY_ECC

Indicates the tls_keyobject describes an EC key.

enumerator TLS_CERTIFICATE

Indicates the tls_keyobject describes an X.509 certificate.

enum tls_objectids

Values:

enumerator TLS_OID_RSA_ENCRYPTION

RSAEncryption => 1.2.840.113549.1.1.1.

enumerator TLS_OID_EC_PUBLICKEY

id-ecPublicKey => 1.2.840.10045.2.1

enumerator TLS_OID_EC_PRIVATEKEY

id-ecPrivateKey => 1.3.132.1.8

enumerator TLS_OID_AES_128_GCM

AES-128-GCM => 2.16.840.1.101.3.4.1.2.

enumerator TLS_OID_AES_128_CBC

AES-128-CBC => 2.16.840.1.101.3.4.1.2.

enumerator TLS_OID_AES_256_GCM

AES-256-GCM => 2.16.840.1.101.3.4.2.1.

enumerator TLS_OID_AES_256_CBC

AES-256-CBC => 2.16.840.1.101.3.4.1.42.

enumerator TLS_OID_PBKDF2

PBKDF2 => 1.2.840.113549.1.5.12.

enumerator TLS_OID_PBES2

PBES2 => 1.2.840.113549.1.5.13.

enumerator TLS_OID_HMAC_SHA256

HMAC-SHA256 => 1.2.840.113549.2.9.

enumerator TLS_OID_SHA256_RSA_ENCRYPTION

sha256WithRSAEncryption => 1.2.840.113549.1.1.11

enumerator TLS_OID_SHA384_RSA_ENCRYPTION

sha384WithRSAEncryption => 1.2.840.113549.1.1.12

enumerator TLS_OID_SHA256_ECDSA

sha256WithECDSA => 1.2.840.10045.4.3.2

Functions

struct tls_keyobject *tls_keyobject_import_private(const char *pem_data, size_t size, const char *password)
struct tls_keyobject *tls_keyobject_import_public(const char *pem_data, size_t size)
struct tls_keyobject *tls_keyobject_import_certificate(const char *pem_data, size_t size)
bool tls_x509_has_required_ca_constraints(const uint8_t *cert_der, size_t cert_len)
void tls_keyobject_destroy(struct tls_keyobject *kf)

Variables

uint8_t tls_objectid_bytes[][10]

Array of bytearrays describing OBJECT IDENTIFIERS supported by this library.

struct tls_keyobject
#include <keyobject.h>

Defines a container for metadata for various key and certificate types supported by this library.

Public Members

size_t length
size_t type
struct tls_asn1_serialization fields[TLS_CERTIFICATE_FIELDS]
struct tls_asn1_serialization subj_signature_alg
struct tls_asn1_serialization issuer
struct tls_asn1_serialization valid_before
struct tls_asn1_serialization valid_after
struct tls_asn1_serialization subject
struct tls_asn1_serialization spki_raw

Raw DER bytes of SubjectPublicKeyInfo (for SPKI pinning)

struct tls_asn1_serialization ca_signature_alg
struct tls_asn1_serialization ca_signature
struct tls_asn1_serialization modulus
struct tls_asn1_serialization exponent
struct tls_keyobject field
union tls_keyobject rsa
struct tls_asn1_serialization ec_point
struct tls_keyobject ec
union tls_keyobject pubkey
struct tls_keyobject field
union tls_keyobject certificate

Defines fields for an X.509 certificate.

struct tls_asn1_serialization public_exponent
struct tls_asn1_serialization p
struct tls_asn1_serialization q
struct tls_asn1_serialization exp1
struct tls_asn1_serialization exp2
struct tls_asn1_serialization coeff
struct tls_keyobject field
union tls_keyobject rsa
struct tls_asn1_serialization privkey
struct tls_asn1_serialization curve_id
struct tls_asn1_serialization pubkey
struct tls_keyobject field
union tls_keyobject ec
union tls_keyobject privkey

Defines fields for a PKCS#1, PKCS#8, or SEC1 private key.

struct tls_keyobject field
union tls_keyobject rsa
struct tls_keyobject field
union tls_keyobject ec
union tls_keyobject pubkey

Defines fields for a PKCS#1, PKCS#8, or SEC1 public key.

union tls_keyobject meta
uint8_t data[]