1 /*
2  * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <service/crypto/client/cpp/protocol/packed-c/packedc_crypto_client.h>
8 #include <service/crypto/test/service/crypto_service_scenarios.h>
9 #include <protocols/rpc/common/packed-c/encoding.h>
10 #include <service_locator.h>
11 #include <CppUTest/TestHarness.h>
12 
13 /*
14  * Service-level tests that use the packed-c access protocol serialization
15  */
TEST_GROUP(CryptoServicePackedcTests)16 TEST_GROUP(CryptoServicePackedcTests)
17 {
18 	void setup()
19 	{
20 		m_rpc_session = NULL;
21 		m_crypto_service_context = NULL;
22 		m_scenarios = NULL;
23 
24 		service_locator_init();
25 
26 		m_crypto_service_context = service_locator_query("sn:trustedfirmware.org:crypto:0");
27 		CHECK_TRUE(m_crypto_service_context);
28 
29 		m_rpc_session = service_context_open(m_crypto_service_context);
30 		CHECK_TRUE(m_rpc_session);
31 
32 		m_scenarios = new crypto_service_scenarios(new packedc_crypto_client(m_rpc_session));
33 	}
34 
35 	void teardown()
36 	{
37 		delete m_scenarios;
38 		m_scenarios = NULL;
39 
40 		if (m_crypto_service_context) {
41 			if (m_rpc_session) {
42 				service_context_close(m_crypto_service_context, m_rpc_session);
43 				m_rpc_session = NULL;
44 			}
45 
46 			service_context_relinquish(m_crypto_service_context);
47 			m_crypto_service_context = NULL;
48 		}
49 	}
50 
51 	struct rpc_caller_session *m_rpc_session;
52 	struct service_context *m_crypto_service_context;
53 	crypto_service_scenarios *m_scenarios;
54 };
55 
TEST(CryptoServicePackedcTests,generateVolatileKeys)56 TEST(CryptoServicePackedcTests, generateVolatileKeys)
57 {
58 	m_scenarios->generateVolatileKeys();
59 }
60 
TEST(CryptoServicePackedcTests,generatePersistentKeys)61 TEST(CryptoServicePackedcTests, generatePersistentKeys)
62 {
63 	m_scenarios->generatePersistentKeys();
64 }
65 
TEST(CryptoServicePackedcTests,copyKey)66 TEST(CryptoServicePackedcTests, copyKey)
67 {
68 	m_scenarios->copyKey();
69 }
70 
TEST(CryptoServicePackedcTests,purgeKey)71 TEST(CryptoServicePackedcTests, purgeKey)
72 {
73 	m_scenarios->purgeKey();
74 }
75 
TEST(CryptoServicePackedcTests,exportPublicKey)76 TEST(CryptoServicePackedcTests, exportPublicKey)
77 {
78 	m_scenarios->exportPublicKey();
79 }
80 
TEST(CryptoServicePackedcTests,exportAndImportKeyPair)81 TEST(CryptoServicePackedcTests, exportAndImportKeyPair)
82 {
83 	m_scenarios->exportAndImportKeyPair();
84 }
85 
TEST(CryptoServicePackedcTests,signAndVerifyHash)86 TEST(CryptoServicePackedcTests, signAndVerifyHash)
87 {
88 	m_scenarios->signAndVerifyHash();
89 }
90 
TEST(CryptoServicePackedcTests,signAndVerifyMessage)91 TEST(CryptoServicePackedcTests, signAndVerifyMessage)
92 {
93 	m_scenarios->signAndVerifyMessage();
94 }
95 
TEST(CryptoServicePackedcTests,signAndVerifyEat)96 TEST(CryptoServicePackedcTests, signAndVerifyEat)
97 {
98 	m_scenarios->signAndVerifyEat();
99 }
100 
TEST(CryptoServicePackedcTests,asymEncryptDecrypt)101 TEST(CryptoServicePackedcTests, asymEncryptDecrypt)
102 {
103 	m_scenarios->asymEncryptDecrypt();
104 }
105 
TEST(CryptoServicePackedcTests,asymEncryptDecryptWithSalt)106 TEST(CryptoServicePackedcTests, asymEncryptDecryptWithSalt)
107 {
108 	m_scenarios->asymEncryptDecryptWithSalt();
109 }
110 
TEST(CryptoServicePackedcTests,generateRandomNumbers)111 TEST(CryptoServicePackedcTests, generateRandomNumbers)
112 {
113 	m_scenarios->generateRandomNumbers();
114 }
115 
TEST(CryptoServicePackedcTests,verifyPkcs7Signature)116 TEST(CryptoServicePackedcTests, verifyPkcs7Signature)
117 {
118 	m_scenarios->verifypkcs7signature();
119 }
120 
TEST(CryptoServicePackedcTests,getUefiPrivAuthVarFingerprint)121 TEST(CryptoServicePackedcTests, getUefiPrivAuthVarFingerprint)
122 {
123 	m_scenarios->getUefiPrivAuthVarFingerprint();
124 }
125