Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
|
ePacket key API More...
Enumerations | |
enum | epacket_key_type { EPACKET_KEY_NETWORK = 0 , EPACKET_KEY_DEVICE = BIT(7) } |
enum | epacket_key_interface { EPACKET_KEY_INTERFACE_SERIAL = 0 , EPACKET_KEY_INTERFACE_UDP = 1 , EPACKET_KEY_INTERFACE_BT_ADV = 2 , EPACKET_KEY_INTERFACE_BT_GATT = 3 , EPACKET_KEY_INTERFACE_NUM , EPACKET_KEY_INTERFACE_MASK = 0x7F } |
Functions | |
int | epacket_key_derive (psa_key_id_t base_key, const uint8_t *info, uint8_t info_len, uint32_t salt, psa_key_id_t *output_key_id) |
HKDF-SHA256 based key derivation. | |
psa_key_id_t | epacket_key_id_get (uint8_t key_type, uint32_t key_identifier, uint32_t key_rotation) |
Get PSA key ID from ePacket key ID. | |
int | epacket_key_delete (psa_key_id_t key_id) |
Delete a PSA key ID. | |
int | epacket_key_extension_network_add (psa_key_id_t key_id, uint32_t network_id) |
Add another network to the key module. | |
ePacket key API
#include <infuse/epacket/keys.h>
Enumerator | |
---|---|
EPACKET_KEY_INTERFACE_SERIAL | |
EPACKET_KEY_INTERFACE_UDP | |
EPACKET_KEY_INTERFACE_BT_ADV | |
EPACKET_KEY_INTERFACE_BT_GATT | |
EPACKET_KEY_INTERFACE_NUM | |
EPACKET_KEY_INTERFACE_MASK |
enum epacket_key_type |
#include <infuse/epacket/keys.h>
Enumerator | |
---|---|
EPACKET_KEY_NETWORK | |
EPACKET_KEY_DEVICE |
int epacket_key_delete | ( | psa_key_id_t | key_id | ) |
#include <infuse/epacket/keys.h>
Delete a PSA key ID.
key_id | PSA key ID |
0 | on success |
-EINVAL | on invalid key |
int epacket_key_derive | ( | psa_key_id_t | base_key, |
const uint8_t * | info, | ||
uint8_t | info_len, | ||
uint32_t | salt, | ||
psa_key_id_t * | output_key_id ) |
#include <infuse/epacket/keys.h>
HKDF-SHA256 based key derivation.
Derived key lifetime is PSA_KEY_LIFETIME_VOLATILE
. Derived key is only valid for PSA_ALG_CHACHA20_POLY1305
.
base_key | PSA key to use as the base for derivation |
info | Optional application/usage specific array |
info_len | Length of info |
salt | Key derivation randomisation |
output_key_id | Output key ID |
0 | on success |
-EINVAL | on invalid base_key |
-EIO | on error |
int epacket_key_extension_network_add | ( | psa_key_id_t | key_id, |
uint32_t | network_id ) |
#include <infuse/epacket/keys.h>
Add another network to the key module.
key_id | PSA key ID for the network root key |
network_id | Network ID associated with the PSA key |
0 | On success |
-EINVAL | Invalid parameters |
-EALREADY | Network is already added |
-ENOMEM | No more extension networks can be added |
psa_key_id_t epacket_key_id_get | ( | uint8_t | key_type, |
uint32_t | key_identifier, | ||
uint32_t | key_rotation ) |
#include <infuse/epacket/keys.h>
Get PSA key ID from ePacket key ID.
key_type | ePacket key type (Combination of epacket_key_type and epacket_key_interface) |
key_identifier | 3 byte key identifier |
key_rotation | Rotation index of ePacket key |