diff --git a/src/fido/credential.c b/src/fido/credential.c index d471378..b68daa3 100644 --- a/src/fido/credential.c +++ b/src/fido/credential.c @@ -99,7 +99,7 @@ int credential_create(CborCharString *rpId, CborByteString *userId, CborCharStri if (ret != 0) { CBOR_ERROR(CTAP1_ERR_OTHER); } - memcpy(cred_id, "\xf1\xd0\x02\x00", 4); + memcpy(cred_id, CRED_PROTO, 4); memcpy(cred_id + 4, iv, 12); err: @@ -252,7 +252,7 @@ int credential_derive_hmac_key(const uint8_t *cred_id, size_t cred_id_len, uint8 const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA512); mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)"SLIP-0022", 9, outk); - mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)"\xf1\xd0\x02\x00", 4, outk); + mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)CRED_PROTO, 4, outk); mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)"hmac-secret", 11, outk); mbedtls_md_hmac(md_info, outk, 32, cred_id, cred_id_len, outk); return 0; @@ -266,7 +266,7 @@ int credential_derive_chacha_key(uint8_t *outk) { const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA512); mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)"SLIP-0022", 9, outk); - mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)"\xf1\xd0\x02\x00", 4, outk); + mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)CRED_PROTO, 4, outk); mbedtls_md_hmac(md_info, outk, 32, (uint8_t *)"Encryption key", 14, outk); return 0; } diff --git a/src/fido/credential.h b/src/fido/credential.h index b8ee396..95d5f97 100644 --- a/src/fido/credential.h +++ b/src/fido/credential.h @@ -53,6 +53,8 @@ typedef struct Credential #define CRED_PROT_UV_OPTIONAL_WITH_LIST 0x02 #define CRED_PROT_UV_REQUIRED 0x03 +#define CRED_PROTO "\xf1\xd0\x02\x01" + extern int credential_verify(uint8_t *cred_id, size_t cred_id_len, const uint8_t *rp_id_hash); extern int credential_create(CborCharString *rpId, CborByteString *userId, CborCharString *userName, CborCharString *userDisplayName, CredOptions *opts, CredExtensions *extensions, bool use_sign_count, int alg, int curve, uint8_t *cred_id, size_t *cred_id_len); extern void credential_free(Credential *cred);