Elliptic Curve keypair APIs. More...

Functions

gos_result_t gos_atca_calculate_public_key (uint16_t slot_id, uint8_t *public_key)
gos_result_t gos_atca_write_public_key (uint16_t slot_id, uint8_t *public_key)
gos_result_t gos_atca_generate_keypair (uint16_t slot_id, uint8_t *public_key)
gos_result_t gos_atca_get_public_key (uint16_t slot_id, uint8_t *public_key)

Detailed Description

Elliptic Curve keypair APIs.

Function Documentation

gos_atca_calculate_public_key()

gos_result_t gos_atca_calculate_public_key ( uint16_t slot_id,
uint8_t * public_key
)

Calculate the EC public key based on the private key at the specified slot

Parameters
[in] slot_id Slot with existing private key
[out] public_key Calculated public key. Format will be the X and Y integers in big-endian format. 64 bytes for P256 curve.
Returns
gos_result_t result of API
Examples:
demo/secure_element/commands.c .

gos_atca_generate_keypair()

gos_result_t gos_atca_generate_keypair ( uint16_t slot_id,
uint8_t * public_key
)

Issues GenKey command, which generates a new random private key in slot and returns the public key.

Parameters
[in] slot_id Slot number where an ECC private key is configured. Can also be ATCA_TEMPKEY_KEYID to generate a private key in TempKey.
[out] public_key Public key will be returned here. Format will be the X and Y integers in big-endian format. 64 bytes for P256 curve. Set to NULL if public key isn't required.
Returns
gos_result_t result of API
Examples:
demo/secure_element/se_utils.c .

gos_atca_get_public_key()

gos_result_t gos_atca_get_public_key ( uint16_t slot_id,
uint8_t * public_key
)

Executes Read command to read an ECC P256 public key from a slot configured for clear reads.

This function assumes the public key is stored using the ECC public key format specified in the datasheet.

Parameters
[in] slot_id Slot number to read from. Only slots 8 to 15 are large enough for a public key.
[out] public_key Public key is returned here (64 bytes). Format will be the 32 byte X and Y big-endian integers concatenated.
Returns
gos_result_t result of API
Examples:
demo/secure_element/commands.c .

gos_atca_write_public_key()

gos_result_t gos_atca_write_public_key ( uint16_t slot_id,
uint8_t * public_key
)

Executes the Write command, which writes a public key to a data slot in the SE format

Parameters
[in] slot_id Slot number to write. Only slots 8 to 15 are large enough to store a public key.
[in] public_key Public key to write into the slot specified. X and Y integers in big-endian format. 64 bytes for P256 curve.
Returns
gos_result_t result of API
Examples:
demo/secure_element/commands.c .