Internal FIDO2 CTAP defines, structures and function declarations. More...
Internal FIDO2 CTAP defines, structures and function declarations.
Definition in file ctap.h.
#include <stdint.h>#include "mutex.h"#include "cbor.h"#include "assert.h"#include "crypto/modes/ccm.h"#include "timex.h"#include "board.h"#include "fido2/ctap.h"#include "fido2/ctap/ctap_crypto.h"
Include dependency graph for ctap.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | ctap_config_t |
| CTAP authenticator config struct. More... | |
| struct | ctap_state_t |
| CTAP state struct. More... | |
| struct | ctap_options_t |
| CTAP options struct. More... | |
| struct | ctap_user_ent_t |
| CTAP user entity struct. More... | |
| struct | ctap_rp_ent_t |
| CTAP relying party entity struct. More... | |
| struct | ctap_public_key_cose_t |
| CTAP cose key struct. More... | |
| struct | ctap_cred_desc |
| CTAP credential description struct. More... | |
| struct | ctap_resident_key |
| CTAP resident key struct. More... | |
| struct | ctap_cred_id_t |
| CTAP credential ID. More... | |
| struct | ctap_cred_desc_alt |
| CTAP credential description alternative struct. More... | |
| struct | ctap_make_credential_req_t |
| CTAP make credential request struct. More... | |
| struct | ctap_get_assertion_req_t |
| CTAP get assertion request struct. More... | |
| struct | ctap_client_pin_req_t |
| CTAP client pin request struct. More... | |
| struct | ctap_attested_cred_data_header_t |
| CTAP attested credential data header struct. More... | |
| struct | ctap_attested_cred_data_t |
| CTAP attested credential data struct. More... | |
| struct | ctap_auth_data_header_t |
| CTAP authenticator data header struct. More... | |
| struct | ctap_auth_data_t |
| CTAP authenticator data struct. More... | |
| struct | ctap_info_t |
| CTAP info struct. More... | |
Macros | |
| #define | CTAP_PIN_AUTH_SZ 16 |
| Size of pin auth. More... | |
| #define | CTAP_STACKSIZE 15000 |
| CTAP thread stack size. | |
| #define | CTAP_UP_BUTTON 0 |
| CTAP user presence button. | |
| #define | CONFIG_FIDO2_CTAP_DISABLE_UP 1 |
| Disable user presence test configuration. | |
| #define | CTAP_UP_BUTTON_MODE GPIO_IN_PU |
| CTAP user presence button mode. | |
| #define | CTAP_UP_BUTTON_FLANK GPIO_FALLING |
| CTAP user presence button flank. | |
| #define | CONFIG_FIDO2_CTAP_DISABLE_LED 0 |
| Disable user presence test configuration. More... | |
| #define | CTAP_RP_MAX_NAME_SIZE 32 |
| Max size of relying party name. | |
| #define | CTAP_USER_MAX_NAME_SIZE 64 + 1 |
| Max size of username including null character. | |
| #define | CTAP_USER_ID_MAX_SIZE 64 |
| Max size of user id. | |
| #define | CTAP_DOMAIN_NAME_MAX_SIZE 253 + 1 |
| Max size of a domain name including null character. | |
| #define | CTAP_ICON_MAX_SIZE 128 + 1 |
| Max size of icon including null character. | |
| #define | CTAP_PIN_MIN_SIZE 4 |
| PIN min size. | |
| #define | CTAP_PIN_ENC_MIN_SIZE 64 |
| Encrypted newPin min size. More... | |
| #define | CTAP_PIN_ENC_MAX_SIZE 256 |
| Encrypted newPin max size. | |
| #define | CTAP_PIN_MAX_SIZE 64 |
| PIN max size. | |
| #define | CTAP_PIN_MAX_ATTS 8 |
| Max total consecutive incorrect PIN attempts. | |
| #define | CTAP_PIN_MAX_ATTS_BOOT 3 |
| Max consecutive incorrect PIN attempts for 1 boot cycle. | |
| #define | CTAP_PIN_PROT_VER 1 |
| PIN protocol version. | |
| #define | CTAP_AMT_SUP_PIN_VER 1 |
| Total number of supported PIN protocol versions. | |
| #define | CTAP_PIN_TOKEN_SZ 16 |
| Size of pin token. More... | |
| #define | CTAP_CRED_KEY_LEN 16 |
| Size of key used to encrypt credential. More... | |
| #define | CTAP_AES_CCM_L 2 |
| AES_CCM_L parameter. More... | |
| #define | CTAP_AES_CCM_NONCE_SIZE (15 - CTAP_AES_CCM_L) |
| AES CCM nonce size. | |
| #define | CTAP_CREDENTIAL_ID_ENC_SIZE |
| Total size of AES CCM credential id. More... | |
| #define | CTAP_UP_TIMEOUT (15 * MS_PER_SEC) |
| Timeout for user presence test. | |
| #define | CTAP_GET_NEXT_ASSERTION_TIMEOUT (30 * MS_PER_SEC) |
| Max time between call to get_assertion or get_next_assertion until error is returned. | |
| #define | CTAP_AAGUID "9c295865fa2c36b705a42320af9c8f16" |
| 128 bit identifier of authenticator | |
| #define | CTAP_AAGUID_SIZE 16 |
| CTAP size of authenticator AAGUID in bytes. | |
| #define | CTAP_COSE_ALG_ES256 -7 |
| CTAP COSE Algorithms registry identifier for ES256. | |
| #define | CTAP_COSE_ALG_ECDH_ES_HKDF_256 -25 |
| CTAP COSE Algorithms registry identifier for ECDH ES HKDF 256. | |
| #define | CTAP_CREDENTIAL_ID_SIZE 16U |
| CTAP size of credential id. | |
| #define | CTAP_INITIALIZED_MARKER 0x4e |
| CTAP state initialized marker. More... | |
| #define | CTAP_MAX_EXCLUDE_LIST_SIZE 0x14 |
| Max size of allow list. | |
Typedefs | |
| typedef struct ctap_cred_desc | ctap_cred_desc_t |
| CTAP cred struct forward declaration. | |
| typedef struct ctap_cred_desc_alt | ctap_cred_desc_alt_t |
| Alternative CTAP cred struct forward declaration. | |
| typedef struct ctap_resident_key | ctap_resident_key_t |
| CTAP resident key credential forward declaration. | |
Functions | |
| int | fido2_ctap_get_sig (const uint8_t *auth_data, size_t auth_data_len, const uint8_t *client_data_hash, const ctap_resident_key_t *rk, uint8_t *sig, size_t *sig_len) |
| Create signature from authenticator data. More... | |
| bool | fido2_ctap_cred_params_supported (uint8_t cred_type, int32_t alg_type) |
| Check if requested algorithm is supported. More... | |
| int | fido2_ctap_encrypt_rk (ctap_resident_key_t *rk, uint8_t *nonce, size_t nonce_len, ctap_cred_id_t *id) |
| Encrypt resident key with AES CCM. More... | |
| bool | fido2_ctap_pin_is_set (void) |
| Check if PIN has been set on authenticator. More... | |
| ctap_state_t * | fido2_ctap_get_state (void) |
| Get a pointer to the authenticator state. More... | |
CTAP authenticator data option flags | |
| #define | CTAP_AUTH_DATA_FLAG_UP (1 << 0) |
| user present | |
| #define | CTAP_AUTH_DATA_FLAG_UV (1 << 2) |
| user verified | |
| #define | CTAP_AUTH_DATA_FLAG_AT (1 << 6) |
| attested credential data included | |
| #define | CTAP_AUTH_DATA_FLAG_ED (1 << 7) |
| extension data included | |
CTAP version flags | |
| #define | CTAP_VERSION_FLAG_FIDO_PRE 0x01 |
| FIDO 2.1 flag. | |
| #define | CTAP_VERSION_FLAG_FIDO 0x02 |
| FIDO 2 flag. | |
| #define | CTAP_VERSION_FLAG_U2F_V2 0x04 |
| U2F V2 flag. | |
CTAP get info response options map CBOR key values | |
All options are in the form key-value pairs with string IDs and boolean values | |
| #define | CTAP_GET_INFO_RESP_OPTIONS_ID_PLAT "plat" |
| platform device string | |
| #define | CTAP_GET_INFO_RESP_OPTIONS_ID_RK "rk" |
| resident key string | |
| #define | CTAP_GET_INFO_RESP_OPTIONS_ID_CLIENT_PIN "clientPin" |
| client PIN string | |
| #define | CTAP_GET_INFO_RESP_OPTIONS_ID_UP "up" |
| user presence string | |
| #define | CTAP_GET_INFO_RESP_OPTIONS_ID_UV "uv" |
| user verification string | |
CTAP get info options flags | |
| #define | CTAP_INFO_OPTIONS_FLAG_PLAT (1 << 0) |
| platform device flag | |
| #define | CTAP_INFO_OPTIONS_FLAG_RK (1 << 1) |
| resident key flag | |
| #define | CTAP_INFO_OPTIONS_FLAG_CLIENT_PIN (1 << 2) |
| clientPIN flag | |
| #define | CTAP_INFO_OPTIONS_FLAG_UP (1 << 3) |
| user presence flag | |
| #define | CTAP_INFO_OPTIONS_FLAG_UV (1 << 4) |
| user verification flag | |
CTAP credential types | |
| #define | CTAP_PUB_KEY_CRED_PUB_KEY 0x01 |
| public key credential type | |
| #define | CTAP_PUB_KEY_CRED_UNKNOWN 0x02 |
| unknown credential type | |
CTAP COSE key CBOR map key values | |
| #define | CTAP_COSE_KEY_LABEL_KTY 1 |
| key type identifier | |
| #define | CTAP_COSE_KEY_LABEL_ALG 3 |
| algorithm identifier | |
| #define | CTAP_COSE_KEY_LABEL_CRV -1 |
| elliptic curve identifier | |
| #define | CTAP_COSE_KEY_LABEL_X -2 |
| x coordinate | |
| #define | CTAP_COSE_KEY_LABEL_Y -3 |
| y coordinate | |
| #define | CTAP_COSE_KEY_KTY_EC2 2 |
| 2 coordinate elliptic curve key identifier | |
| #define | CTAP_COSE_KEY_CRV_P256 1 |
| secp256r1 elliptic curve key identifier | |
| enum | ctap_pin_subcommand_t { CTAP_PIN_GET_RETRIES = 0x01 , CTAP_PIN_GET_KEY_AGREEMENT = 0x02 , CTAP_PIN_SET_PIN = 0x03 , CTAP_PIN_CHANGE_PIN = 0x04 , CTAP_PIN_GET_PIN_TOKEN = 0x05 } |
| CTAP Client PIN request subCommand CBOR key values. More... | |