Skip to content

Commit

Permalink
mifare_desfire_key: fix get/set_version for AES keys
Browse files Browse the repository at this point in the history
  • Loading branch information
mtdcr authored and darconeous committed Jan 6, 2018
1 parent 2514cde commit eea8b7b
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions libfreefare/mifare_desfire_key.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ mifare_desfire_key_get_version(MifareDESFireKey key)
{
uint8_t version = 0;

if (key->type == T_AES)
return key->aes_version;

for (int n = 0; n < 8; n++) {
version |= ((key->data[n] & 1) << (7 - n));
}
Expand All @@ -124,6 +127,11 @@ mifare_desfire_key_get_version(MifareDESFireKey key)
void
mifare_desfire_key_set_version(MifareDESFireKey key, uint8_t version)
{
if (key->type == T_AES) {
key->aes_version = version;
return;
}

for (int n = 0; n < 8; n++) {
uint8_t version_bit = ((version & (1 << (7 - n))) >> (7 - n));
key->data[n] &= 0xfe;
Expand Down

0 comments on commit eea8b7b

Please sign in to comment.