Return largeBlobKey on cred management.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
@@ -221,10 +221,20 @@ int cbor_cred_mgmt(const uint8_t *data, size_t len) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cred_counter++;
|
cred_counter++;
|
||||||
CBOR_CHECK(cbor_encoder_create_map(&encoder, &mapEncoder, subcommand == 0x04 ? 5 : 4));
|
|
||||||
|
uint8_t l = 4;
|
||||||
|
if (subcommand == 0x04)
|
||||||
|
l++;
|
||||||
|
if (cred.extensions.present == true) {
|
||||||
|
if (cred.extensions.credProtect > 0)
|
||||||
|
l++;
|
||||||
|
if (cred.extensions.largeBlobKey == ptrue)
|
||||||
|
l++;
|
||||||
|
}
|
||||||
|
CBOR_CHECK(cbor_encoder_create_map(&encoder, &mapEncoder, l));
|
||||||
|
|
||||||
CBOR_CHECK(cbor_encode_uint(&mapEncoder, 0x06));
|
CBOR_CHECK(cbor_encode_uint(&mapEncoder, 0x06));
|
||||||
uint8_t l = 0;
|
l = 0;
|
||||||
if (cred.userId.present == true)
|
if (cred.userId.present == true)
|
||||||
l++;
|
l++;
|
||||||
if (cred.userName.present == true)
|
if (cred.userName.present == true)
|
||||||
@@ -279,8 +289,21 @@ int cbor_cred_mgmt(const uint8_t *data, size_t len) {
|
|||||||
asserted = true;
|
asserted = true;
|
||||||
rpIdHashx = rpIdHash;
|
rpIdHashx = rpIdHash;
|
||||||
}
|
}
|
||||||
CBOR_CHECK(cbor_encode_uint(&mapEncoder, 0x0A));
|
if (cred.extensions.present == true) {
|
||||||
CBOR_CHECK(cbor_encode_uint(&mapEncoder, cred.extensions.credProtect));
|
if (cred.extensions.credProtect > 0) {
|
||||||
|
CBOR_CHECK(cbor_encode_uint(&mapEncoder, 0x0A));
|
||||||
|
CBOR_CHECK(cbor_encode_uint(&mapEncoder, cred.extensions.credProtect));
|
||||||
|
}
|
||||||
|
if (cred.extensions.largeBlobKey == ptrue) {
|
||||||
|
uint8_t largeBlobKey[32];
|
||||||
|
int ret = credential_derive_large_blob_key(cred.id.data, cred.id.len, largeBlobKey);
|
||||||
|
if (ret != 0) {
|
||||||
|
CBOR_ERROR(CTAP2_ERR_PROCESSING);
|
||||||
|
}
|
||||||
|
CBOR_CHECK(cbor_encode_uint(&mapEncoder, 0x0B));
|
||||||
|
CBOR_CHECK(cbor_encode_byte_string(&mapEncoder, largeBlobKey, sizeof(largeBlobKey)));
|
||||||
|
}
|
||||||
|
}
|
||||||
credential_free(&cred);
|
credential_free(&cred);
|
||||||
mbedtls_ecdsa_free(&key);
|
mbedtls_ecdsa_free(&key);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user