From f425ae30c617e24a3b7f8de2e376896ccfaa002c Mon Sep 17 00:00:00 2001 From: Romain Tartiere Date: Mon, 26 Jul 2010 20:20:22 +0000 Subject: [PATCH] Merge r486 from the libfreefare-desfire branch. --- examples/mifare-classic-write-ndef.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/examples/mifare-classic-write-ndef.c b/examples/mifare-classic-write-ndef.c index 7260dab..a73492a 100644 --- a/examples/mifare-classic-write-ndef.c +++ b/examples/mifare-classic-write-ndef.c @@ -28,14 +28,6 @@ #define MIN(a,b) ((a < b) ? a: b) -/* - * This define is used to convert ( SectorNumber, BlockOffset ) couple in - * BlockNumber - * e.g. If you want 4th block in sector 0x01 (trailer block of 0x01): - * BLOCK(0x01, 3) will return 0x07. - */ -#define BLOCK( S, B ) ( ( S < 32 )?( ( S * 4 ) + B ):( ( 32 * 4 ) + ( ( ( S - 32 ) * 16 ) + B ) ) ) - MifareClassicKey default_keys[] = { { 0xff,0xff,0xff,0xff,0xff,0xff }, { 0xd3,0xf7,0xd3,0xf7,0xd3,0xf7 }, @@ -102,16 +94,11 @@ fix_mad_trailer_block (MifareTag tag, MifareClassicSectorNumber sector, MifareCl { MifareClassicBlock block; mifare_classic_trailer_block (&block, mad_key_a, 0x0, 0x1, 0x1, 0x6, 0x00, default_keyb); - if (mifare_classic_authenticate (tag, BLOCK( sector, 0 ), key, key_type) < 0) { - perror ("mifare_classic_authenticate"); + if (mifare_classic_authenticate (tag, mifare_classic_sector_last_block (sector), key, key_type) < 0) { + perror ("fix_mad_trailer_block mifare_classic_authenticate"); return -1; } - /* - * WARN: Using BLOCK( sector, 3 ) selects trailer block only for sector < - * 32. In actual case, this is not a problem: we only call this function - * for sector 0x00 (0) and 0x10 (16). - */ - if (mifare_classic_write (tag, BLOCK( sector, 3 ), block) < 0) { + if (mifare_classic_write (tag, mifare_classic_sector_last_block (sector), block) < 0) { perror ("mifare_classic_write"); return -1; } @@ -165,6 +152,7 @@ main(int argc, char *argv[]) error = 1; goto error; } + /* fallthrough */ case CLASSIC_1K: if (!search_sector_key (tags[i], 0x00, &key_00, &key_00_type)) { error = 1; @@ -193,6 +181,7 @@ main(int argc, char *argv[]) memcpy (&key_10, &default_keyb, sizeof (MifareClassicKey)); key_10_type = MFC_KEY_B; } + /* fallthrough */ case CLASSIC_1K: if (key_00_type != MFC_KEY_B) { if( 0 != fix_mad_trailer_block( tags[i], 0x00, key_00, key_00_type )) {