mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
added CborGetArrayBinStringValue
This commit is contained in:
parent
c57a2c2c41
commit
0bbdc7f150
2 changed files with 36 additions and 4 deletions
|
@ -329,8 +329,7 @@ int CborMapGetKeyById(CborParser *parser, CborValue *map, uint8_t *data, size_t
|
||||||
if (cbor_value_get_type(map) != CborIntegerType)
|
if (cbor_value_get_type(map) != CborIntegerType)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
cbor_value_get_int64(map, &indx);
|
cbor_value_get_int64(map, &indx);
|
||||||
printf("--id %lld\n", (long long)indx);
|
|
||||||
|
|
||||||
err = cbor_value_advance(map);
|
err = cbor_value_advance(map);
|
||||||
cbor_check(err);
|
cbor_check(err);
|
||||||
|
@ -349,11 +348,43 @@ int CborMapGetKeyById(CborParser *parser, CborValue *map, uint8_t *data, size_t
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CborError CborGetArrayBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen, uint8_t *delimeter) {
|
||||||
|
CborValue array;
|
||||||
|
if (datalen)
|
||||||
|
*datalen = 0;
|
||||||
|
|
||||||
|
size_t slen = maxdatalen;
|
||||||
|
size_t totallen = 0;
|
||||||
|
|
||||||
|
CborError res = cbor_value_enter_container(elm, &array);
|
||||||
|
cbor_check(res);
|
||||||
|
|
||||||
|
while (!cbor_value_at_end(&array)) {
|
||||||
|
res = cbor_value_copy_byte_string(&array, &data[totallen], &slen, &array);
|
||||||
|
cbor_check(res);
|
||||||
|
|
||||||
|
totallen += slen;
|
||||||
|
if (delimeter) {
|
||||||
|
memcpy(&data[totallen], delimeter, 1); // TODO: multibyte
|
||||||
|
totallen += 1;
|
||||||
|
}
|
||||||
|
slen = maxdatalen - totallen;
|
||||||
|
}
|
||||||
|
|
||||||
|
res = cbor_value_leave_container(elm, &array);
|
||||||
|
cbor_check(res);
|
||||||
|
|
||||||
|
if (datalen)
|
||||||
|
*datalen = totallen;
|
||||||
|
|
||||||
|
return CborNoError;
|
||||||
|
};
|
||||||
|
|
||||||
CborError CborGetBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen) {
|
CborError CborGetBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen) {
|
||||||
if (datalen)
|
if (datalen)
|
||||||
*datalen = 0;
|
*datalen = 0;
|
||||||
|
|
||||||
size_t slen = 0;
|
size_t slen = maxdatalen;
|
||||||
|
|
||||||
CborError res = cbor_value_copy_byte_string(elm, data, &slen, elm);
|
CborError res = cbor_value_copy_byte_string(elm, data, &slen, elm);
|
||||||
cbor_check(res);
|
cbor_check(res);
|
||||||
|
@ -368,7 +399,7 @@ CborError CborGetStringValue(CborValue *elm, char *data, size_t maxdatalen, size
|
||||||
if (datalen)
|
if (datalen)
|
||||||
*datalen = 0;
|
*datalen = 0;
|
||||||
|
|
||||||
size_t slen = 0;
|
size_t slen = maxdatalen;
|
||||||
|
|
||||||
CborError res = cbor_value_copy_text_string(elm, data, &slen, elm);
|
CborError res = cbor_value_copy_text_string(elm, data, &slen, elm);
|
||||||
cbor_check(res);
|
cbor_check(res);
|
||||||
|
|
|
@ -25,6 +25,7 @@ extern int TinyCborPrintFIDOPackage(uint8_t cmdCode, bool isResponse, uint8_t *d
|
||||||
extern int JsonToCbor(json_t *elm, CborEncoder *encoder);
|
extern int JsonToCbor(json_t *elm, CborEncoder *encoder);
|
||||||
|
|
||||||
extern int CborMapGetKeyById(CborParser *parser, CborValue *map, uint8_t *data, size_t dataLen, int key);
|
extern int CborMapGetKeyById(CborParser *parser, CborValue *map, uint8_t *data, size_t dataLen, int key);
|
||||||
|
extern CborError CborGetArrayBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen, uint8_t *delimeter);
|
||||||
extern CborError CborGetBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen);
|
extern CborError CborGetBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen);
|
||||||
extern CborError CborGetStringValue(CborValue *elm, char *data, size_t maxdatalen, size_t *datalen);
|
extern CborError CborGetStringValue(CborValue *elm, char *data, size_t maxdatalen, size_t *datalen);
|
||||||
extern CborError CborGetStringValueBuf(CborValue *elm);
|
extern CborError CborGetStringValueBuf(CborValue *elm);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue