psa_ecc.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 HAW Hamburg
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #include "psa/crypto.h"
27 #include "kernel_defines.h"
28 
35  uint8_t *priv_key_buffer, uint8_t *pub_key_buffer,
36  size_t *priv_key_buffer_length,
37  size_t *pub_key_buffer_length);
38 
45  psa_algorithm_t alg,
46  const uint8_t *key_buffer, size_t key_buffer_size,
47  const uint8_t *hash, size_t hash_length,
48  uint8_t *signature, size_t signature_size,
49  size_t *signature_length);
50 
57  psa_algorithm_t alg,
58  const uint8_t *key_buffer, size_t key_buffer_size,
59  const uint8_t *input, size_t input_length,
60  uint8_t *signature, size_t signature_size,
61  size_t *signature_length);
62 
69  psa_algorithm_t alg,
70  const uint8_t *key_buffer, size_t key_buffer_size,
71  const uint8_t *hash, size_t hash_length,
72  const uint8_t *signature, size_t signature_length);
73 
80  psa_algorithm_t alg,
81  const uint8_t *key_buffer, size_t key_buffer_size,
82  const uint8_t *input, size_t input_length,
83  const uint8_t *signature, size_t signature_length);
84 
91  uint8_t *priv_key_buffer, uint8_t *pub_key_buffer,
92  size_t *priv_key_buffer_length,
93  size_t *pub_key_buffer_length);
94 
98 psa_status_t psa_derive_ecc_p256r1_public_key( const uint8_t *priv_key_buffer, uint8_t *pub_key_buffer,
99  size_t priv_key_buffer_length,
100  size_t *pub_key_buffer_length);
101 
108  psa_algorithm_t alg,
109  const uint8_t *key_buffer, size_t key_buffer_size,
110  const uint8_t *hash, size_t hash_length,
111  uint8_t *signature, size_t signature_size,
112  size_t *signature_length);
113 
120  psa_algorithm_t alg,
121  const uint8_t *key_buffer, size_t key_buffer_size,
122  const uint8_t *input, size_t input_length,
123  uint8_t *signature, size_t signature_size,
124  size_t *signature_length);
125 
132  psa_algorithm_t alg,
133  const uint8_t *key_buffer, size_t key_buffer_size,
134  const uint8_t *hash, size_t hash_length,
135  const uint8_t *signature, size_t signature_length);
136 
143  psa_algorithm_t alg,
144  const uint8_t *key_buffer, size_t key_buffer_size,
145  const uint8_t *input, size_t input_length,
146  const uint8_t *signature, size_t signature_length);
147 
153 psa_status_t psa_generate_ecc_ed25519_key_pair( uint8_t *priv_key_buffer, uint8_t *pub_key_buffer,
154  size_t *priv_key_buffer_length,
155  size_t *pub_key_buffer_length);
156 
160 psa_status_t psa_derive_ecc_ed25519_public_key( const uint8_t *priv_key_buffer,
161  uint8_t *pub_key_buffer,
162  size_t priv_key_buffer_length,
163  size_t *pub_key_buffer_length);
164 
170 psa_status_t psa_ecc_ed25519_sign_message(const uint8_t *priv_key_buffer,
171  size_t priv_key_buffer_size,
172  const uint8_t *pub_key_buffer,
173  size_t pub_key_buffer_size,
174  const uint8_t *input, size_t input_length,
175  uint8_t *signature, size_t signature_size,
176  size_t *signature_length);
177 
183 psa_status_t psa_ecc_ed25519_verify_message(const uint8_t *key_buffer, size_t key_buffer_size,
184  const uint8_t *input, size_t input_length,
185  const uint8_t *signature, size_t signature_length);
186 
187 #ifdef __cplusplus
188 }
189 #endif
190 
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: algorithm.h:38
Function declarations for PSA Crypto.
psa_status_t psa_ecc_p192r1_sign_message(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *input, size_t input_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Low level wrapper function to call a driver for an ECC hash signature with a SECP 192 R1 key.
psa_status_t psa_ecc_p256r1_verify_message(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *input, size_t input_length, const uint8_t *signature, size_t signature_length)
Low level wrapper function to call a driver for an ECC hash verification with a SECP 256 R1 key.
psa_status_t psa_generate_ecc_p256r1_key_pair(const psa_key_attributes_t *attributes, uint8_t *priv_key_buffer, uint8_t *pub_key_buffer, size_t *priv_key_buffer_length, size_t *pub_key_buffer_length)
Low level wrapper function to call a driver for an ECC key generation with a SECP 192 R1 key.
psa_status_t psa_ecc_p256r1_sign_message(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *input, size_t input_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Low level wrapper function to call a driver for an ECC hash signature with a SECP 256 R1 key.
psa_status_t psa_generate_ecc_ed25519_key_pair(uint8_t *priv_key_buffer, uint8_t *pub_key_buffer, size_t *priv_key_buffer_length, size_t *pub_key_buffer_length)
Low level wrapper function to call a driver for an ECC key generation with an ed25519 key.
psa_status_t psa_derive_ecc_p256r1_public_key(const uint8_t *priv_key_buffer, uint8_t *pub_key_buffer, size_t priv_key_buffer_length, size_t *pub_key_buffer_length)
Low level wrapper function to call a driver for deriving an P256R1 public key from the private key.
psa_status_t psa_ecc_p192r1_verify_message(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *input, size_t input_length, const uint8_t *signature, size_t signature_length)
Low level wrapper function to call a driver for an ECC hash verification with a SECP 192 R1 key.
psa_status_t psa_generate_ecc_p192r1_key_pair(const psa_key_attributes_t *attributes, uint8_t *priv_key_buffer, uint8_t *pub_key_buffer, size_t *priv_key_buffer_length, size_t *pub_key_buffer_length)
Low level wrapper function to call a driver for an ECC key generation with a SECP 192 R1 key.
psa_status_t psa_ecc_p192r1_sign_hash(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Low level wrapper function to call a driver for an ECC hash signature with a SECP 192 R1 key.
psa_status_t psa_ecc_ed25519_sign_message(const uint8_t *priv_key_buffer, size_t priv_key_buffer_size, const uint8_t *pub_key_buffer, size_t pub_key_buffer_size, const uint8_t *input, size_t input_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Low level wrapper function to call a driver for an ECC hash signature with an ed25519 key.
psa_status_t psa_ecc_p256r1_sign_hash(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Low level wrapper function to call a driver for an ECC hash signature with a SECP 256 R1 key.
psa_status_t psa_ecc_p256r1_verify_hash(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length)
Low level wrapper function to call a driver for an ECC hash verification with a SECP 256 R1 key.
psa_status_t psa_ecc_ed25519_verify_message(const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *input, size_t input_length, const uint8_t *signature, size_t signature_length)
Low level wrapper function to call a driver for an ECC hash verification with a ed25519 key.
psa_status_t psa_ecc_p192r1_verify_hash(const psa_key_attributes_t *attributes, psa_algorithm_t alg, const uint8_t *key_buffer, size_t key_buffer_size, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length)
Low level wrapper function to call a driver for an ECC hash verification with a SECP 192 R1 key.
psa_status_t psa_derive_ecc_ed25519_public_key(const uint8_t *priv_key_buffer, uint8_t *pub_key_buffer, size_t priv_key_buffer_length, size_t *pub_key_buffer_length)
Low level wrapper function for deriving an ed25519 public key from the private key.
Common macros and compiler attributes/pragmas configuration.
int32_t psa_status_t
Status code type used for all PSA Certified APIs.
Definition: error.h:40
Structure storing key attributes.
Definition: attributes.h:51