SharkSSL C/C++ Reference
TLS, cryptography, certificates, and PSA integration
SharkSslPSADriver.h
Go to the documentation of this file.
1
38#ifndef SHARKSSL_PSA_DRIVER_H
39#define SHARKSSL_PSA_DRIVER_H
40
41#include "psa/crypto.h"
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47#define SHARKSSL_PSA_DRIVER_LOCATION_VENDOR_MIN ((psa_key_location_t)0x800000)
48#define SHARKSSL_PSA_DRIVER_LOCATION_VENDOR_MAX ((psa_key_location_t)0xffffff)
49#define SHARKSSL_PSA_DRIVER_HANDLE_NULL ((uint64_t)0)
50#define SHARKSSL_PSA_DRIVER_OPERATION_HANDLE_NULL ((uint64_t)0)
51#define SHARKSSL_PSA_DRIVER_MAX_LOCATIONS 4
52
102{
103 void *context;
105 const uint8_t *data, uint64_t *handle, size_t length);
107 uint64_t *handle);
108 psa_status_t (*destroy_key)(void *context, uint64_t handle);
110 const uint8_t *input, uint8_t *mac, size_t *mac_length,
111 uint64_t handle, psa_algorithm_t alg,
112 size_t input_length, size_t mac_size);
114 uint64_t key_handle, psa_algorithm_t alg,
115 psa_key_usage_t usage, uint64_t *operation_handle);
116 psa_status_t (*mac_update)(void *context, uint64_t operation_handle,
117 const uint8_t *input, size_t input_length);
118 psa_status_t (*mac_sign_finish)(void *context, uint64_t operation_handle,
119 uint8_t *mac, size_t *mac_length, size_t mac_size);
120 psa_status_t (*mac_verify_finish)(void *context, uint64_t operation_handle,
121 const uint8_t *mac, size_t mac_length);
122 psa_status_t (*mac_abort)(void *context, uint64_t operation_handle);
123 psa_status_t (*copy_key)(void *context, const psa_key_attributes_t *source_attributes,
124 uint64_t source_handle, const psa_key_attributes_t *target_attributes,
125 uint64_t *target_handle);
127 const uint8_t *label, size_t label_length,
128 uint64_t *handle);
134 uint64_t handle, psa_algorithm_t alg, uint32_t cost,
135 const uint8_t *password, size_t password_length,
136 const uint8_t *salt_before, size_t salt_before_length,
137 const uint8_t *salt_after, size_t salt_after_length,
138 uint8_t block_index, uint8_t *output,
139 size_t *output_length, size_t output_size);
141
151
152#ifdef __cplusplus
153}
154#endif
155#endif
psa_status_t SharkSslPSAKeyDriver_set(const SharkSslPSAKeyDriver *o, psa_key_location_t location)
Register or replace one location; pass NULL to unregister it.
struct SharkSslPSAKeyDriver SharkSslPSAKeyDriver
Optional opaque-key driver for volatile HMAC, PASSWORD and PEPPER keys.
See Choose a SharkSSL API for build scope and the owning API layer.
int32_t psa_status_t
SharkSSL PSA Crypto API 1.4.1/1.5.0 configurable subset.
Definition: crypto.h:57
uint32_t psa_key_location_t
Definition: crypto.h:63
uint32_t psa_key_usage_t
Definition: crypto.h:64
uint32_t psa_algorithm_t
Definition: crypto.h:58
Optional opaque-key driver for volatile HMAC, PASSWORD and PEPPER keys.
Definition: SharkSslPSADriver.h:102
psa_status_t(* mac_verify_finish)(void *context, uint64_t operation_handle, const uint8_t *mac, size_t mac_length)
Definition: SharkSslPSADriver.h:120
psa_status_t(* mac_setup)(void *context, const psa_key_attributes_t *attributes, uint64_t key_handle, psa_algorithm_t alg, psa_key_usage_t usage, uint64_t *operation_handle)
Definition: SharkSslPSADriver.h:113
psa_status_t(* mac_compute)(void *context, const psa_key_attributes_t *attributes, const uint8_t *input, uint8_t *mac, size_t *mac_length, uint64_t handle, psa_algorithm_t alg, size_t input_length, size_t mac_size)
Definition: SharkSslPSADriver.h:109
psa_status_t(* mac_sign_finish)(void *context, uint64_t operation_handle, uint8_t *mac, size_t *mac_length, size_t mac_size)
Definition: SharkSslPSADriver.h:118
psa_status_t(* import_key)(void *context, const psa_key_attributes_t *attributes, const uint8_t *data, uint64_t *handle, size_t length)
Definition: SharkSslPSADriver.h:104
psa_status_t(* mac_update)(void *context, uint64_t operation_handle, const uint8_t *input, size_t input_length)
Definition: SharkSslPSADriver.h:116
void * context
Definition: SharkSslPSADriver.h:103
psa_status_t(* generate_key)(void *context, const psa_key_attributes_t *attributes, uint64_t *handle)
Definition: SharkSslPSADriver.h:106
psa_status_t(* pbkdf2_block)(void *context, const psa_key_attributes_t *attributes, uint64_t handle, psa_algorithm_t alg, uint32_t cost, const uint8_t *password, size_t password_length, const uint8_t *salt_before, size_t salt_before_length, const uint8_t *salt_after, size_t salt_after_length, uint8_t block_index, uint8_t *output, size_t *output_length, size_t output_size)
Compute one complete PBKDF2 block without exposing an opaque PASSWORD or PEPPER.
Definition: SharkSslPSADriver.h:133
psa_status_t(* copy_key)(void *context, const psa_key_attributes_t *source_attributes, uint64_t source_handle, const psa_key_attributes_t *target_attributes, uint64_t *target_handle)
Definition: SharkSslPSADriver.h:123
psa_status_t(* mac_abort)(void *context, uint64_t operation_handle)
Definition: SharkSslPSADriver.h:122
psa_status_t(* attach_key)(void *context, const psa_key_attributes_t *attributes, const uint8_t *label, size_t label_length, uint64_t *handle)
Definition: SharkSslPSADriver.h:126
psa_status_t(* destroy_key)(void *context, uint64_t handle)
Definition: SharkSslPSADriver.h:108
Attributes are value objects; setters do not allocate resources.
Definition: crypto.h:509