mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-21 05:43:23 -07:00
Add: Emv first part of commands
* hf emv search * hf emv pse * hf emv select * hf emv exec command - only part of functionality
This commit is contained in:
parent
4058a2d7df
commit
3c5fce2ba7
18 changed files with 1370 additions and 19 deletions
|
@ -299,6 +299,40 @@ void tlvdb_free(struct tlvdb *tlvdb)
|
|||
}
|
||||
}
|
||||
|
||||
struct tlvdb *tlvdb_find_next(struct tlvdb *tlvdb, tlv_tag_t tag) {
|
||||
if (!tlvdb)
|
||||
return NULL;
|
||||
|
||||
return tlvdb_find(tlvdb->next, tag);
|
||||
}
|
||||
|
||||
struct tlvdb *tlvdb_find(struct tlvdb *tlvdb, tlv_tag_t tag) {
|
||||
if (!tlvdb)
|
||||
return NULL;
|
||||
|
||||
for (; tlvdb; tlvdb = tlvdb->next) {
|
||||
if (tlvdb->tag.tag == tag)
|
||||
return tlvdb;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct tlvdb *tlvdb_find_path(struct tlvdb *tlvdb, tlv_tag_t tag[]) {
|
||||
int i = 0;
|
||||
struct tlvdb *tnext = tlvdb;
|
||||
|
||||
while (tnext && tag[i]) {
|
||||
tnext = tlvdb_find(tnext, tag[i]);
|
||||
i++;
|
||||
if (tag[i] && tnext) {
|
||||
tnext = tnext->children;
|
||||
}
|
||||
}
|
||||
|
||||
return tnext;
|
||||
}
|
||||
|
||||
void tlvdb_add(struct tlvdb *tlvdb, struct tlvdb *other)
|
||||
{
|
||||
while (tlvdb->next) {
|
||||
|
@ -317,9 +351,8 @@ void tlvdb_visit(const struct tlvdb *tlvdb, tlv_cb cb, void *data, int level)
|
|||
|
||||
for (; tlvdb; tlvdb = next) {
|
||||
next = tlvdb->next;
|
||||
bool is_leaf = (tlvdb->children == NULL);
|
||||
cb(data, &tlvdb->tag, level, is_leaf);
|
||||
tlvdb_visit(tlvdb->children, cb, data, level+1);
|
||||
cb(data, &tlvdb->tag, level, (tlvdb->children == NULL));
|
||||
tlvdb_visit(tlvdb->children, cb, data, level + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -356,6 +389,11 @@ const struct tlv *tlvdb_get(const struct tlvdb *tlvdb, tlv_tag_t tag, const stru
|
|||
return NULL;
|
||||
}
|
||||
|
||||
const struct tlv *tlvdb_get_inchild(const struct tlvdb *tlvdb, tlv_tag_t tag, const struct tlv *prev) {
|
||||
tlvdb = tlvdb->children;
|
||||
return tlvdb_get(tlvdb, tag, prev);
|
||||
}
|
||||
|
||||
unsigned char *tlv_encode(const struct tlv *tlv, size_t *len)
|
||||
{
|
||||
size_t size = tlv->len;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue