Search code examples
nfcmifaredesfire

Desfire Transaction File Creation Parameter Error


during the creation of a transaction mac file, at a Mifare Desfire Ev2 card, I receive an error. "com.nxp.nfclib.exceptions.PICCException: Parameter Error SW2 = -98" I am using the Taplinx libary, with the following transaction file settings:

public static final byte[] KEY_AES128_00_DEFAULT =
            {
                    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                    (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
            };
    DESFireFile.Ev2TransactionMacFileSettings fileSettings = new DESFireFile.Ev2TransactionMacFileSettings(
                        IDESFireEV2.CommunicationType.Plain,    //comSettings
                        (byte) 0x00,                            //readAccess
                        (byte) 0x0f,                            //writeAccess
                        (byte) 0x00,                            //readWriteAccess
                        (byte) 0x00,                            //changeAccess
                        (byte) 0x00,                            //tmKeyOption
                        KEY_AES128_00_DEFAULT,                  //tmKey
                        (byte) 0x00);                           //tmKeyVersion

I think that this should be right acording to the Documentation: https://www.mifare.net/developer/javadoc/android/ but I still receive the error. If anybody knows something please let me know. Thanks <3


Solution

  • After 3 days hard work this is the solution I got:

    DESFireFile.Ev2TransactionMacFileSettings fileSettings = new DESFireFile.Ev2TransactionMacFileSettings(
                    IDESFireEV1.CommunicationType.Plain,   //comSettings
                    (byte) 0x0,                            //readAccess
                    (byte) 0xF,                            //writeAccess
                    (byte) 0xF,                            //readWriteAccess
                    (byte) 0x0,                            //changeAccess
                    (byte) 0x2,                            //tmKeyOption
                    KEY_AES128_00_DEFAULT,                 //tmKey
                    (byte) 0x0);                           //tmKeyVersion
            desfire.createFile(0x00, fileSettings);