add options and correct versions
This commit is contained in:
parent
bc9bec2e02
commit
00248f4c98
52
ctap.c
52
ctap.c
@ -76,34 +76,74 @@ void ctap_get_info(CborEncoder * encoder)
|
||||
int ret;
|
||||
CborEncoder array;
|
||||
CborEncoder map;
|
||||
CborEncoder options;
|
||||
|
||||
const int number_of_map_items = 2;
|
||||
const int number_of_versions = 2;
|
||||
|
||||
ret = cbor_encoder_create_map(encoder, &map, number_of_map_items);
|
||||
ret = cbor_encoder_create_map(encoder, &map, 3);
|
||||
check_ret(ret);
|
||||
{
|
||||
|
||||
ret = cbor_encode_uint(&map, 0x01); // versions key
|
||||
ret = cbor_encode_uint(&map, RESP_versions); // versions key
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encoder_create_array(&map, &array, number_of_versions);
|
||||
check_ret(ret);
|
||||
ret = cbor_encode_text_stringz(&array, "1.0");
|
||||
ret = cbor_encode_text_stringz(&array, "U2F_V2");
|
||||
check_ret(ret);
|
||||
ret = cbor_encode_text_stringz(&array, "2.0");
|
||||
ret = cbor_encode_text_stringz(&array, "FIDO_2_0");
|
||||
check_ret(ret);
|
||||
ret = cbor_encoder_close_container(&map, &array);
|
||||
check_ret(ret);
|
||||
}
|
||||
|
||||
ret = cbor_encode_uint(&map, 0x03); // aaguid key
|
||||
ret = cbor_encode_uint(&map, RESP_aaguid); // aaguid key
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encode_byte_string(&map, CTAP_AAGUID, 16);
|
||||
check_ret(ret);
|
||||
}
|
||||
|
||||
ret = cbor_encode_uint(&map, RESP_options); // aaguid key
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encoder_create_map(&map, &options,4);
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encode_text_string(&options, "plat", 4);
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encode_boolean(&options, 0); // Not attached to platform
|
||||
check_ret(ret);
|
||||
}
|
||||
|
||||
ret = cbor_encode_text_string(&options, "rk", 2);
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encode_boolean(&options, 0); // State-less device, requires allowList parameter.
|
||||
check_ret(ret);
|
||||
}
|
||||
|
||||
ret = cbor_encode_text_string(&options, "up", 2);
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encode_boolean(&options, 1); // Capable of testing user presence
|
||||
check_ret(ret);
|
||||
}
|
||||
|
||||
ret = cbor_encode_text_string(&options, "uv", 2);
|
||||
check_ret(ret);
|
||||
{
|
||||
ret = cbor_encode_boolean(&options, 0); // NOT [yet] capable of verifying user
|
||||
check_ret(ret);
|
||||
}
|
||||
|
||||
}
|
||||
ret = cbor_encoder_close_container(&map, &options);
|
||||
check_ret(ret);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
ret = cbor_encoder_close_container(encoder, &map);
|
||||
check_ret(ret);
|
||||
|
7
ctap.h
7
ctap.h
@ -40,6 +40,13 @@
|
||||
#define CP_getKeyAgreement 0x07
|
||||
#define CP_getRetries 0x08
|
||||
|
||||
#define RESP_versions 0x1
|
||||
#define RESP_extensions 0x2
|
||||
#define RESP_aaguid 0x3
|
||||
#define RESP_options 0x4
|
||||
#define RESP_maxMsgSize 0x5
|
||||
#define RESP_pinProtocols 0x6
|
||||
|
||||
#define RESP_fmt 0x01
|
||||
#define RESP_authData 0x02
|
||||
#define RESP_attStmt 0x03
|
||||
|
Loading…
x
Reference in New Issue
Block a user