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));