mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-20 21:33:19 -07:00
asn1print
This commit is contained in:
parent
d11a6864fd
commit
62e9d0cd84
2 changed files with 28 additions and 2 deletions
|
@ -9,7 +9,13 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "asn1utils.h"
|
#include "asn1utils.h"
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <mbedtls/asn1.h>
|
#include <mbedtls/asn1.h>
|
||||||
|
#include "emv/tlv.h"
|
||||||
|
#include "emv/dump.h"
|
||||||
|
#include "asn1dump.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval) {
|
int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval) {
|
||||||
if (!signature || !signaturelen || !rval || !sval)
|
if (!signature || !signaturelen || !rval || !sval)
|
||||||
|
@ -55,7 +61,27 @@ exit:
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
int asn1_print(uint8_t *asn1buf, int level) {
|
static bool print_cb(void *data, const struct tlv *tlv, int level, bool is_leaf) {
|
||||||
|
bool candump = true;
|
||||||
|
asn1_tag_dump(tlv, stdout, level, &candump);
|
||||||
|
if (is_leaf && candump) {
|
||||||
|
dump_buffer(tlv->value, tlv->len, stdout, level);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int asn1_print(uint8_t *asn1buf, size_t asn1buflen, char *indent) {
|
||||||
|
|
||||||
|
struct tlvdb *t = NULL;
|
||||||
|
t = tlvdb_parse_multi(asn1buf, asn1buflen);
|
||||||
|
if (t) {
|
||||||
|
tlvdb_visit(t, print_cb, NULL, 0);
|
||||||
|
tlvdb_free(t);
|
||||||
|
} else {
|
||||||
|
PrintAndLogEx(ERR, "Can't parse data as TLV tree.");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
extern int asn1_print(uint8_t *asn1buf, int level);
|
extern int asn1_print(uint8_t *asn1buf, size_t asn1buflen, char *indent);
|
||||||
extern int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval);
|
extern int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval);
|
||||||
|
|
||||||
#endif /* asn1utils.h */
|
#endif /* asn1utils.h */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue