mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-25 15:45:26 -07:00
emrtd: Employ a workaround for data length of 0x80
This is to make US passport hashes read properly. https://wf.lavatech.top/ave-but-random/emrtd-data-quirks#EF_SOD
This commit is contained in:
parent
d1ec96ed41
commit
a14b5f7b5f
1 changed files with 6 additions and 1 deletions
|
@ -217,6 +217,11 @@ static int emrtd_get_asn1_data_length(uint8_t *datain, int datainlen, int offset
|
|||
PrintAndLogEx(DEBUG, "asn1 datalength, lenfield: %02X", lenfield);
|
||||
if (lenfield <= 0x7f) {
|
||||
return lenfield;
|
||||
} else if (lenfield == 0x80) {
|
||||
// TODO: 0x80 means indeterminate.
|
||||
// Giving rest of the file is a workaround, nothing more, nothing less.
|
||||
// More at https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/
|
||||
return datainlen;
|
||||
} else if (lenfield == 0x81) {
|
||||
return ((int) * (datain + offset + 1));
|
||||
} else if (lenfield == 0x82) {
|
||||
|
@ -231,7 +236,7 @@ static int emrtd_get_asn1_field_length(uint8_t *datain, int datainlen, int offse
|
|||
PrintAndLogEx(DEBUG, "asn1 fieldlength, datain: %s", sprint_hex_inrow(datain, datainlen));
|
||||
int lenfield = (int) * (datain + offset);
|
||||
PrintAndLogEx(DEBUG, "asn1 fieldlength, lenfield: %02X", lenfield);
|
||||
if (lenfield <= 0x7F) {
|
||||
if (lenfield <= 0x80) {
|
||||
return 1;
|
||||
} else if (lenfield == 0x81) {
|
||||
return 2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue