1 /*
2 * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6 #include <psa/crypto.h>
7 #include <protocols/service/crypto/packed-c/key_attributes.h>
8 #include <CppUTest/TestHarness.h>
9
10 /*
11 * Check alignment of Crypto service packed-c protocol definitions for
12 * alignment with PSA C API definitions.
13 */
TEST_GROUP(CryptoProtocolPackedcChecks)14 TEST_GROUP(CryptoProtocolPackedcChecks)
15 {
16
17 };
18
TEST(CryptoProtocolPackedcChecks,checkKeyType)19 TEST(CryptoProtocolPackedcChecks, checkKeyType)
20 {
21 /*
22 * Check alignment between PSA and protobuf key type definitions
23 */
24 CHECK_EQUAL(PSA_KEY_TYPE_RAW_DATA, TS_CRYPTO_KEY_TYPE_RAW_DATA);
25 CHECK_EQUAL(PSA_KEY_TYPE_HMAC, TS_CRYPTO_KEY_TYPE_HMAC);
26 CHECK_EQUAL(PSA_KEY_TYPE_DERIVE, TS_CRYPTO_KEY_TYPE_DERIVE);
27 CHECK_EQUAL(PSA_KEY_TYPE_AES, TS_CRYPTO_KEY_TYPE_AES);
28 CHECK_EQUAL(PSA_KEY_TYPE_DES, TS_CRYPTO_KEY_TYPE_DES);
29 CHECK_EQUAL(PSA_KEY_TYPE_CAMELLIA, TS_CRYPTO_KEY_TYPE_CAMELLIA);
30 CHECK_EQUAL(PSA_KEY_TYPE_CHACHA20, TS_CRYPTO_KEY_TYPE_CHACHA20);
31 CHECK_EQUAL(PSA_KEY_TYPE_RSA_PUBLIC_KEY, TS_CRYPTO_KEY_TYPE_RSA_PUBLIC_KEY);
32 CHECK_EQUAL(PSA_KEY_TYPE_RSA_KEY_PAIR, TS_CRYPTO_KEY_TYPE_RSA_KEY_PAIR);
33 }
34
TEST(CryptoProtocolPackedcChecks,checkEccCurve)35 TEST(CryptoProtocolPackedcChecks, checkEccCurve)
36 {
37 /*
38 * ECC curves for use with ECC Key types
39 */
40 CHECK_EQUAL(PSA_ECC_FAMILY_SECP_K1, TS_CRYPTO_ECC_FAMILY_SECP_K1);
41 CHECK_EQUAL(PSA_ECC_FAMILY_SECP_R1, TS_CRYPTO_ECC_FAMILY_SECP_R1);
42 CHECK_EQUAL(PSA_ECC_FAMILY_SECP_R2, TS_CRYPTO_ECC_FAMILY_SECP_R2);
43 CHECK_EQUAL(PSA_ECC_FAMILY_SECT_K1, TS_CRYPTO_ECC_FAMILY_SECT_K1);
44 CHECK_EQUAL(PSA_ECC_FAMILY_SECT_R1, TS_CRYPTO_ECC_FAMILY_SECT_R1);
45 CHECK_EQUAL(PSA_ECC_FAMILY_SECT_R2, TS_CRYPTO_ECC_FAMILY_SECT_R2);
46 CHECK_EQUAL(PSA_ECC_FAMILY_BRAINPOOL_P_R1, TS_CRYPTO_ECC_FAMILY_BRAINPOOL_P_R1);
47 CHECK_EQUAL(PSA_ECC_FAMILY_MONTGOMERY, TS_CRYPTO_ECC_FAMILY_MONTGOMERY);
48 }
49
TEST(CryptoProtocolPackedcChecks,checkDhGroup)50 TEST(CryptoProtocolPackedcChecks, checkDhGroup)
51 {
52 /*
53 * Diffie-Hellman groups for use with DH key types
54 */
55 CHECK_EQUAL(PSA_DH_FAMILY_RFC7919, TS_CRYPTO_DH_FAMILY_RFC7919);
56 }
57
TEST(CryptoProtocolPackedcChecks,checkAlg)58 TEST(CryptoProtocolPackedcChecks, checkAlg)
59 {
60 /*
61 * Crypto algorithms
62 */
63 CHECK_EQUAL(PSA_ALG_MD5, TS_CRYPTO_ALG_MD5);
64 CHECK_EQUAL(PSA_ALG_RIPEMD160, TS_CRYPTO_ALG_RIPEMD160);
65 CHECK_EQUAL(PSA_ALG_SHA_1, TS_CRYPTO_ALG_SHA_1);
66 CHECK_EQUAL(PSA_ALG_SHA_224, TS_CRYPTO_ALG_SHA_224);
67 CHECK_EQUAL(PSA_ALG_SHA_256, TS_CRYPTO_ALG_SHA_256);
68 CHECK_EQUAL(PSA_ALG_SHA_384, TS_CRYPTO_ALG_SHA_384);
69 CHECK_EQUAL(PSA_ALG_SHA_512, TS_CRYPTO_ALG_SHA_512);
70 CHECK_EQUAL(PSA_ALG_SHA_512_224, TS_CRYPTO_ALG_SHA_512_224);
71 CHECK_EQUAL(PSA_ALG_SHA_512_256, TS_CRYPTO_ALG_SHA_512_256);
72 CHECK_EQUAL(PSA_ALG_SHA3_224, TS_CRYPTO_ALG_SHA3_224);
73 CHECK_EQUAL(PSA_ALG_SHA3_256, TS_CRYPTO_ALG_SHA3_256);
74 CHECK_EQUAL(PSA_ALG_SHA3_384, TS_CRYPTO_ALG_SHA3_384);
75 CHECK_EQUAL(PSA_ALG_SHA3_512, TS_CRYPTO_ALG_SHA3_512);
76 CHECK_EQUAL(PSA_ALG_CBC_MAC, TS_CRYPTO_ALG_CBC_MAC);
77 CHECK_EQUAL(PSA_ALG_CMAC, TS_CRYPTO_ALG_CMAC);
78 CHECK_EQUAL(PSA_ALG_STREAM_CIPHER, TS_CRYPTO_ALG_STREAM_CIPHER);
79 CHECK_EQUAL(PSA_ALG_CTR, TS_CRYPTO_ALG_CTR);
80 CHECK_EQUAL(PSA_ALG_CFB, TS_CRYPTO_ALG_CFB);
81 CHECK_EQUAL(PSA_ALG_OFB, TS_CRYPTO_ALG_OFB);
82 CHECK_EQUAL(PSA_ALG_XTS, TS_CRYPTO_ALG_XTS);
83 CHECK_EQUAL(PSA_ALG_CBC_NO_PADDING, TS_CRYPTO_ALG_CBC_NO_PADDING);
84 CHECK_EQUAL(PSA_ALG_CBC_PKCS7, TS_CRYPTO_ALG_CBC_PKCS7);
85 CHECK_EQUAL(PSA_ALG_CCM, TS_CRYPTO_ALG_CCM);
86 CHECK_EQUAL(PSA_ALG_GCM, TS_CRYPTO_ALG_GCM);
87 CHECK_EQUAL(PSA_ALG_CHACHA20_POLY1305, TS_CRYPTO_ALG_CHACHA20_POLY1305);
88 CHECK_EQUAL(PSA_ALG_RSA_PKCS1V15_CRYPT, TS_CRYPTO_ALG_RSA_PKCS1V15_CRYPT);
89 CHECK_EQUAL(PSA_ALG_FFDH, TS_CRYPTO_ALG_FFDH);
90 CHECK_EQUAL(PSA_ALG_ECDH, TS_CRYPTO_ALG_ECDH);
91 }
92
TEST(CryptoProtocolPackedcChecks,checkKeyLifetime)93 TEST(CryptoProtocolPackedcChecks, checkKeyLifetime)
94 {
95 /*
96 * Key lifetime
97 */
98 CHECK_EQUAL(PSA_KEY_LIFETIME_VOLATILE, TS_CRYPTO_KEY_LIFETIME_VOLATILE);
99 CHECK_EQUAL(PSA_KEY_LIFETIME_PERSISTENT, TS_CRYPTO_KEY_LIFETIME_PERSISTENT);
100 }
101
TEST(CryptoProtocolPackedcChecks,checkKeyUsage)102 TEST(CryptoProtocolPackedcChecks, checkKeyUsage)
103 {
104 /*
105 * Key usage constraints
106 */
107 CHECK_EQUAL(PSA_KEY_USAGE_EXPORT, TS_CRYPTO_KEY_USAGE_EXPORT);
108 CHECK_EQUAL(PSA_KEY_USAGE_COPY, TS_CRYPTO_KEY_USAGE_COPY);
109 CHECK_EQUAL(PSA_KEY_USAGE_ENCRYPT, TS_CRYPTO_KEY_USAGE_ENCRYPT);
110 CHECK_EQUAL(PSA_KEY_USAGE_DECRYPT, TS_CRYPTO_KEY_USAGE_DECRYPT);
111 CHECK_EQUAL(PSA_KEY_USAGE_SIGN_HASH, TS_CRYPTO_KEY_USAGE_SIGN_HASH);
112 CHECK_EQUAL(PSA_KEY_USAGE_VERIFY_HASH, TS_CRYPTO_KEY_USAGE_VERIFY_HASH);
113 CHECK_EQUAL(PSA_KEY_USAGE_DERIVE, TS_CRYPTO_KEY_USAGE_DERIVE);
114 }
115