blob: a982230733819c3ea1b0cd66407ea86b9d947960 [file] [log] [blame]
Maulik Patel5204dc02023-11-08 08:36:31 +00001/*
2 * Copyright (c) 2020-2023, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include "adac_crypto_psa.h"
9#include "psa_adac_debug.h"
10
11psa_status_t psa_adac_crypto_init(void)
12{
13 psa_status_t r = psa_crypto_init();
14 if (r == PSA_SUCCESS) {
15 PSA_ADAC_LOG_INFO("psa-crypto", "PSA Crypto API Initialized\n");
16 } else {
17 PSA_ADAC_LOG_ERR("psa-crypto", "PSA Crypto API Initialization failure => %d\n", r);
18 }
19
20 return r;
21}
22
23psa_status_t psa_adac_generate_challenge(uint8_t *output, size_t output_size)
24{
25 return psa_generate_random(output, output_size);
26}
27
28psa_status_t psa_adac_verify_vendor(uint8_t key_type,
29 uint8_t *key,
30 size_t key_size,
31 psa_algorithm_t hash_algo,
32 const uint8_t *inputs[],
33 size_t input_sizes[],
34 size_t input_count,
35 psa_algorithm_t sig_algo,
36 uint8_t *sig,
37 size_t sig_size)
38{
39 psa_status_t ret = PSA_ERROR_NOT_SUPPORTED;
40#if (defined(PSA_ADAC_CMAC) || defined(PSA_ADAC_HMAC))
41 if ((key_type == CMAC_AES) || (key_type == HMAC_SHA256)) {
42 ret = PSA_SUCCESS;
43#if defined(PSA_ADAC_HMAC)
44 if ((key_type == HMAC_SHA256) &&
45 ((sig_algo != HMAC_SIGN_ALGORITHM) ||
46 (hash_algo != HMAC_HASH_ALGORITHM))) {
47 ret = PSA_ERROR_INVALID_ARGUMENT;
48 }
49#endif /* PSA_ADAC_HMAC */
50#if defined(PSA_ADAC_CMAC)
51 if ((key_type == CMAC_AES) &&
52 ((sig_algo != CMAC_SIGN_ALGORITHM) ||
53 (hash_algo != CMAC_HASH_ALGORITHM))) {
54 ret = PSA_ERROR_INVALID_ARGUMENT;
55 }
56#endif /* PSA_ADAC_CMAC */
57 if (PSA_SUCCESS == ret) {
58 ret = psa_adac_verify_mac(key_type,
59 key,
60 key_size,
61 inputs,
62 input_sizes,
63 input_count,
64 sig_algo,
65 sig,
66 sig_size);
67 }
68 }
69#endif /* (defined(PSA_ADAC_CMAC) || defined(PSA_ADAC_HMAC)) */
70
71 // TODO: Add support for extra algorithms
72 return ret;
73}