33#define CTAP_CBOR_INFO_MAP_SZ 0x06 
   38#define CTAP_CBOR_ATTESTATION_MAP_SZ 0x03 
   43#define CTAP_CBOR_ATTESTATION_STMT_MAP_SZ 0x02 
   48#define CTAP_CBOR_CRED_DESC_MAP_SZ 0x02 
   53#define CTAP_CBOR_PIN_TOKEN_MAP_SZ 0x01 
   58#define CTAP_CBOR_USER_ENTITY_MAP_SZ 0x01 
   63#define CTAP_CBOR_COSE_KEY_MAP_SZ 0x05 
   68#define CTAP_CBOR_KEY_AGREEMENT_MAP_SZ 0x01 
   73#define CTAP_CBOR_RETRIES_MAP_SZ 0x01 
   78#define CTAP_CBOR_ATT_STMT_AUTH_DATA_SZ 0x134 
   83#define CTAP_CBOR_MAP_MAX_KEY_LEN 0x10 
   88#define CTAP_CBOR_MAX_CREDENTIAL_TYPE_LEN 0x10 
   94#define CTAP_CBOR_STR_PACKED "packed"            
   95#define CTAP_CBOR_STR_ALG "alg"                  
   96#define CTAP_CBOR_STR_SIG "sig"                  
   97#define CTAP_CBOR_STR_ID "id"                    
   98#define CTAP_CBOR_STR_TYPE "type"                
   99#define CTAP_CBOR_STR_PUBLIC_KEY "public-key"    
  100#define CTAP_CBOR_STR_USER_VERIFIED "uv"         
  101#define CTAP_CBOR_STR_USER_PRESENT "up"          
  102#define CTAP_CBOR_STR_RESIDENT_KEY "rk"          
  103#define CTAP_CBOR_STR_NAME "name"                
  104#define CTAP_CBOR_STR_ICON "icon"                
  105#define CTAP_CBOR_DISPLAY_NAME "displayName"     
  113#define CTAP_CBOR_CP_RESP_KEY_AGREEMENT  0x01    
  114#define CTAP_CBOR_CP_PIN_TOKEN_RESP      0x02    
  115#define CTAP_CBOR_CP_RETRIES_RESP        0x03    
  123#define CTAP_CBOR_MC_REQ_CLIENT_DATA_HASH    0x01    
  124#define CTAP_CBOR_MC_REQ_RP                  0x02    
  125#define CTAP_CBOR_MC_REQ_USER                0x03    
  126#define CTAP_CBOR_MC_REQ_PUB_KEY_CRED_PARAMS 0x04    
  127#define CTAP_CBOR_MC_REQ_EXCLUDE_LIST        0x05    
  128#define CTAP_CBOR_MC_REQ_EXTENSIONS          0x06    
  129#define CTAP_CBOR_MC_REQ_OPTIONS             0x07    
  130#define CTAP_CBOR_MC_REQ_PIN_AUTH            0x08    
  131#define CTAP_CBOR_MC_REQ_PIN_PROTOCOL        0x09    
  139#define CTAP_CBOR_GET_INFO_RESP_VERSIONS         0x01    
  140#define CTAP_CBOR_GET_INFO_RESP_EXTENSIONS       0x02    
  141#define CTAP_CBOR_GET_INFO_RESP_AAGUID           0x03    
  142#define CTAP_CBOR_GET_INFO_RESP_OPTIONS          0x04    
  143#define CTAP_CBOR_GET_INFO_RESP_MAX_MSG_SIZE     0x05    
  144#define CTAP_CBOR_GET_INFO_RESP_PIN_PROTOCOLS    0x06    
  151#define CTAP_CBOR_VERSION_STRING_FIDO_PRE "FIDO_2_1_PRE"     
  152#define CTAP_CBOR_VERSION_STRING_FIDO     "FIDO_2_0"         
  153#define CTAP_CBOR_VERSION_STRING_U2F_V2   "U2F_V2"           
  161#define CTAP_CBOR_MC_RESP_FMT                0x01    
  162#define CTAP_CBOR_MC_RESP_AUTH_DATA          0x02    
  163#define CTAP_CBOR_MC_RESP_ATT_STMT           0x03    
  171#define CTAP_CBOR_GA_REQ_RP_ID               0x01    
  172#define CTAP_CBOR_GA_REQ_CLIENT_DATA_HASH    0x02    
  173#define CTAP_CBOR_GA_REQ_ALLOW_LIST          0x03    
  174#define CTAP_CBOR_GA_REQ_EXTENSIONS          0x04    
  175#define CTAP_CBOR_GA_REQ_OPTIONS             0x05    
  176#define CTAP_CBOR_GA_REQ_PIN_AUTH            0x06    
  177#define CTAP_CBOR_GA_REQ_PIN_PROTOCOL        0x07    
  185#define CTAP_CBOR_GA_RESP_CREDENTIAL             0x01    
  186#define CTAP_CBOR_GA_RESP_AUTH_DATA              0x02    
  187#define CTAP_CBOR_GA_RESP_SIGNATURE              0x03    
  188#define CTAP_CBOR_GA_RESP_USER                   0x04    
  189#define CTAP_CBOR_GA_RESP_NUMBER_OF_CREDENTIALS  0x05    
  197#define CTAP_CBOR_CP_REQ_PIN_PROTOCOL    0x01    
  198#define CTAP_CBOR_CP_REQ_SUB_COMMAND     0x02    
  199#define CTAP_CBOR_CP_REQ_KEY_AGREEMENT   0x03    
  200#define CTAP_CBOR_CP_REQ_PIN_AUTH        0x04    
  201#define CTAP_CBOR_CP_REQ_NEW_PIN_ENC     0x05    
  202#define CTAP_CBOR_CP_REQ_PIN_HASH_ENC    0x06    
  217                                              const uint8_t *req_raw, 
size_t len);
 
  231                                            const uint8_t *req_raw, 
size_t len);
 
  256                                         const uint8_t *req_raw, 
size_t len);
 
  269                                              const uint8_t *client_data_hash,
 
  285                                            const uint8_t *client_data_hash,
 
  287                                            uint8_t valid_cred_count);
 
Internal FIDO2 CTAP defines, structures and function declarations.
 
ctap_status_code_t fido2_ctap_cbor_encode_attestation_object(const ctap_auth_data_t *auth_data, const uint8_t *client_data_hash, ctap_resident_key_t *rk)
Encode attestation object.
 
ctap_status_code_t fido2_ctap_cbor_encode_assertion_object(const ctap_auth_data_header_t *auth_data, const uint8_t *client_data_hash, ctap_resident_key_t *rk, uint8_t valid_cred_count)
Encode assertion object.
 
ctap_status_code_t fido2_ctap_cbor_encode_info(const ctap_info_t *info)
Encode CBOR info map.
 
ctap_status_code_t fido2_ctap_cbor_parse_make_credential_req(ctap_make_credential_req_t *req, const uint8_t *req_raw, size_t len)
Parse MakeCredential method.
 
ctap_status_code_t fido2_ctap_cbor_encode_key_agreement(const ctap_public_key_cose_t *key)
Encode key agreement.
 
ctap_status_code_t fido2_ctap_cbor_encode_pin_token(uint8_t *token, size_t len)
Encode encrypted pin token.
 
ctap_status_code_t fido2_ctap_cbor_parse_client_pin_req(ctap_client_pin_req_t *req, const uint8_t *req_raw, size_t len)
Parse ClientPIN method.
 
size_t fido2_ctap_cbor_get_buffer_size(const uint8_t *buf)
Get size of CBOR encoded data.
 
ctap_status_code_t fido2_ctap_cbor_parse_get_assertion_req(ctap_get_assertion_req_t *req, const uint8_t *req_raw, size_t len)
Parse GetAssertion method.
 
ctap_status_code_t fido2_ctap_cbor_encode_retries(uint8_t tries_left)
Encode PIN tries left.
 
void fido2_ctap_cbor_init_encoder(uint8_t *buf, size_t len)
Initialize CBOR encoder.
 
struct ctap_resident_key ctap_resident_key_t
CTAP resident key credential forward declaration.
 
ctap_status_code_t
CTAP status codes.
 
CTAP authenticator data struct.
 
CTAP client pin request struct.
 
CTAP get assertion request struct.
 
CTAP make credential request struct.