/* * (c) 2015-2017 Marcos Del Sol Vives * * SPDX-License-Identifier: MIT */ #ifndef HAVE_NFC3D_KEYGEN_H #define HAVE_NFC3D_KEYGEN_H #include #include #define NFC3D_KEYGEN_SEED_SIZE 64 #pragma pack(1) typedef struct { uint8_t hmacKey[16]; char typeString[14]; uint8_t rfu; uint8_t magicBytesSize; uint8_t magicBytes[16]; uint8_t xorPad[32]; } nfc3d_keygen_masterkeys_t; typedef struct { const uint8_t aesKey[16]; const uint8_t aesIV[16]; const uint8_t hmacKey[16]; } nfc3d_keygen_derivedkeys_t; #pragma pack() void nfc3d_keygen(const nfc3d_keygen_masterkeys_t *baseKeys, const uint8_t *baseSeed, nfc3d_keygen_derivedkeys_t *derivedKeys); #endif