From 9d79505c5a3915d7dac2106e73bee203a119ba37 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 7 Dec 2022 15:54:10 +0100 Subject: [PATCH] Embed credBlob onto credId. Signed-off-by: Pol Henarejos --- src/fido/credential.c | 5 +++++ src/fido/credential.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/fido/credential.c b/src/fido/credential.c index 9c36525..213ad80 100644 --- a/src/fido/credential.c +++ b/src/fido/credential.c @@ -60,6 +60,10 @@ int credential_create(CborCharString *rpId, CborByteString *userId, CborCharStri if (extensions->present == true) { CBOR_CHECK(cbor_encode_uint(&mapEncoder, 0x07)); CBOR_CHECK(cbor_encoder_create_map(&mapEncoder, &mapEncoder2, CborIndefiniteLength)); + if (extensions->credBlob.present == true && extensions->credBlob.len < MAX_CREDBLOB_LENGTH) { + CBOR_CHECK(cbor_encode_text_stringz(&mapEncoder2, "credBlob")); + CBOR_CHECK(cbor_encode_byte_string(&mapEncoder2, extensions->credBlob.data, extensions->credBlob.len)); + } if (extensions->credProtect != 0) { CBOR_CHECK(cbor_encode_text_stringz(&mapEncoder2, "credProtect")); CBOR_CHECK(cbor_encode_uint(&mapEncoder2, extensions->credProtect)); @@ -155,6 +159,7 @@ int credential_load(const uint8_t *cred_id, size_t cred_id_len, const uint8_t *r CBOR_FIELD_GET_KEY_TEXT(2); CBOR_FIELD_KEY_TEXT_VAL_BOOL(2, "hmac-secret", cred->extensions.hmac_secret); CBOR_FIELD_KEY_TEXT_VAL_UINT(2, "credProtect", cred->extensions.credProtect); + CBOR_FIELD_KEY_TEXT_VAL_BYTES(2, "credBlob", cred->extensions.credBlob); CBOR_ADVANCE(2); } CBOR_PARSE_MAP_END(_f1, 2); diff --git a/src/fido/credential.h b/src/fido/credential.h index 87d9cb1..50fc478 100644 --- a/src/fido/credential.h +++ b/src/fido/credential.h @@ -31,6 +31,7 @@ typedef struct CredExtensions { const bool *hmac_secret; uint64_t credProtect; const bool *minPinLength; + CborByteString credBlob; bool present; } CredExtensions;