New API functions mifare_desfire_create_application_3k3des(), mifare_desfire_create_application_aes().

Update issue 37
Only ISO application creation as requested by Issue 57 is lacking now.
This commit is contained in:
Romain Tartiere 2011-03-25 13:00:24 +00:00
parent 4b41f8b78b
commit c7dc9f0ccc
6 changed files with 52 additions and 4 deletions

View file

@ -189,6 +189,12 @@ enum mifare_desfire_file_types {
#define MDCM_MACED 0x01
#define MDCM_ENCIPHERED 0x03
/* Mifare DESFire EV1 Application crypto operations */
#define APPLICATION_CRYPTO_DES 0x00
#define APPLICATION_CRYPTO_3K3DES 0x40
#define APPLICATION_CRYPTO_AES 0x80
/* Access right */
#define MDAR(read,write,read_write,change_access_rights) ( \
@ -319,6 +325,8 @@ int mifare_desfire_get_key_settings (MifareTag tag, uint8_t *settings, uint8_t
int mifare_desfire_change_key (MifareTag tag, uint8_t key_no, MifareDESFireKey new_key, MifareDESFireKey old_key);
int mifare_desfire_get_key_version (MifareTag tag, uint8_t key_no, uint8_t *version);
int mifare_desfire_create_application (MifareTag tag, MifareDESFireAID aid, uint8_t settings, uint8_t key_no);
int mifare_desfire_create_application_3k3des (MifareTag tag, MifareDESFireAID aid, uint8_t settings, uint8_t key_no);
int mifare_desfire_create_application_aes (MifareTag tag, MifareDESFireAID aid, uint8_t settings, uint8_t key_no);
int mifare_desfire_delete_application (MifareTag tag, MifareDESFireAID aid);
int mifare_desfire_get_application_ids (MifareTag tag, MifareDESFireAID *aids[], size_t *count);
void mifare_desfire_free_application_ids (MifareDESFireAID aids[]);

View file

@ -37,6 +37,8 @@
.Nm mifare_desfire_get_key_version ,
.\"
.Nm mifare_desfire_create_application ,
.Nm mifare_desfire_create_application_3k3des ,
.Nm mifare_desfire_create_application_aes ,
.Nm mifare_desfire_delete_application ,
.Nm mifare_desfire_get_application_ids ,
.Nm mifare_desfire_free_application_ids ,
@ -118,6 +120,10 @@ Mifare card manipulation library (libfreefare, \-lfreefare)
.Ft int
.Fn mifare_desfire_create_application "MifareTag tag" "MifareDESFireAID aid" "uint8_t settings" "uint8_t key_no"
.Ft int
.Fn mifare_desfire_create_application_aes "MifareTag tag" "MifareDESFireAID aid" "uint8_t settings" "uint8_t key_no"
.Ft int
.Fn mifare_desfire_create_application_3k3des "MifareTag tag" "MifareDESFireAID aid" "uint8_t settings" "uint8_t key_no"
.Ft int
.Fn mifare_desfire_delete_application "MifareTag tag" "MifareDESFireAID aid"
.Ft int
.Fn mifare_desfire_get_application_ids "MifareTag tag" "MifareDESFireAID *aids[]" "size_t *count"
@ -351,6 +357,23 @@ key settings and
authentication keys. Authentication keys are set to 0 after creation.
.Pp
The
.Fn mifare_desfire_create_application_3k3des
and
.Fn mifare_desfire_create_application_aes
functions acts as the
.Fn mifare_desfire_create_application
function except that the whole application is configured to use 3K3DES or AES
keys. It is possible to achive the same result using the
.Fn mifare_desfire_create_application
function and ORing the
.Vt key_no
argument with
.Vt APPLICATION_CRYPTO_3K3DES
or
.Vt APPLICATION_CRYPTO_AES
respectively.
.Pp
The
.Fn mifare_desfire_delete_application
deletes the application identified by AID
.Vt aid .

View file

@ -657,6 +657,18 @@ mifare_desfire_create_application (MifareTag tag, MifareDESFireAID aid, uint8_t
return create_application (tag, aid, settings, key_no, 0, NULL);
}
int
mifare_desfire_create_application_3k3des (MifareTag tag, MifareDESFireAID aid, uint8_t settings, uint8_t key_no)
{
return create_application (tag, aid, settings, APPLICATION_CRYPTO_3K3DES | key_no, 0, NULL);
}
int
mifare_desfire_create_application_aes (MifareTag tag, MifareDESFireAID aid, uint8_t settings, uint8_t key_no)
{
return create_application (tag, aid, settings, APPLICATION_CRYPTO_AES | key_no, 0, NULL);
}
int
mifare_desfire_delete_application (MifareTag tag, MifareDESFireAID aid)
{