Store diversifier len

This commit is contained in:
Eric Betts
2024-01-01 11:07:42 -08:00
parent d4b72caee7
commit 7bd7fe7ad1
4 changed files with 7 additions and 2 deletions
+2
View File
@@ -774,6 +774,7 @@ NfcCommand seader_worker_card_detect(
OCTET_STRING_fromBuf(
&cardDetails->protocol, (const char*)protocol_bytes, sizeof(protocol_bytes));
memcpy(credential->diversifier, uid, uid_len);
credential->diversifier_len = uid_len;
} else {
protocol_bytes[1] = FrameProtocol_nfc;
OCTET_STRING_fromBuf(
@@ -783,6 +784,7 @@ NfcCommand seader_worker_card_detect(
cardDetails->atqa = &atqa_string;
if(seader_mf_df_check_card_type(atqa[0], atqa[1], sak)) {
memcpy(credential->diversifier, uid, uid_len);
credential->diversifier_len = uid_len;
}
}
+1 -1
View File
@@ -33,7 +33,7 @@ void seader_scene_card_menu_on_enter(void* context) {
SubmenuIndexSaveRFID,
seader_scene_card_menu_submenu_callback,
seader);
if(credential->sio[0] == 0x30) {
if(credential->sio[0] == 0x30 && credential->diversifier_len == RFAL_PICOPASS_UID_LEN) {
submenu_add_item(
submenu,
"Save SR",
+3 -1
View File
@@ -72,6 +72,7 @@ static bool seader_credential_load(SeaderCredential* cred, FuriString* path, boo
// Optional SIO/Diversifier
flipper_format_read_hex(file, "SIO", cred->sio, sizeof(cred->sio));
flipper_format_read_hex(file, "Diversifier", cred->diversifier, sizeof(cred->diversifier));
cred->diversifier_len = sizeof(cred->diversifier); // No way to know real length;
parsed = true;
} while(false);
@@ -364,7 +365,7 @@ bool seader_credential_save_agnostic(SeaderCredential* cred, const char* name) {
if(cred->sio[0] == 0x30) {
if(!flipper_format_write_hex(file, "SIO", cred->sio, sizeof(cred->sio))) break;
if(!flipper_format_write_hex(
file, "Diversifier", cred->diversifier, sizeof(cred->diversifier)))
file, "Diversifier", cred->diversifier, cred->diversifier_len))
break;
}
@@ -643,6 +644,7 @@ void seader_credential_clear(SeaderCredential* cred) {
cred->type = SeaderCredentialTypeNone;
memset(cred->sio, 0, sizeof(cred->sio));
memset(cred->diversifier, 0, sizeof(cred->diversifier));
cred->diversifier_len = 0;
furi_string_reset(cred->load_path);
}
+1
View File
@@ -37,6 +37,7 @@ typedef struct {
size_t bit_length;
uint8_t sio[128];
uint8_t diversifier[8];
uint8_t diversifier_len;
SeaderCredentialType type;
SeaderCredentialSaveFormat save_format;
char name[SEADER_CRED_NAME_MAX_LEN + 1];