CCF
Loading...
Searching...
No Matches
Functions
cose_rs_ffi.h File Reference
#include <cstddef>
#include <cstdint>

Go to the source code of this file.

Functions

CoseEvpKey * cose_key_from_der_private (const uint8_t *key_der_ptr, size_t key_der_len, uint8_t **err_ptr, size_t *err_len)
 
void cose_key_free (CoseEvpKey *key)
 Free a CoseEvpKey.
 
int cose_sign_ledger (const CoseEvpKey *key, const uint8_t *kid_ptr, size_t kid_len, int64_t iat, const uint8_t *issuer_ptr, size_t issuer_len, const uint8_t *subject_ptr, size_t subject_len, const uint8_t *txid_ptr, size_t txid_len, const uint8_t *payload_ptr, size_t payload_len, uint8_t **out_ptr, size_t *out_len, uint8_t **err_ptr, size_t *err_len)
 
int cose_sign_endorsement (const CoseEvpKey *key, int64_t iat, const uint8_t *epoch_begin_ptr, size_t epoch_begin_len, const uint8_t *epoch_end_ptr, size_t epoch_end_len, const uint8_t *prev_root_ptr, size_t prev_root_len, const uint8_t *payload_ptr, size_t payload_len, uint8_t **out_ptr, size_t *out_len, uint8_t **err_ptr, size_t *err_len)
 
CoseEvpKey * cose_key_from_der_public (const uint8_t *key_der_ptr, size_t key_der_len, uint8_t **err_ptr, size_t *err_len)
 
CoseEvpKey * cose_key_from_pem_public (const uint8_t *pem_ptr, size_t pem_len, uint8_t **err_ptr, size_t *err_len)
 
CoseEvpKey * cose_key_from_pem_cert (const uint8_t *pem_ptr, size_t pem_len, uint8_t **err_ptr, size_t *err_len)
 
CoseEvpKey * cose_key_from_der_cert (const uint8_t *der_ptr, size_t der_len, uint8_t **err_ptr, size_t *err_len)
 
int cose_verify1 (const CoseEvpKey *key, int64_t alg, const uint8_t *phdr_cbor_ptr, size_t phdr_cbor_len, const uint8_t *payload_ptr, size_t payload_len, const uint8_t *sig_ptr, size_t sig_len, uint8_t **err_ptr, size_t *err_len)
 
void cose_free (uint8_t *ptr, size_t len)
 Free a byte buffer or error string allocated by any cose_* call.
 

Function Documentation

◆ cose_free()

void cose_free ( uint8_t *  ptr,
size_t  len 
)

Free a byte buffer or error string allocated by any cose_* call.

◆ cose_key_free()

void cose_key_free ( CoseEvpKey *  key)

Free a CoseEvpKey.

◆ cose_key_from_der_cert()

CoseEvpKey * cose_key_from_der_cert ( const uint8_t *  der_ptr,
size_t  der_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Extract the public key from a DER-encoded X.509 certificate. Returns an opaque pointer, or NULL on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.

◆ cose_key_from_der_private()

CoseEvpKey * cose_key_from_der_private ( const uint8_t *  key_der_ptr,
size_t  key_der_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Create a signing key from DER-encoded private key bytes. Returns an opaque pointer, or NULL on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.

◆ cose_key_from_der_public()

CoseEvpKey * cose_key_from_der_public ( const uint8_t *  key_der_ptr,
size_t  key_der_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Create a verification key from DER-encoded public key bytes. Returns an opaque pointer, or NULL on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.

◆ cose_key_from_pem_cert()

CoseEvpKey * cose_key_from_pem_cert ( const uint8_t *  pem_ptr,
size_t  pem_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Extract the public key from a PEM-encoded X.509 certificate. Returns an opaque pointer, or NULL on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.

◆ cose_key_from_pem_public()

CoseEvpKey * cose_key_from_pem_public ( const uint8_t *  pem_ptr,
size_t  pem_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Create a verification key from PEM-encoded public key bytes. Returns an opaque pointer, or NULL on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.

◆ cose_sign_endorsement()

int cose_sign_endorsement ( const CoseEvpKey *  key,
int64_t  iat,
const uint8_t *  epoch_begin_ptr,
size_t  epoch_begin_len,
const uint8_t *  epoch_end_ptr,
size_t  epoch_end_len,
const uint8_t *  prev_root_ptr,
size_t  prev_root_len,
const uint8_t *  payload_ptr,
size_t  payload_len,
uint8_t **  out_ptr,
size_t *  out_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Sign a CCF identity endorsement (COSE_Sign1, embedded payload). epoch_end and prev_root may be NULL/0 if not applicable. Returns 0 on success, non-zero on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.

◆ cose_sign_ledger()

int cose_sign_ledger ( const CoseEvpKey *  key,
const uint8_t *  kid_ptr,
size_t  kid_len,
int64_t  iat,
const uint8_t *  issuer_ptr,
size_t  issuer_len,
const uint8_t *  subject_ptr,
size_t  subject_len,
const uint8_t *  txid_ptr,
size_t  txid_len,
const uint8_t *  payload_ptr,
size_t  payload_len,
uint8_t **  out_ptr,
size_t *  out_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Sign a CCF ledger signature using a pre-created key handle. Returns 0 on success, non-zero on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.

◆ cose_verify1()

int cose_verify1 ( const CoseEvpKey *  key,
int64_t  alg,
const uint8_t *  phdr_cbor_ptr,
size_t  phdr_cbor_len,
const uint8_t *  payload_ptr,
size_t  payload_len,
const uint8_t *  sig_ptr,
size_t  sig_len,
uint8_t **  err_ptr,
size_t *  err_len 
)

Verify a COSE_Sign1 using a pre-created key handle. alg: COSE algorithm integer (e.g. -7 for ES256). Returns 0 on successful verification, non-zero on failure. On failure, if err_ptr/err_len are non-null, an error message is written there.