Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ePacket key APIs

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.
 

Detailed Description

ePacket key API

Enumeration Type Documentation

◆ epacket_key_interface

#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 

◆ epacket_key_type

#include <infuse/epacket/keys.h>

Enumerator
EPACKET_KEY_NETWORK 
EPACKET_KEY_DEVICE 

Function Documentation

◆ epacket_key_delete()

int epacket_key_delete ( psa_key_id_t key_id)

#include <infuse/epacket/keys.h>

Delete a PSA key ID.

Parameters
key_idPSA key ID
Return values
0on success
-EINVALon invalid key

◆ epacket_key_derive()

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.

Parameters
base_keyPSA key to use as the base for derivation
infoOptional application/usage specific array
info_lenLength of info
saltKey derivation randomisation
output_key_idOutput key ID
Return values
0on success
-EINVALon invalid base_key
-EIOon error

◆ epacket_key_extension_network_add()

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.

Parameters
key_idPSA key ID for the network root key
network_idNetwork ID associated with the PSA key
Return values
0On success
-EINVALInvalid parameters
-EALREADYNetwork is already added
-ENOMEMNo more extension networks can be added

◆ epacket_key_id_get()

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.

Parameters
key_typeePacket key type (Combination of epacket_key_type and epacket_key_interface)
key_identifier3 byte key identifier
key_rotationRotation index of ePacket key
Returns
psa_key_id_t PSA key ID to use for operations, PSA_KEY_ID_NULL on error