blob: 9909cf92d85b029dbc53fd1e3235bb22919fbf8f [file] [log] [blame]
Antonio de Angelis377a1552018-11-22 17:02:40 +00001/*
2 * Copyright (c) 2019, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8/**
9 * \file tfm_crypto_struct.h
10 *
11 * \brief Similarly to what psa_crypto_struct.h defines for
12 * the frontend, this header provides Crypto service
13 * specific definitions for operation contexts.
Antonio de Angelis377a1552018-11-22 17:02:40 +000014 */
15
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010016#include "psa_crypto.h"
17#include "crypto_engine.h"
18
Antonio de Angelis377a1552018-11-22 17:02:40 +000019#ifndef __TFM_CRYPTO_STRUCT_H__
20#define __TFM_CRYPTO_STRUCT_H__
21
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010022struct tfm_hash_operation_s {
Antonio de Angelis377a1552018-11-22 17:02:40 +000023
Antonio de Angelis377a1552018-11-22 17:02:40 +000024 psa_algorithm_t alg;
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010025 union engine_hash_context engine_ctx;
Antonio de Angelis377a1552018-11-22 17:02:40 +000026};
27
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010028struct tfm_hmac_internal_data_s {
29
30 /* The hash operation. */
31 psa_hash_operation_t hash_operation;
Antonio de Angelis377a1552018-11-22 17:02:40 +000032 /* The HMAC part of the context. */
33 uint8_t opad[PSA_HMAC_MAX_HASH_BLOCK_SIZE];
34};
35
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010036struct tfm_mac_operation_s {
37
Antonio de Angelis377a1552018-11-22 17:02:40 +000038 psa_algorithm_t alg;
39 uint8_t key_set;
40 uint8_t iv_required;
41 uint8_t iv_set;
42 uint8_t has_input;
43 uint8_t key_usage_sign;
44 uint8_t key_usage_verify;
45 uint8_t mac_size;
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010046 union {
Antonio de Angelis377a1552018-11-22 17:02:40 +000047 struct tfm_hmac_internal_data_s hmac;
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010048 union engine_cmac_context cmac;
Antonio de Angelis377a1552018-11-22 17:02:40 +000049 } ctx;
50};
51
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010052#define TFM_CIPHER_IV_MAX_SIZE 16
Antonio de Angelis377a1552018-11-22 17:02:40 +000053
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010054struct tfm_cipher_operation_s {
55
Antonio de Angelis377a1552018-11-22 17:02:40 +000056 psa_algorithm_t alg;
57 uint8_t key_set;
58 uint8_t iv_required;
59 uint8_t iv_set;
60 uint8_t iv_size;
61 uint8_t block_size;
62 psa_key_slot_t key;
Antonio de Angeliscf85ba22018-10-09 13:29:40 +010063 uint8_t cipher_mode;
64 union engine_cipher_context engine_ctx;
Antonio de Angelis377a1552018-11-22 17:02:40 +000065};
66#endif /* __TFM_CRYPTO_STRUCT_H__ */