Loading...
Searching...
No Matches
ctap_crypto.h File Reference

FIDO2 CTAP crypto helper defines, structures and function declarations. More...

Detailed Description

FIDO2 CTAP crypto helper defines, structures and function declarations.

Author
Nils Ollrogge nils..nosp@m.ollr.nosp@m.ogge@.nosp@m.fu-b.nosp@m.erlin.nosp@m..de

Definition in file ctap_crypto.h.

#include <stdint.h>
#include "hashes/sha256.h"
+ Include dependency graph for ctap_crypto.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ctap_crypto_pub_key_t
 Elliptic curve public key. More...
 
struct  ctap_crypto_key_agreement_key_t
 Key agreement key. More...
 

Macros

#define CTAP_CRYPTO_KEY_SIZE   32
 Size in bytes of cryptographic keys used.
 
#define CTAP_CRYPTO_ES256_DER_MAX_SIZE   72
 Max size of ES256 signature in ASN.1 DER format.
 

Functions

int fido2_ctap_crypto_init (void)
 Initialize crypto helper.
 
int fido2_ctap_crypto_prng (uint8_t *buf, size_t len)
 Wrapper function for random_bytes.
 
int fido2_ctap_crypto_sha256_init (sha256_context_t *ctx)
 Wrapper function for sha256_init.
 
int fido2_ctap_crypto_sha256_update (sha256_context_t *ctx, const void *data, size_t len)
 Wrapper function for sha256_update.
 
int fido2_ctap_crypto_sha256_final (sha256_context_t *ctx, void *digest)
 Wrapper for sha256_final.
 
int fido2_ctap_crypto_sha256 (const void *data, size_t len, void *digest)
 Wrapper function for sha256.
 
int fido2_ctap_crypto_hmac_sha256_init (hmac_context_t *ctx, const void *key, size_t key_length)
 Wrapper function for hmac_sha256_init.
 
int fido2_ctap_crypto_hmac_sha256_update (hmac_context_t *ctx, const void *data, size_t len)
 Wrapper function for hmac_sha256_update.
 
int fido2_ctap_crypto_hmac_sha256_final (hmac_context_t *ctx, void *digest)
 Wrapper function for hmac_sha256_final.
 
int 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.
 
int fido2_ctap_crypto_gen_keypair (ctap_crypto_pub_key_t *pub_key, uint8_t *priv_key, size_t len)
 Generate cryptographic key pair.
 
int 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.
 
int 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.
 
int 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.
 
int 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.
 
int 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.
 
int 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.