MIFARE_DESFIRE_KEY(3)

✨ MIFARE_DESFIRE_KEY(3) ✨

okay bestie, so this is a page from the Library Functions Manual β€” it's the MIFARE_DESFIRE_KEY one, third section, the whole ~keys manipulation~ situation. sit down, grab a strawberry πŸ“, we're doing crypto key management.


πŸ’– NAME πŸ’–

mifare_desfire_des_key_new, mifare_desfire_3des_key_new, mifare_desfire_3k3des_key_new, mifare_desfire_aes_key_new, mifare_desfire_des_key_new_with_version, mifare_desfire_3des_key_new_with_version, mifare_desfire_3k3des_key_new_with_version, mifare_desfire_aes_key_new_with_version, mifare_desfire_key_get_version, mifare_desfire_key_set_version, mifare_desfire_key_free β€” the Mifare DESFire keys Manipulation Functions. that's the whole squad, they roll together πŸ’…


🌈 LIBRARY 🌈

Mifare card manipulation library (libfreefare, and you link it with -lfreefare) πŸ¦‹


✨ SYNOPSIS ✨

#include <freefare.h>

MifareDESFireKey
mifare_desfire_des_key_new(uint8_t value[8]);

MifareDESFireKey
mifare_desfire_3des_key_new(uint8_t value[16]);

MifareDESFireKey
mifare_desfire_3k3des_key_new(uint8_t value[24]);

MifareDESFireKey
mifare_desfire_aes_key_new(uint8_t value[16]);

MifareDESFireKey
mifare_desfire_des_key_new_with_version(uint8_t value[8]);

MifareDESFireKey
mifare_desfire_3des_key_new_with_version(uint8_t value[16]);

MifareDESFireKey
mifare_desfire_3k3des_key_new_with_version(uint8_t value[24]);

MifareDESFireKey
mifare_desfire_aes_key_new_with_version(uint8_t value[16],
    uint8_t version);

uint8_t
mifare_desfire_key_get_version(MifareDESFireKey key);

void
mifare_desfire_key_set_version(MifareDESFireKey key, uint8_t version);

void
mifare_desfire_key_free(MifareDESFireKey key);

like. look at that array of function signatures. it's giving organized. it's giving I know exactly what I'm doing. πŸ”₯


πŸŽ€ DESCRIPTION πŸŽ€

so the mifare_desfire_key_*() family is your whole girlboss toolkit for managing Mifare DESFire keys. that's it, that's the vibe.

the mifare_desfire_des_key_new(), mifare_desfire_3des_key_new(), mifare_desfire_3k3des_key_new() and mifare_desfire_ades_key_new() functions (and yes, we spelled that last one exactly how the page spells it, no notes πŸ™ˆ) allocate a brand new key stuffed with the value data you hand them. and the key version? it gets set to 0. fresh out the box, zero energy, iconic.

then there's the with_version girlies β€” mifare_desfire_des_key_new_with_version(), mifare_desfire_3des_key_new_with_version(), mifare_desfire_3k3des_key_new_with_version() and mifare_desfire_aes_key_new_with_version(). they do the exact same thing as the ones above, EXCEPT for the version part:

  • for DES, 3DES and 3K3DES, the key version gets read from value πŸ‘€
  • for AES, it gets set to version ✨

want to peek at the version of a MifareDESFireKey? that's mifare_desfire_key_get_version(). want to change it? that's mifare_desfire_key_set_version.() 🫢

and listen β€” you HAVE to call mifare_desfire_key_free() on every single MifareDESFireKey once you're done with it, otherwise that memory is never coming back. no cap. free your keys or your keys will live in your RAM rent-free forever πŸ’€

🌸 RETURN VALUES 🌸

the key allocation functions return the allocated key... or NULL if things went sideways. so like, check for NULL, bestie. always. 😭


πŸ¦‹ SEE ALSO πŸ¦‹


πŸ‘‘ AUTHORS πŸ‘‘

Romain Tartiere <romain@il4p.org> β€” the actual main character who wrote all of this. we stan 🫢


and that's the whole page, fr fr πŸ’– this was the MIFARE_DESFIRE_KEY(3) manual from Debian, dated July 20, 2010 β€” and the page name is literally MIFARE_DESFIRE_KEY(3) again, because manpages love saying goodbye the same way they said hello. slay, periodt πŸ’…βœ¨