Loading...
Searching...
No Matches
psa_crypto_operation_encoder.h File Reference

Macros used to map PSA algorithms, key types and key sizes to specific key types and operations to call the corresponding driver functions. More...

Detailed Description

Macros used to map PSA algorithms, key types and key sizes to specific key types and operations to call the corresponding driver functions.

Note
Currently this only supports a small number of operations. It should be expanded as needed as this implementation increases support for more operations.
Author
Lena Boeckmann lena..nosp@m.boec.nosp@m.kmann.nosp@m.@haw.nosp@m.-hamb.nosp@m.urg..nosp@m.de

Definition in file psa_crypto_operation_encoder.h.

+ Include dependency graph for psa_crypto_operation_encoder.h:

Go to the source code of this file.

#define PSA_INVALID_OPERATION   (0xFF)
 Unknown or invalid operation.
 
#define PSA_ENCODE_ECC_KEY_TYPE_SECPR1(bits)
 Combine a SECP_R1 key type with a given key size (private or public key).
 
#define PSA_ENCODE_ECC_KEY_TYPE_EDWARDS(bits)
 Combine a Twisted Edwards key type with a given key size (private or public key).
 
#define PSA_ENCODE_ECC_KEY_TYPE(bits, curve)
 Map an ECC key to a given curve according to its type and size.
 
#define GET_CIPHER_OPERATION_128(alg, type)
 Combine algorithm, and key type with a key size of 128 bits.
 
#define GET_CIPHER_OPERATION_192(alg, type)
 Combine algorithm, and key type with a key size of 192 bits.
 
#define GET_CIPHER_OPERATION_256(alg, type)
 Combine algorithm, and key type with a key size of 256 bits.
 
#define PSA_ENCODE_CIPHER_OPERATION(alg, bits, type)
 Map algorithm, key size and type to a specific operation.
 
enum  psa_cipher_op_t { PSA_CBC_NO_PAD_AES_128 , PSA_CBC_NO_PAD_AES_192 , PSA_CBC_NO_PAD_AES_256 , PSA_CBC_PKCS7_AES_256 }
 Enum encoding available cipher operations. More...
 
enum  psa_asym_key_t {
  PSA_ECC_P160_K1 , PSA_ECC_P160_R1 , PSA_ECC_P160_R2 , PSA_ECC_P192_K1 ,
  PSA_ECC_P192_R1 , PSA_ECC_P224_K1 , PSA_ECC_P224_R1 , PSA_ECC_P256_K1 ,
  PSA_ECC_P256_R1 , PSA_ECC_P384_R1 , PSA_ECC_P521_R1 , PSA_ECC_FRP ,
  PSA_ECC_ED25519
}
 Enum encoding available asymmetric key types and sizes. More...
 

Macro Definition Documentation

◆ GET_CIPHER_OPERATION_128

#define GET_CIPHER_OPERATION_128 (   alg,
  type 
)
Value:
(((alg == PSA_ALG_CBC_NO_PADDING) && (type == PSA_KEY_TYPE_AES)) ? PSA_CBC_NO_PAD_AES_128 : \
#define PSA_KEY_TYPE_AES
Key for a cipher, AEAD or MAC algorithm based on the AES block cipher.
#define PSA_ALG_CBC_NO_PADDING
The Cipher Block Chaining (CBC) mode of a block cipher, with no padding.
#define PSA_INVALID_OPERATION
Unknown or invalid operation.

Combine algorithm, and key type with a key size of 128 bits.

Parameters
algAlgorithm of type psa_algorithm_t.
typeKey type of type psa_key_type_t
Returns
psa_cipher_op_t
PSA_INVALID_OPERATION alg, and type are incompatible with the key size

Definition at line 120 of file psa_crypto_operation_encoder.h.

◆ GET_CIPHER_OPERATION_192

#define GET_CIPHER_OPERATION_192 (   alg,
  type 
)
Value:
(((alg == PSA_ALG_CBC_NO_PADDING) && (type == PSA_KEY_TYPE_AES)) ? PSA_CBC_NO_PAD_AES_192 : \

Combine algorithm, and key type with a key size of 192 bits.

Parameters
algAlgorithm of type psa_algorithm_t.
typeKey type of type psa_key_type_t
Returns
psa_cipher_op_t
PSA_INVALID_OPERATION alg, and type are incompatible with the key size

Definition at line 133 of file psa_crypto_operation_encoder.h.

◆ GET_CIPHER_OPERATION_256

#define GET_CIPHER_OPERATION_256 (   alg,
  type 
)
Value:
(((alg == PSA_ALG_CBC_NO_PADDING) && (type == PSA_KEY_TYPE_AES)) ? PSA_CBC_NO_PAD_AES_256 : \
((alg == PSA_ALG_CBC_PKCS7) && (type == PSA_KEY_TYPE_AES)) ? PSA_CBC_PKCS7_AES_256 : \
#define PSA_ALG_CBC_PKCS7
The Cipher Block Chaining (CBC) mode of a block cipher, with PKCS#7 padding.

Combine algorithm, and key type with a key size of 256 bits.

Parameters
algAlgorithm of type psa_algorithm_t.
typeKey type of type psa_key_type_t
Returns
psa_cipher_op_t
PSA_INVALID_OPERATION alg, and type are incompatible with the key size

Definition at line 146 of file psa_crypto_operation_encoder.h.

◆ PSA_ENCODE_CIPHER_OPERATION

#define PSA_ENCODE_CIPHER_OPERATION (   alg,
  bits,
  type 
)
Value:
((bits == 128) ? GET_CIPHER_OPERATION_128(alg, type) : \
(bits == 192) ? GET_CIPHER_OPERATION_192(alg, type) : \
(bits == 256) ? GET_CIPHER_OPERATION_256(alg, type) : \
#define GET_CIPHER_OPERATION_256(alg, type)
Combine algorithm, and key type with a key size of 256 bits.
#define GET_CIPHER_OPERATION_192(alg, type)
Combine algorithm, and key type with a key size of 192 bits.
#define GET_CIPHER_OPERATION_128(alg, type)
Combine algorithm, and key type with a key size of 128 bits.

Map algorithm, key size and type to a specific operation.

Parameters
algAlgorithm of type psa_algorithm_t.
bitsSize of the used key of type psa_key_bits_t
typeKey type of type psa_key_type_t
Returns
psa_cipher_op_t
PSA_INVALID_OPERATION alg, bits and type are not compatible

Definition at line 161 of file psa_crypto_operation_encoder.h.

◆ PSA_ENCODE_ECC_KEY_TYPE

#define PSA_ENCODE_ECC_KEY_TYPE (   bits,
  curve 
)
Value:
#define PSA_ECC_FAMILY_SECP_R1
SEC random curves over prime fields.
#define PSA_ECC_FAMILY_TWISTED_EDWARDS
Twisted Edwards curves.
#define PSA_ENCODE_ECC_KEY_TYPE_SECPR1(bits)
Combine a SECP_R1 key type with a given key size (private or public key).
#define PSA_ENCODE_ECC_KEY_TYPE_EDWARDS(bits)
Combine a Twisted Edwards key type with a given key size (private or public key).

Map an ECC key to a given curve according to its type and size.

Parameters
bitsKey size of type psa_key_bits_t
curveMust be a curve of type psa_ecc_family_t
Returns
psa_asym_key_t
PSA_INVALID_OPERATION curve and bits are incompatible

Definition at line 106 of file psa_crypto_operation_encoder.h.

◆ PSA_ENCODE_ECC_KEY_TYPE_EDWARDS

#define PSA_ENCODE_ECC_KEY_TYPE_EDWARDS (   bits)
Value:
((bits == 255) || (bits == 256) ? PSA_ECC_ED25519 : \

Combine a Twisted Edwards key type with a given key size (private or public key).

Parameters
bitsKey size of type psa_key_bits_t
Returns
psa_asym_key_t
PSA_INVALID_OPERATION bits is not compatible with Twisted Edwards curves

Definition at line 93 of file psa_crypto_operation_encoder.h.

◆ PSA_ENCODE_ECC_KEY_TYPE_SECPR1

#define PSA_ENCODE_ECC_KEY_TYPE_SECPR1 (   bits)
Value:
((bits == 256) || (bits == 520) ? PSA_ECC_P256_R1 : \
(bits == 192) || (bits == 392) ? PSA_ECC_P192_R1 : \

Combine a SECP_R1 key type with a given key size (private or public key).

Parameters
bitsKey size of type psa_key_bits_t
Returns
psa_asym_key_t
PSA_INVALID_OPERATION bits is not compatible with SECP_R1 curves

Definition at line 80 of file psa_crypto_operation_encoder.h.

◆ PSA_INVALID_OPERATION

#define PSA_INVALID_OPERATION   (0xFF)

Unknown or invalid operation.

Definition at line 37 of file psa_crypto_operation_encoder.h.

Enumeration Type Documentation

◆ psa_asym_key_t

Enum encoding available asymmetric key types and sizes.

To be expanded with the development of this implementation.

Definition at line 56 of file psa_crypto_operation_encoder.h.

◆ psa_cipher_op_t

Enum encoding available cipher operations.

To be expanded with the development of this implementation.

Definition at line 44 of file psa_crypto_operation_encoder.h.