37#define CTAP_CRYPTO_KEY_SIZE 32 
   42#define CTAP_CRYPTO_ES256_DER_MAX_SIZE 72 
  175                                  size_t key_length, 
const void *data, 
size_t len,
 
  216                              size_t *sig_len, 
const uint8_t *key, 
size_t key_len);
 
  231                              size_t in_len, 
const uint8_t * key, 
size_t key_len);
 
  246                              size_t in_len, 
const uint8_t * key, 
size_t key_len);
 
  267                                  const uint8_t *in, 
size_t in_len,
 
  268                                  uint8_t *auth_data, 
size_t auth_data_len,
 
  269                                  uint8_t mac_len, uint8_t length_encoding,
 
  270                                  const uint8_t *nonce, 
size_t nonce_len,
 
  271                                  const uint8_t *key, 
size_t key_len);
 
  292                                  const uint8_t *in, 
size_t in_len,
 
  293                                  uint8_t *auth_data, 
size_t auth_data_len,
 
  294                                  uint8_t mac_len, uint8_t length_encoding,
 
  295                                  const uint8_t *nonce, 
size_t nonce_len,
 
  296                                  const uint8_t *key, 
size_t key_len);
 
Public FIDO2 CTAP defines, structures and function declarations.
 
ctap_status_code_t fido2_ctap_crypto_prng(uint8_t *buf, size_t len)
Wrapper function for random_bytes.
 
ctap_status_code_t fido2_ctap_crypto_init(void)
Initialize crypto helper.
 
ctap_status_code_t fido2_ctap_crypto_hmac_sha256_init(hmac_context_t *ctx, const void *key, size_t key_length)
Wrapper function for hmac_sha256_init.
 
ctap_status_code_t fido2_ctap_crypto_sha256_update(sha256_context_t *ctx, const void *data, size_t len)
Wrapper function for sha256_update.
 
ctap_status_code_t fido2_ctap_crypto_hmac_sha256_final(hmac_context_t *ctx, void *digest)
Wrapper function for hmac_sha256_final.
 
ctap_status_code_t fido2_ctap_crypto_aes_ccm_enc(uint8_t *out, size_t out_len, const uint8_t *in, size_t in_len, uint8_t *auth_data, size_t auth_data_len, uint8_t mac_len, uint8_t length_encoding, const uint8_t *nonce, size_t nonce_len, const uint8_t *key, size_t key_len)
Encrypt data using AES-128-CCM.
 
ctap_status_code_t fido2_ctap_crypto_sha256(const void *data, size_t len, void *digest)
Wrapper function for sha256.
 
ctap_status_code_t fido2_ctap_crypto_gen_keypair(ctap_crypto_pub_key_t *pub_key, uint8_t *priv_key, size_t len)
Generate cryptographic key pair.
 
ctap_status_code_t fido2_ctap_crypto_aes_enc(uint8_t *out, size_t *out_len, uint8_t *in, size_t in_len, const uint8_t *key, size_t key_len)
Encrypt data using AES-256-CBC.
 
ctap_status_code_t fido2_ctap_crypto_hmac_sha256(const void *key, size_t key_length, const void *data, size_t len, void *digest)
Wrapper function for hmac_sha256.
 
#define CTAP_CRYPTO_KEY_SIZE
Size in bytes of cryptographic keys used.
 
ctap_status_code_t fido2_ctap_crypto_aes_dec(uint8_t *out, size_t *out_len, uint8_t *in, size_t in_len, const uint8_t *key, size_t key_len)
Decrypt data using AES-256-CBC.
 
ctap_status_code_t fido2_ctap_crypto_sha256_final(sha256_context_t *ctx, void *digest)
Wrapper for sha256_final.
 
ctap_status_code_t fido2_ctap_crypto_aes_ccm_dec(uint8_t *out, size_t out_len, const uint8_t *in, size_t in_len, uint8_t *auth_data, size_t auth_data_len, uint8_t mac_len, uint8_t length_encoding, const uint8_t *nonce, size_t nonce_len, const uint8_t *key, size_t key_len)
Encrypt data using AES-128-CCM.
 
ctap_status_code_t fido2_ctap_crypto_hmac_sha256_update(hmac_context_t *ctx, const void *data, size_t len)
Wrapper function for hmac_sha256_update.
 
ctap_status_code_t fido2_ctap_crypto_ecdh(uint8_t *out, size_t len, ctap_crypto_pub_key_t *pub_key, uint8_t *priv_key, size_t key_len)
Elliptic-curve Diffie-Hellmann.
 
ctap_status_code_t fido2_ctap_crypto_get_sig(uint8_t *hash, size_t hash_len, uint8_t *sig, size_t *sig_len, const uint8_t *key, size_t key_len)
Create cryptographic signature.
 
ctap_status_code_t fido2_ctap_crypto_sha256_init(sha256_context_t *ctx)
Wrapper function for sha256_init.
 
ctap_status_code_t
CTAP status codes.
 
sha2xx_context_t sha256_context_t
Context for cipher operations based on sha256.
 
Header definitions for the SHA256 hash function.
 
ctap_crypto_pub_key_t pub
public key
 
uint8_t priv[CTAP_CRYPTO_KEY_SIZE]
private key
 
Elliptic curve public key.
 
uint8_t y[CTAP_CRYPTO_KEY_SIZE]
y coordinate of curve point
 
uint8_t x[CTAP_CRYPTO_KEY_SIZE]
x coordinate of curve point
 
Context for HMAC operations based on sha256.