56#ifdef ECC_CONF_ENABLED
57#define ECC_ENABLED ECC_CONF_ENABLED
101 uint8_t *compressed_public_key);
111 uint8_t *uncompressed_public_key,
122 const uint8_t *private_key,
134 const uint8_t *message_hash,
135 const uint8_t *public_key,
145 uint8_t *private_key,
160 const uint8_t *private_key,
161 uint8_t *shared_secret,
NIST curves for various key sizes.
void ecc_compress_public_key(const uint8_t *uncompressed_public_key, uint8_t *compressed_public_key)
Compresses a public key as per SECG SEC 1.
void ecc_disable(void)
Shuts down the ECC driver and unlocks the mutex.
char ecc_decompress_public_key(const uint8_t *compressed_public_key, uint8_t *uncompressed_public_key, int *result)
Decompresses a public key.
char ecc_verify(const uint8_t *signature, const uint8_t *message_hash, const uint8_t *public_key, int *result)
Verifies an ECDSA signature of a message.
char ecc_generate_key_pair(uint8_t *public_key, uint8_t *private_key, int *result)
Generates a public/private key pair.
char ecc_validate_public_key(const uint8_t *public_key, int *result)
Validates a public key.
void ecc_init(void)
Initializes ECC.
process_mutex_t * ecc_get_mutex(void)
Provides a mutex to be locked before proceeding with ecc_enable().
struct pt * ecc_get_protothread(void)
Provides the protothread that runs long-running ECC operations.
int ecc_enable(const ecc_curve_t *curve)
Sets up the ECC driver.
char ecc_generate_shared_secret(const uint8_t *public_key, const uint8_t *private_key, uint8_t *shared_secret, int *result)
Generates a shared secret as per ECDH.
char ecc_sign(const uint8_t *message_hash, const uint8_t *private_key, uint8_t *signature, int *result)
Generates an ECDSA signature for a message.
#define PT_THREAD(name_args)
Declaration of a protothread.
Header file for Process mutexes.
Parameters of an ECC curve in little-endian word order.
Structure of a process mutex.