NXP Reader Library  v17.1.0.2535
01_GenerateKeyPair

Example code to Generate a Key Pair. More...

Collaboration diagram for 01_GenerateKeyPair:

Example code to Generate a Key Pair.

/* Reader Library Headers. */
#include <phKeyStore.h>
#include <phCryptoASym.h>
/* Standard Header. */
#include <string.h>
#define CHECK_SUCCESS(x) \
if ( (x) != PH_ERR_SUCCESS ) \
{ \
printf ( "\n\n" ); \
printf ( "An error occurred: (0x%04X)\n", (x) ); \
printf ( "Pressing any key will exit the demo.\n" ); \
_getch (); \
return 0; \
}
#define KEY_ENTRIES 10
#define KEY_VERSION_PAIRS 3 * KEY_ENTRIES
#define KEY_USAGE_COUNTER 15
#define TRUE PH_ON
#define FALSE PH_OFF
/* Variables */
phStatus_t wStatus = 0;
phCryptoASym_Sw_DataParams_t stCryptoASym;
phKeyStore_Sw_KeyEntry_t aKeyEntry[KEY_ENTRIES];
phKeyStore_Sw_KeyVersionPair_t aKeyVersion[KEY_VERSION_PAIRS];
phKeyStore_Sw_KUCEntry_t aKeyUsageCounter[KEY_USAGE_COUNTER];
/* Initialize software keystore component. */
CHECK_SUCCESS(phKeyStore_Sw_Init(&stKeyStore, sizeof(stKeyStore), aKeyEntry, KEY_ENTRIES, aKeyVersion, 2,
aKeyUsageCounter, KEY_USAGE_COUNTER), TRUE);
/* Initialize ASymmetric component. */
CHECK_SUCCESS(phCryptoASym_Sw_Init(&stCryptoASym, sizeof(stCryptoASym), &stKeyStore, aInternalBuffer, wInternalBuffSize), TRUE);
/* Generate Keypair
* Here ECC key type with SECP256R1 as Curve are used for Key Pair generation.
*/
CHECK_SUCCESS(phCryptoASym_GenerateKeyPair(&stCryptoASym, PH_CRYPTOASYM_KEYMODE_EPHEMERAL, PH_CRYPTOASYM_KEY_TYPE_ECC,
PH_CRYPTOASYM_CURVE_BY_NAME, (uint8_t *) PH_CRYPTOASYM_CURVE_NAME_SECP256R1,
(uint16_t) strlen(PH_CRYPTOASYM_CURVE_NAME_SECP256R1)), TRUE);
phKeyStore_Sw_Init
phStatus_t phKeyStore_Sw_Init(phKeyStore_Sw_DataParams_t *pDataParams, uint16_t wSizeOfDataParams, phKeyStore_Sw_KeyEntry_t *pKeyEntries, uint16_t wNoOfKeyEntries, phKeyStore_Sw_KeyVersionPair_t *pKeyVersionPairs, uint16_t wNoOfVersionPairs, phKeyStore_Sw_KUCEntry_t *pKUCEntries, uint16_t wNoOfKUCEntries)
Initializes the KeyStore component as software component.
phKeyStore_Sw_KeyEntry_t
Software KeyEntry structure.
Definition: phKeyStore.h:66
phKeyStore_Sw_DataParams_t
Software parameter structure.
Definition: phKeyStore.h:82
phKeyStore_Sw_KeyVersionPair_t
Software KeyVersionPair structure for Symmetric and ASymmetric keys.
Definition: phKeyStore.h:51
phStatus_t
uint16_t phStatus_t
phcsBfl_Status_t is a signed short value, using the positive range.
Definition: ph_TypeDefs.h:158
uint16_t
unsigned short uint16_t
16 bit unsigned integer
Definition: ph_TypeDefs.h:62
phKeyStore_Sw_KUCEntry_t
Software KeyUsageCounter structure.
Definition: phKeyStore.h:75
uint8_t
unsigned char uint8_t
8 bit unsigned integer
Definition: ph_TypeDefs.h:56
PH_CRYPTOASYM_KEY_TYPE_ECC
#define PH_CRYPTOASYM_KEY_TYPE_ECC
ASymmetric ECC (Elliptical Curve Cryptography) key type.
Definition: phCryptoASym.h:208