mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 18:48:13 -07:00
client: fix mix of spaces & tabs
This commit is contained in:
parent
112411042f
commit
0d9223a547
197 changed files with 49383 additions and 49383 deletions
156
client/emv/dol.c
156
client/emv/dol.c
|
@ -25,111 +25,111 @@
|
|||
|
||||
static size_t dol_calculate_len(const struct tlv *tlv, size_t data_len)
|
||||
{
|
||||
if (!tlv)
|
||||
return 0;
|
||||
if (!tlv)
|
||||
return 0;
|
||||
|
||||
const unsigned char *buf = tlv->value;
|
||||
size_t left = tlv->len;
|
||||
size_t count = 0;
|
||||
const unsigned char *buf = tlv->value;
|
||||
size_t left = tlv->len;
|
||||
size_t count = 0;
|
||||
|
||||
while (left) {
|
||||
struct tlv tlv;
|
||||
if (!tlv_parse_tl(&buf, &left, &tlv))
|
||||
return 0;
|
||||
while (left) {
|
||||
struct tlv tlv;
|
||||
if (!tlv_parse_tl(&buf, &left, &tlv))
|
||||
return 0;
|
||||
|
||||
count += tlv.len;
|
||||
count += tlv.len;
|
||||
|
||||
/* Last tag can be of variable length */
|
||||
if (tlv.len == 0 && left == 0)
|
||||
count = data_len;
|
||||
}
|
||||
/* Last tag can be of variable length */
|
||||
if (tlv.len == 0 && left == 0)
|
||||
count = data_len;
|
||||
}
|
||||
|
||||
return count;
|
||||
return count;
|
||||
}
|
||||
|
||||
struct tlv *dol_process(const struct tlv *tlv, const struct tlvdb *tlvdb, tlv_tag_t tag)
|
||||
{
|
||||
size_t res_len;
|
||||
if (!tlv || !(res_len = dol_calculate_len(tlv, 0))) {
|
||||
struct tlv *res_tlv = malloc(sizeof(*res_tlv));
|
||||
size_t res_len;
|
||||
if (!tlv || !(res_len = dol_calculate_len(tlv, 0))) {
|
||||
struct tlv *res_tlv = malloc(sizeof(*res_tlv));
|
||||
|
||||
res_tlv->tag = tag;
|
||||
res_tlv->len = 0;
|
||||
res_tlv->value = NULL;
|
||||
res_tlv->tag = tag;
|
||||
res_tlv->len = 0;
|
||||
res_tlv->value = NULL;
|
||||
|
||||
return res_tlv;
|
||||
}
|
||||
return res_tlv;
|
||||
}
|
||||
|
||||
struct tlv *res_tlv = malloc(sizeof(*res_tlv) + res_len);
|
||||
if (!res_tlv)
|
||||
return NULL;
|
||||
struct tlv *res_tlv = malloc(sizeof(*res_tlv) + res_len);
|
||||
if (!res_tlv)
|
||||
return NULL;
|
||||
|
||||
const unsigned char *buf = tlv->value;
|
||||
size_t left = tlv->len;
|
||||
unsigned char *res = (unsigned char *)(res_tlv + 1);
|
||||
size_t pos = 0;
|
||||
const unsigned char *buf = tlv->value;
|
||||
size_t left = tlv->len;
|
||||
unsigned char *res = (unsigned char *)(res_tlv + 1);
|
||||
size_t pos = 0;
|
||||
|
||||
while (left) {
|
||||
struct tlv cur_tlv;
|
||||
if (!tlv_parse_tl(&buf, &left, &cur_tlv) || pos + cur_tlv.len > res_len) {
|
||||
free(res_tlv);
|
||||
while (left) {
|
||||
struct tlv cur_tlv;
|
||||
if (!tlv_parse_tl(&buf, &left, &cur_tlv) || pos + cur_tlv.len > res_len) {
|
||||
free(res_tlv);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const struct tlv *tag_tlv = tlvdb_get(tlvdb, cur_tlv.tag, NULL);
|
||||
if (!tag_tlv) {
|
||||
memset(res + pos, 0, cur_tlv.len);
|
||||
} else if (tag_tlv->len > cur_tlv.len) {
|
||||
memcpy(res + pos, tag_tlv->value, cur_tlv.len);
|
||||
} else {
|
||||
// FIXME: cn data should be padded with 0xFF !!!
|
||||
memcpy(res + pos, tag_tlv->value, tag_tlv->len);
|
||||
memset(res + pos + tag_tlv->len, 0, cur_tlv.len - tag_tlv->len);
|
||||
}
|
||||
pos += cur_tlv.len;
|
||||
}
|
||||
const struct tlv *tag_tlv = tlvdb_get(tlvdb, cur_tlv.tag, NULL);
|
||||
if (!tag_tlv) {
|
||||
memset(res + pos, 0, cur_tlv.len);
|
||||
} else if (tag_tlv->len > cur_tlv.len) {
|
||||
memcpy(res + pos, tag_tlv->value, cur_tlv.len);
|
||||
} else {
|
||||
// FIXME: cn data should be padded with 0xFF !!!
|
||||
memcpy(res + pos, tag_tlv->value, tag_tlv->len);
|
||||
memset(res + pos + tag_tlv->len, 0, cur_tlv.len - tag_tlv->len);
|
||||
}
|
||||
pos += cur_tlv.len;
|
||||
}
|
||||
|
||||
res_tlv->tag = tag;
|
||||
res_tlv->len = res_len;
|
||||
res_tlv->value = res;
|
||||
res_tlv->tag = tag;
|
||||
res_tlv->len = res_len;
|
||||
res_tlv->value = res;
|
||||
|
||||
return res_tlv;
|
||||
return res_tlv;
|
||||
}
|
||||
|
||||
struct tlvdb *dol_parse(const struct tlv *tlv, const unsigned char *data, size_t data_len)
|
||||
{
|
||||
if (!tlv)
|
||||
return NULL;
|
||||
if (!tlv)
|
||||
return NULL;
|
||||
|
||||
const unsigned char *buf = tlv->value;
|
||||
size_t left = tlv->len;
|
||||
size_t res_len = dol_calculate_len(tlv, data_len);
|
||||
size_t pos = 0;
|
||||
struct tlvdb *db = NULL;
|
||||
const unsigned char *buf = tlv->value;
|
||||
size_t left = tlv->len;
|
||||
size_t res_len = dol_calculate_len(tlv, data_len);
|
||||
size_t pos = 0;
|
||||
struct tlvdb *db = NULL;
|
||||
|
||||
if (res_len != data_len)
|
||||
return NULL;
|
||||
if (res_len != data_len)
|
||||
return NULL;
|
||||
|
||||
while (left) {
|
||||
struct tlv cur_tlv;
|
||||
if (!tlv_parse_tl(&buf, &left, &cur_tlv) || pos + cur_tlv.len > res_len) {
|
||||
tlvdb_free(db);
|
||||
return NULL;
|
||||
}
|
||||
while (left) {
|
||||
struct tlv cur_tlv;
|
||||
if (!tlv_parse_tl(&buf, &left, &cur_tlv) || pos + cur_tlv.len > res_len) {
|
||||
tlvdb_free(db);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Last tag can be of variable length */
|
||||
if (cur_tlv.len == 0 && left == 0)
|
||||
cur_tlv.len = res_len - pos;
|
||||
/* Last tag can be of variable length */
|
||||
if (cur_tlv.len == 0 && left == 0)
|
||||
cur_tlv.len = res_len - pos;
|
||||
|
||||
struct tlvdb *tag_db = tlvdb_fixed(cur_tlv.tag, cur_tlv.len, data + pos);
|
||||
if (!db)
|
||||
db = tag_db;
|
||||
else
|
||||
tlvdb_add(db, tag_db);
|
||||
struct tlvdb *tag_db = tlvdb_fixed(cur_tlv.tag, cur_tlv.len, data + pos);
|
||||
if (!db)
|
||||
db = tag_db;
|
||||
else
|
||||
tlvdb_add(db, tag_db);
|
||||
|
||||
pos += cur_tlv.len;
|
||||
}
|
||||
pos += cur_tlv.len;
|
||||
}
|
||||
|
||||
return db;
|
||||
return db;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue