From 710e03f5a6bb3ce8106a5149c2fe141772419a49 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 7 Dec 2022 15:54:57 +0100 Subject: [PATCH] Process credBlob on makeCredential. Signed-off-by: Pol Henarejos --- src/fido/cbor_make_credential.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/fido/cbor_make_credential.c b/src/fido/cbor_make_credential.c index b9de407..a0a100e 100644 --- a/src/fido/cbor_make_credential.c +++ b/src/fido/cbor_make_credential.c @@ -119,6 +119,7 @@ int cbor_make_credential(const uint8_t *data, size_t len) { CBOR_FIELD_KEY_TEXT_VAL_BOOL(2, "hmac-secret", extensions.hmac_secret); CBOR_FIELD_KEY_TEXT_VAL_UINT(2, "credProtect", extensions.credProtect); CBOR_FIELD_KEY_TEXT_VAL_BOOL(2, "minPinLength", extensions.minPinLength); + CBOR_FIELD_KEY_TEXT_VAL_BYTES(2, "credBlob", extensions.credBlob); CBOR_ADVANCE(2); } CBOR_PARSE_MAP_END(_f1, 2); @@ -289,7 +290,13 @@ int cbor_make_credential(const uint8_t *data, size_t len) { } } } + if (extensions.credBlob.present == true) + l++; CBOR_CHECK(cbor_encoder_create_map(&encoder, &mapEncoder, l)); + if (extensions.credBlob.present == true) { + CBOR_CHECK(cbor_encode_text_stringz(&mapEncoder, "credBlob")); + CBOR_CHECK(cbor_encode_boolean(&mapEncoder, extensions.credBlob.len < MAX_CREDBLOB_LENGTH)); + } if (extensions.credProtect != 0) { CBOR_CHECK(cbor_encode_text_stringz(&mapEncoder, "credProtect")); CBOR_CHECK(cbor_encode_uint(&mapEncoder, extensions.credProtect));