2 * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd All Rights Reserved
4 * Contact: Bumjin Im <bj.im@samsung.com>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License
20 * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
26 #include <condition_variable>
29 #include <ckm/ckm-manager-async.h>
30 #include <ckm/ckm-manager.h>
31 #include <ckm/ckm-control.h>
32 #include <ckm/ckm-raw-buffer.h>
34 #include <dpl/test/test_runner.h>
35 #include <dpl/test/test_runner_child.h>
36 #include <dpl/log/log.h>
38 #include <tests_common.h>
39 #include <ckm-common.h>
46 const char* TEST_LABEL = "test_label";
48 class MyObserver: public ManagerAsync::Observer
52 m_finished(false), m_error(0)
56 void ReceivedError(int error)
58 LogError("Received error: " << error);
64 void ReceivedSaveKey() { Succeeded(); }
65 void ReceivedSaveCertificate() { Succeeded(); }
66 void ReceivedSaveData() { Succeeded(); }
68 void ReceivedRemovedKey() { Succeeded(); }
69 void ReceivedRemovedCertificate() { Succeeded(); }
70 void ReceivedRemovedData() { Succeeded(); }
72 void ReceivedKey(Key &&) { Succeeded(); }
73 void ReceivedCertificate(Certificate &&) { Succeeded(); }
74 void ReceivedData(RawBuffer &&) { Succeeded(); }
76 void ReceivedKeyAliasVector(AliasVector && av) { m_aliases = move(av); Succeeded(); }
77 void ReceivedCertificateAliasVector(AliasVector && av) { m_aliases = move(av); Succeeded(); }
78 void ReceivedDataAliasVector(AliasVector && av) { m_aliases = move(av); Succeeded(); }
80 void ReceivedCreateKeyPairRSA() { Succeeded(); }
81 void ReceivedCreateKeyPairDSA() { Succeeded(); }
82 void ReceivedCreateKeyPairECDSA() { Succeeded(); }
84 void ReceivedGetCertificateChain(CertificateShPtrVector && chain)
85 { m_certChain = move(chain); Succeeded(); }
87 void ReceivedCreateSignature(RawBuffer && buffer) { m_signed = move(buffer); Succeeded(); }
88 void ReceivedVerifySignature() { Succeeded(); }
90 void ReceivedOCSPCheck(int status) { m_ocspStatus = status; Succeeded(); }
92 void ReceivedAllowAccess() { Succeeded(); }
93 void ReceivedDenyAccess() { Succeeded(); }
95 void WaitForResponse()
97 unique_lock < mutex > lock(m_mutex);
99 m_cv.wait(lock, [this] {return m_finished;});
104 AliasVector m_aliases;
105 CertificateShPtrVector m_certChain;
112 LogDebug("Succeeded");
118 condition_variable m_cv;
121 typedef shared_ptr<MyObserver> MyObserverPtr;
123 const char* TEST_PASS = "test-pass";
133 KeyPair(const std::string& prv_pem, const std::string& pub_pem) {
134 RawBuffer buffer_prv(prv_pem.begin(), prv_pem.end());
135 prv = Key::create(buffer_prv);
138 RawBuffer buffer_pub(pub_pem.begin(), pub_pem.end());
139 pub = Key::create(buffer_pub);
147 typedef map<Type, vector<KeyPair> > KeyMap;
150 KeyMap initializeKeys()
154 km[RSA].emplace_back(
155 "-----BEGIN RSA PRIVATE KEY-----\n"
156 "MIICXAIBAAKBgQDMP6sKttnQ58BAi27b8X+8KVQtJgpJhhCF0RtWaTVqAhVDG3y4\n"
157 "x6IuAvXDtPSjLe/2E01fYGVxNComPJOmUOfUD06BCWPYH2+7jOfQIOy/TMlt+W7x\n"
158 "fou9rqnPRoKRaodoLqH5WK0ahkntWCAjstoKZoG+3Op0tEjy0jpmzeyNiQIDAQAB\n"
159 "AoGBAJRDX1CuvNx1bkwsKvQDkTqwMYd4hp0qcVICIbsPMhPaoT6OdHHZkHOf+HDx\n"
160 "KWhOj1LsXgzu95Q+Tp5k+LURI8ayu2RTsz/gYECgPNUsZ7gXl4co1bK+g5kiC+qr\n"
161 "sgSfkbYpp0OXefnl5x4KaJlZeSpn0UdDqx0kwI1x2E098i1VAkEA5thNY9YZNQdN\n"
162 "p6aopxOF5OmAjbLkq6wu255rDM5YgeepXXro/lmPociobtv8vPzbWKfoYZJL0Zj4\n"
163 "Qzj7Qz7s0wJBAOKBbpeG9PuNP1nR1h8kvyuILW8F89JOcIOUeqwokq4eJVqXdFIj\n"
164 "ct8eSEFmyXNqXD7b9+Tcw6vRIZuddVhNcrMCQAlpaD5ZzE1NLu1W7ilhsmPS4Vrl\n"
165 "oE0fiAmMO/EZuKITP+R/zmAQZrrB45whe/x4krjan67auByjj/utpxDmz+ECQEg/\n"
166 "UK80dN/n5dUYgVvdtLyF6zgGhgcGzgyqR5ayOlcfdnq25Htuoy1X02RJDOirfFDw\n"
167 "iNmPMTqUskuYpd1MltECQBwcy1cpnJWIXwCTQwg3enjkOVw80Tbr3iU9ASjHJTH2\n"
168 "N6FGHC4BQCm1fL6Bo0/0oSra+Ika3/1Vw1WwijUSiO8=\n"
169 "-----END RSA PRIVATE KEY-----",
171 "-----BEGIN PUBLIC KEY-----\n"
172 "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMP6sKttnQ58BAi27b8X+8KVQt\n"
173 "JgpJhhCF0RtWaTVqAhVDG3y4x6IuAvXDtPSjLe/2E01fYGVxNComPJOmUOfUD06B\n"
174 "CWPYH2+7jOfQIOy/TMlt+W7xfou9rqnPRoKRaodoLqH5WK0ahkntWCAjstoKZoG+\n"
175 "3Op0tEjy0jpmzeyNiQIDAQAB\n"
176 "-----END PUBLIC KEY-----"
178 km[DSA].emplace_back(
179 "-----BEGIN DSA PRIVATE KEY-----\n"
180 "MIIBuwIBAAKBgQDIsQRYgnU4mm5VrMyykpNNzeHTQAO8E2hJAcOwNPBrdos8amak\n"
181 "rcJnyBaNh56ZslcuXNEKJuxiDsy4VM9KUR8fHTqTiF5s+4NArzdrdwNQpKWjAqJN\n"
182 "fgpCdaLZHw9o857flcQ4dyYNnAz1/SNGnv03Dm8EYRNRFNaFNw7zBPjyVwIVANyj\n"
183 "7ijLfrCbDZDi6ond5Np1Ns0hAoGBAIcS1ceWtw6DAGmYww27r/1lLtqjrq8j0w0a\n"
184 "F6Ly+pZ/y+WTw9KT18eRKPmVgruVSn3VVVJeN00XaoKvfPSHkTRIE5rro2ZEInhp\n"
185 "3g0Vak7EXJWe7KKBRXqSMNFkndjKv1nyNKeWSEq9Xql6SPn8J8TfmbyUpPSIglZR\n"
186 "vJ2DHwHJAoGAPZLRdIhIIJi4UWoyQrCqk1iF3pkBeukXzeZGqNWEjgzLAjMZEVYM\n"
187 "DLLKippahjxLZSWB7LOoS+XE4fonpBBute/tgF23ToR8fQuiBu+KvtAP/QuCOJ/L\n"
188 "S0aYYr1/eXmMByYPZ58Vf93KuUgoUAkWmc+mLBn6J2+fygnWcOOSo6sCFC/slPOv\n"
189 "yAKPlW7WQzgV5jLLNUW7\n"
190 "-----END DSA PRIVATE KEY-----",
192 "-----BEGIN DSA PRIVATE KEY-----\n"
193 "MIIBuwIBAAKBgQDIsQRYgnU4mm5VrMyykpNNzeHTQAO8E2hJAcOwNPBrdos8amak\n"
194 "rcJnyBaNh56ZslcuXNEKJuxiDsy4VM9KUR8fHTqTiF5s+4NArzdrdwNQpKWjAqJN\n"
195 "fgpCdaLZHw9o857flcQ4dyYNnAz1/SNGnv03Dm8EYRNRFNaFNw7zBPjyVwIVANyj\n"
196 "7ijLfrCbDZDi6ond5Np1Ns0hAoGBAIcS1ceWtw6DAGmYww27r/1lLtqjrq8j0w0a\n"
197 "F6Ly+pZ/y+WTw9KT18eRKPmVgruVSn3VVVJeN00XaoKvfPSHkTRIE5rro2ZEInhp\n"
198 "3g0Vak7EXJWe7KKBRXqSMNFkndjKv1nyNKeWSEq9Xql6SPn8J8TfmbyUpPSIglZR\n"
199 "vJ2DHwHJAoGAPZLRdIhIIJi4UWoyQrCqk1iF3pkBeukXzeZGqNWEjgzLAjMZEVYM\n"
200 "DLLKippahjxLZSWB7LOoS+XE4fonpBBute/tgF23ToR8fQuiBu+KvtAP/QuCOJ/L\n"
201 "S0aYYr1/eXmMByYPZ58Vf93KuUgoUAkWmc+mLBn6J2+fygnWcOOSo6sCFC/slPOv\n"
202 "yAKPlW7WQzgV5jLLNUW7\n"
203 "-----END DSA PRIVATE KEY-----"
205 km[ECDSA].emplace_back(
206 "-----BEGIN EC PRIVATE KEY-----\n"
207 "MF8CAQEEGF3rz8OuFpcESrlqCm0G96oovr0XbX+DRKAKBggqhkjOPQMBAaE0AzIA\n"
208 "BHiZYByQiRNQ91GWNnTfoBbp9G8DP9oJYc/cDZlk4lKUpmbvm//RWf1U7ag3tOVy\n"
210 "-----END EC PRIVATE KEY-----",
212 "-----BEGIN PUBLIC KEY-----\n"
213 "MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEeJlgHJCJE1D3UZY2dN+gFun0bwM/\n"
214 "2glhz9wNmWTiUpSmZu+b/9FZ/VTtqDe05XKx\n"
215 "-----END PUBLIC KEY-----"
220 KeyMap keys = initializeKeys();
222 CertificateShPtr createCert(const std::string& cert) {
223 RawBuffer buffer_cert(cert.begin(), cert.end());
224 CertificateShPtr cptr = Certificate::create(buffer_cert, DataFormat::FORM_PEM);
229 typedef vector<CertificateShPtr> CertVector;
231 CertVector initializeCerts()
234 cv.emplace_back(createCert(
235 "-----BEGIN CERTIFICATE-----\n"
236 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
237 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
238 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
239 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
240 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
241 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
242 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
243 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
244 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
245 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
246 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
247 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
248 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
249 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
250 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
251 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
252 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
253 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
254 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
255 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
256 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
257 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
258 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
259 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
260 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
261 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
262 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
263 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
264 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
265 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
266 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
268 "-----END CERTIFICATE-----\n"
271 cv.emplace_back(createCert(
272 "-----BEGIN CERTIFICATE-----\n"
273 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
274 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
275 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
276 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
277 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
278 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
279 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
280 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
281 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
282 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
283 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
284 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
285 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
286 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
287 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
288 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
289 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
290 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
291 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
292 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
293 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
294 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
295 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
296 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
297 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
298 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
299 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
300 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
301 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
302 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
303 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
304 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
305 "-----END CERTIFICATE-----\n"
310 CertVector certs = initializeCerts();
312 const RawBuffer raw_buffer(const char* buffer)
314 return RawBuffer(buffer, buffer + strlen(buffer));
317 const RawBuffer test_buffer = raw_buffer("test_string");
319 template <typename F, typename... Args>
320 void test_negative(F&& func, int expected, Args... args)
322 MyObserverPtr obs = make_shared<MyObserver>();
325 (mgr.*func)(static_pointer_cast < ManagerAsync::Observer > (obs), args...);
326 obs->WaitForResponse();
328 RUNNER_ASSERT_MSG(obs->m_finished, "Request is not finished!");
330 obs->m_error == expected,
331 "Expected " << expected << "/" << ErrorToString(expected) <<
332 " got: " << obs->m_error << "/" << ErrorToString(obs->m_error));
335 template <typename F, typename... Args>
336 void test_invalid_param(F&& func, Args... args)
338 test_negative(move(func), CKM_API_ERROR_INPUT_PARAM, args...);
341 template <typename F, typename... Args>
342 void test_no_observer(F&& func, Args... args)
344 ManagerAsync::ObserverPtr obs;
348 (mgr.*func)(obs, args...);
349 RUNNER_ASSERT_MSG(false, "function() should have thrown an exception");
350 } catch (const invalid_argument& e) {
353 RUNNER_ASSERT_MSG(false, "Unexpected exception");
357 template <typename F, typename... Args>
358 MyObserverPtr test_positive(F&& func, Args... args)
360 MyObserverPtr obs = make_shared<MyObserver>();
363 (mgr.*func)(static_pointer_cast < ManagerAsync::Observer > (obs), args...);
364 obs->WaitForResponse();
366 RUNNER_ASSERT_MSG(obs->m_finished, "Request is not finished!");
367 RUNNER_ASSERT_MSG(obs->m_error == 0,
368 "Request failed " << obs->m_error << "/" << ErrorToString(obs->m_error));
372 template <typename F, typename... Args>
373 void test_check_aliases(F&& func, const AliasVector& expected, Args... args)
375 auto obs = test_positive(move(func), args...);
376 RUNNER_ASSERT_MSG(obs->m_aliases == expected, "Retrieved aliases differ from expected");
379 template <typename F, typename... Args>
380 void test_check_cert_chain(F&& func, size_t expected, Args... args)
382 auto obs = test_positive(move(func), args...);
384 obs->m_certChain.size() == expected,
385 "Expected chain length: " << expected << " got: " << obs->m_certChain.size());
388 typedef void (ManagerAsync::*certChainFn1)(const ManagerAsync::ObserverPtr&,
389 const CertificateShPtr&,
390 const CertificateShPtrVector&);
392 typedef void (ManagerAsync::*certChainFn2)(const ManagerAsync::ObserverPtr&,
393 const CertificateShPtr&,
395 } // namespace anonymous
398 RUNNER_TEST_GROUP_INIT(CKM_ASYNC_API);
400 RUNNER_TEST(TA0000_init)
403 ControlShPtr control = Control::create();
404 RUNNER_ASSERT_MSG(CKM_API_SUCCESS == (temp = control->unlockUserKey(APP_UID, TEST_PASS)),
405 "Error=" << ErrorToString(temp));
406 RUNNER_ASSERT_MSG(CKM_API_SUCCESS == (temp = control->removeUserData(APP_UID)),
407 "Error=" << ErrorToString(temp));
411 RUNNER_CHILD_TEST(TA0010_save_key_invalid_param)
413 switch_to_storage_user(TEST_LABEL);
415 test_no_observer(&ManagerAsync::saveKey, "alias", keys[RSA][0].prv, Policy());
416 test_invalid_param(&ManagerAsync::saveKey, "", keys[RSA][0].prv, Policy());
417 test_invalid_param(&ManagerAsync::saveKey, "alias", KeyShPtr(), Policy());
420 RUNNER_CHILD_TEST(TA0020_save_key_already_exists)
422 switch_to_storage_user(TEST_LABEL);
425 test_positive(&ManagerAsync::saveKey, dbc.key("alias"), keys[RSA][0].prv, Policy());
426 test_negative(&ManagerAsync::saveKey,
427 CKM_API_ERROR_DB_ALIAS_EXISTS,
433 RUNNER_CHILD_TEST(TA0050_save_key_positive)
435 switch_to_storage_user(TEST_LABEL);
438 test_positive(&ManagerAsync::saveKey, dbc.key("alias"), keys[RSA][0].prv, Policy());
443 RUNNER_CHILD_TEST(TA0110_save_cert_invalid_param)
445 switch_to_storage_user(TEST_LABEL);
447 CertificateShPtr cert = Certificate::create(test_buffer, DataFormat::FORM_PEM);
448 test_no_observer(&ManagerAsync::saveCertificate, "", cert, Policy());
449 test_invalid_param(&ManagerAsync::saveCertificate, "", cert, Policy());
450 test_invalid_param(&ManagerAsync::saveCertificate, "alias", CertificateShPtr(), Policy());
453 RUNNER_CHILD_TEST(TA0120_save_cert_already_exists)
455 switch_to_storage_user(TEST_LABEL);
458 test_positive(&ManagerAsync::saveCertificate, dbc.cert("alias"), certs[0], Policy());
459 test_negative(&ManagerAsync::saveCertificate,
460 CKM_API_ERROR_DB_ALIAS_EXISTS,
466 RUNNER_CHILD_TEST(TA0150_save_cert_positive)
468 switch_to_storage_user(TEST_LABEL);
471 test_positive(&ManagerAsync::saveCertificate, dbc.cert("alias"), certs[0], Policy());
476 RUNNER_CHILD_TEST(TA0210_save_data_invalid_param)
478 switch_to_storage_user(TEST_LABEL);
480 test_no_observer(&ManagerAsync::saveData, "", test_buffer, Policy());
481 test_invalid_param(&ManagerAsync::saveData, "", test_buffer, Policy());
482 test_invalid_param(&ManagerAsync::saveData, "alias", RawBuffer(), Policy());
485 RUNNER_CHILD_TEST(TA0220_save_data_already_exists)
487 switch_to_storage_user(TEST_LABEL);
490 test_positive(&ManagerAsync::saveData, dbc.data("alias"), test_buffer, Policy());
491 test_negative(&ManagerAsync::saveData,
492 CKM_API_ERROR_DB_ALIAS_EXISTS,
498 RUNNER_CHILD_TEST(TA0250_save_data_positive)
500 switch_to_storage_user(TEST_LABEL);
503 test_positive(&ManagerAsync::saveData, dbc.data("alias"), test_buffer, Policy());
508 RUNNER_CHILD_TEST(TA0310_remove_key_invalid_param)
510 switch_to_storage_user(TEST_LABEL);
512 test_no_observer(&ManagerAsync::removeKey, "alias");
513 test_invalid_param(&ManagerAsync::removeKey, "");
516 RUNNER_CHILD_TEST(TA0330_remove_key_unknown_alias)
518 switch_to_storage_user(TEST_LABEL);
520 test_negative(&ManagerAsync::removeKey, CKM_API_ERROR_DB_ALIAS_UNKNOWN, "non-existing-alias");
523 RUNNER_CHILD_TEST(TA0350_remove_key_positive)
525 switch_to_storage_user(TEST_LABEL);
528 test_positive(&ManagerAsync::saveKey, dbc.key("alias"), keys[RSA][0].prv, Policy());
529 test_positive(&ManagerAsync::removeKey, dbc.key("alias"));
534 RUNNER_CHILD_TEST(TA0410_remove_cert_invalid_param)
536 switch_to_storage_user(TEST_LABEL);
538 test_no_observer(&ManagerAsync::removeCertificate, "alias");
539 test_invalid_param(&ManagerAsync::removeCertificate, "");
542 RUNNER_CHILD_TEST(TA0430_remove_cert_unknown_alias)
544 switch_to_storage_user(TEST_LABEL);
546 test_negative(&ManagerAsync::removeCertificate,
547 CKM_API_ERROR_DB_ALIAS_UNKNOWN,
548 "non-existing-alias");
551 RUNNER_CHILD_TEST(TA0450_remove_cert_positive)
553 switch_to_storage_user(TEST_LABEL);
556 test_positive(&ManagerAsync::saveCertificate, dbc.cert("alias"), certs[0], Policy());
557 test_positive(&ManagerAsync::removeCertificate, dbc.cert("alias"));
562 RUNNER_CHILD_TEST(TA0510_remove_data_invalid_param)
564 switch_to_storage_user(TEST_LABEL);
566 test_no_observer(&ManagerAsync::removeData, "alias");
567 test_invalid_param(&ManagerAsync::removeData, "");
570 RUNNER_CHILD_TEST(TA0530_remove_data_unknown_alias)
572 switch_to_storage_user(TEST_LABEL);
574 test_negative(&ManagerAsync::removeData, CKM_API_ERROR_DB_ALIAS_UNKNOWN, "non-existing-alias");
577 RUNNER_CHILD_TEST(TA0550_remove_data_positive)
579 switch_to_storage_user(TEST_LABEL);
582 test_positive(&ManagerAsync::saveData, dbc.data("alias"), test_buffer, Policy());
583 test_positive(&ManagerAsync::removeData, dbc.data("alias"));
588 RUNNER_CHILD_TEST(TA0610_get_key_invalid_param)
590 switch_to_storage_user(TEST_LABEL);
592 test_no_observer(&ManagerAsync::getKey, "alias", "");
593 test_invalid_param(&ManagerAsync::getKey, "", "");
596 RUNNER_CHILD_TEST(TA0630_get_key_unknown_alias)
598 switch_to_storage_user(TEST_LABEL);
600 test_negative(&ManagerAsync::getKey, CKM_API_ERROR_DB_ALIAS_UNKNOWN, "non-existing-alias", "");
603 RUNNER_CHILD_TEST(TA0640_get_key_wrong_password)
605 switch_to_storage_user(TEST_LABEL);
608 test_positive(&ManagerAsync::saveKey, dbc.key("alias"), keys[RSA][0].prv, Policy("password"));
609 test_negative(&ManagerAsync::getKey,
610 CKM_API_ERROR_SERVER_ERROR,
615 RUNNER_CHILD_TEST(TA0650_get_key_positive)
617 switch_to_storage_user(TEST_LABEL);
620 test_positive(&ManagerAsync::saveKey, dbc.key("alias"), keys[RSA][0].prv, Policy("password"));
621 test_positive(&ManagerAsync::getKey, dbc.key("alias"), "password");
626 RUNNER_CHILD_TEST(TA0710_get_cert_invalid_param)
628 switch_to_storage_user(TEST_LABEL);
630 test_no_observer(&ManagerAsync::getCertificate, "alias", "");
631 test_invalid_param(&ManagerAsync::getCertificate, "", "");
634 RUNNER_CHILD_TEST(TA0730_get_cert_unknown_alias)
636 switch_to_storage_user(TEST_LABEL);
638 test_negative(&ManagerAsync::getCertificate,
639 CKM_API_ERROR_DB_ALIAS_UNKNOWN,
640 "non-existing-alias",
644 RUNNER_CHILD_TEST(TA0740_get_cert_wrong_password)
646 switch_to_storage_user(TEST_LABEL);
649 test_positive(&ManagerAsync::saveCertificate,
653 test_negative(&ManagerAsync::getCertificate,
654 CKM_API_ERROR_SERVER_ERROR,
659 RUNNER_CHILD_TEST(TA0750_get_cert_positive)
661 switch_to_storage_user(TEST_LABEL);
664 test_positive(&ManagerAsync::saveCertificate, dbc.cert("alias"), certs[0], Policy("password"));
665 test_positive(&ManagerAsync::getCertificate, dbc.cert("alias"), "password");
670 RUNNER_CHILD_TEST(TA0810_get_data_invalid_param)
672 switch_to_storage_user(TEST_LABEL);
674 test_no_observer(&ManagerAsync::getData, "alias", "");
675 test_invalid_param(&ManagerAsync::getData, "", "");
678 RUNNER_CHILD_TEST(TA0830_get_data_unknown_alias)
680 switch_to_storage_user(TEST_LABEL);
682 test_negative(&ManagerAsync::getData, CKM_API_ERROR_DB_ALIAS_UNKNOWN, "non-existing-alias", "");
685 RUNNER_CHILD_TEST(TA0840_get_data_wrong_password)
687 switch_to_storage_user(TEST_LABEL);
690 test_positive(&ManagerAsync::saveData, dbc.data("alias"), test_buffer, Policy("password"));
691 test_negative(&ManagerAsync::getData,
692 CKM_API_ERROR_SERVER_ERROR,
697 RUNNER_CHILD_TEST(TA0850_get_data_positive)
699 switch_to_storage_user(TEST_LABEL);
702 test_positive(&ManagerAsync::saveData, dbc.data("alias"), test_buffer, Policy("password"));
703 test_positive(&ManagerAsync::getData, dbc.data("alias"), "password");
708 RUNNER_CHILD_TEST(TA0910_get_key_alias_vector_invalid_param)
710 switch_to_storage_user(TEST_LABEL);
712 test_no_observer(&ManagerAsync::getKeyAliasVector);
715 RUNNER_CHILD_TEST(TA0950_get_key_alias_vector_positive)
717 switch_to_storage_user(TEST_LABEL);
720 test_positive(&ManagerAsync::saveKey, dbc.key("alias1"), keys[RSA][0].prv, Policy());
721 test_check_aliases(&ManagerAsync::getKeyAliasVector, { Alias(dbc.key("alias1")) });
723 test_positive(&ManagerAsync::saveKey, dbc.key("alias2"), keys[DSA][0].prv, Policy());
724 test_check_aliases(&ManagerAsync::getKeyAliasVector, { Alias(dbc.key("alias1")),
725 Alias(dbc.key("alias2")) });
727 test_positive(&ManagerAsync::removeKey, dbc.key("alias1"));
728 test_check_aliases(&ManagerAsync::getKeyAliasVector, { Alias(dbc.key("alias2")) });
732 // getCertificateAliasVector
733 RUNNER_CHILD_TEST(TA1010_get_cert_alias_vector_invalid_param)
735 switch_to_storage_user(TEST_LABEL);
737 test_no_observer(&ManagerAsync::getCertificateAliasVector);
740 RUNNER_CHILD_TEST(TA1050_get_cert_alias_vector_positive)
742 switch_to_storage_user(TEST_LABEL);
745 test_positive(&ManagerAsync::saveCertificate, dbc.cert("alias1"), certs[0], Policy());
746 test_check_aliases(&ManagerAsync::getCertificateAliasVector, { Alias(dbc.cert("alias1")) });
748 test_positive(&ManagerAsync::saveCertificate, dbc.cert("alias2"), certs[1], Policy());
749 test_check_aliases(&ManagerAsync::getCertificateAliasVector, { Alias(dbc.cert("alias1")),
750 Alias(dbc.cert("alias2")) });
752 test_positive(&ManagerAsync::removeCertificate, dbc.cert("alias1"));
753 test_check_aliases(&ManagerAsync::getCertificateAliasVector, { Alias(dbc.cert("alias2")) });
757 // getDataAliasVector
758 RUNNER_CHILD_TEST(TA1110_get_data_alias_vector_invalid_param)
760 switch_to_storage_user(TEST_LABEL);
762 test_no_observer(&ManagerAsync::getDataAliasVector);
765 RUNNER_CHILD_TEST(TA1150_get_data_alias_vector_positive)
767 switch_to_storage_user(TEST_LABEL);
770 test_positive(&ManagerAsync::saveData, dbc.data("alias1"), test_buffer, Policy());
771 test_check_aliases(&ManagerAsync::getDataAliasVector, { Alias(dbc.data("alias1")) });
773 test_positive(&ManagerAsync::saveData, dbc.data("alias2"), test_buffer, Policy());
774 test_check_aliases(&ManagerAsync::getDataAliasVector, { Alias(dbc.data("alias1")),
775 Alias(dbc.data("alias2")) });
777 test_positive(&ManagerAsync::removeData, dbc.data("alias1"));
778 test_check_aliases(&ManagerAsync::getDataAliasVector, { Alias(dbc.data("alias2")) });
783 RUNNER_CHILD_TEST(TA1210_create_key_pair_rsa_invalid_param)
785 switch_to_storage_user(TEST_LABEL);
787 test_no_observer(&ManagerAsync::createKeyPairRSA,
795 RUNNER_CHILD_TEST(TA1220_create_key_pair_rsa_already_exists)
797 switch_to_storage_user(TEST_LABEL);
800 test_positive(&ManagerAsync::saveKey, dbc.key("alias_prv"), keys[RSA][0].prv, Policy());
801 test_negative(&ManagerAsync::createKeyPairRSA,
802 CKM_API_ERROR_DB_ALIAS_EXISTS,
804 dbc.key("alias_prv"),
805 dbc.key("alias_pub"),
810 RUNNER_CHILD_TEST(TA1250_create_key_pair_rsa_positive)
812 switch_to_storage_user(TEST_LABEL);
815 test_positive(&ManagerAsync::createKeyPairRSA,
817 dbc.key("alias_prv"),
818 dbc.key("alias_pub"),
822 test_check_aliases(&ManagerAsync::getKeyAliasVector, { Alias(dbc.data("alias_prv")),
823 Alias(dbc.data("alias_pub")) });
827 RUNNER_CHILD_TEST(TA1270_create_key_pair_dsa_invalid_param)
829 switch_to_storage_user(TEST_LABEL);
831 test_no_observer(&ManagerAsync::createKeyPairDSA,
839 RUNNER_CHILD_TEST(TA1280_create_key_pair_dsa_already_exists)
841 switch_to_storage_user(TEST_LABEL);
844 test_positive(&ManagerAsync::saveKey, dbc.key("alias_prv"), keys[DSA][0].prv, Policy());
845 test_negative(&ManagerAsync::createKeyPairDSA,
846 CKM_API_ERROR_DB_ALIAS_EXISTS,
848 dbc.key("alias_prv"),
849 dbc.key("alias_pub"),
854 RUNNER_CHILD_TEST(TA1290_create_key_pair_dsa_positive)
856 switch_to_storage_user(TEST_LABEL);
859 test_positive(&ManagerAsync::createKeyPairDSA,
861 dbc.key("alias_prv"),
862 dbc.key("alias_pub"),
866 test_check_aliases(&ManagerAsync::getKeyAliasVector, { Alias(dbc.data("alias_prv")),
867 Alias(dbc.data("alias_pub")) });
870 // createKeyPairECDSA
871 RUNNER_CHILD_TEST(TA1310_create_key_pair_ecdsa_invalid_param)
873 switch_to_storage_user(TEST_LABEL);
875 test_no_observer(&ManagerAsync::createKeyPairECDSA,
876 ElipticCurve::prime192v1,
883 RUNNER_CHILD_TEST(TA1320_create_key_pair_ecdsa_already_exists)
885 switch_to_storage_user(TEST_LABEL);
888 test_positive(&ManagerAsync::saveKey, dbc.key("alias_prv"), keys[ECDSA][0].prv, Policy());
889 test_negative(&ManagerAsync::createKeyPairECDSA,
890 CKM_API_ERROR_DB_ALIAS_EXISTS,
891 ElipticCurve::prime192v1,
892 dbc.key("alias_prv"),
893 dbc.key("alias_pub"),
898 RUNNER_CHILD_TEST(TA1350_create_key_pair_ecdsa_positive)
900 switch_to_storage_user(TEST_LABEL);
903 test_positive(&ManagerAsync::createKeyPairECDSA,
904 ElipticCurve::prime192v1,
905 dbc.key("alias_prv"),
906 dbc.key("alias_pub"),
910 test_check_aliases(&ManagerAsync::getKeyAliasVector, { Alias(dbc.data("alias_prv")),
911 Alias(dbc.data("alias_pub")) });
915 // getCertificateChain
916 RUNNER_CHILD_TEST(TA1410_get_certificate_chain_invalid_param)
918 switch_to_storage_user(TEST_LABEL);
920 CertificateShPtr cert = certs[0];
921 CertificateShPtrVector certv = { certs[1] };
922 test_no_observer<certChainFn1>(&ManagerAsync::getCertificateChain, cert, certv);
923 test_invalid_param<certChainFn1>(&ManagerAsync::getCertificateChain,
926 test_invalid_param<certChainFn1>(&ManagerAsync::getCertificateChain,
928 CertificateShPtrVector());
930 Alias alias = "alias";
931 AliasVector aliasv = { alias };
932 test_no_observer<certChainFn2>(&ManagerAsync::getCertificateChain, cert, aliasv);
933 test_invalid_param<certChainFn2>(&ManagerAsync::getCertificateChain,
936 test_invalid_param<certChainFn2>(&ManagerAsync::getCertificateChain, cert, AliasVector());
939 RUNNER_CHILD_TEST(TA1420_get_certificate_chain_negative)
941 switch_to_storage_user(TEST_LABEL);
944 CertificateShPtr cert = certs[0];
945 CertificateShPtrVector certv = { certs[0] };
946 test_negative<certChainFn1>(&ManagerAsync::getCertificateChain,
947 CKM_API_ERROR_VERIFICATION_FAILED,
950 AliasVector aliasv = { dbc.cert("alias") };
951 test_positive(&ManagerAsync::saveCertificate, aliasv[0], certs[0], Policy());
952 test_negative<certChainFn2>(&ManagerAsync::getCertificateChain,
953 CKM_API_ERROR_VERIFICATION_FAILED,
958 RUNNER_CHILD_TEST(TA1450_get_certificate_chain_positive)
960 switch_to_storage_user(TEST_LABEL);
963 CertificateShPtr cert = certs[0];
964 CertificateShPtrVector certv = { certs[1] };
965 test_check_cert_chain<certChainFn1>(&ManagerAsync::getCertificateChain, 3, cert, certv);
967 AliasVector aliasv = { dbc.cert("alias") };
968 test_positive(&ManagerAsync::saveCertificate, aliasv[0], certs[1], Policy());
969 test_check_cert_chain<certChainFn2>(&ManagerAsync::getCertificateChain, 3, cert, aliasv);
974 RUNNER_CHILD_TEST(TA1510_create_signature_invalid_param)
976 switch_to_storage_user(TEST_LABEL);
978 test_no_observer(&ManagerAsync::createSignature,
983 RSAPaddingAlgorithm::PKCS1);
984 test_invalid_param(&ManagerAsync::createSignature,
989 RSAPaddingAlgorithm::PKCS1);
990 test_invalid_param(&ManagerAsync::createSignature,
995 RSAPaddingAlgorithm::PKCS1);
998 RUNNER_CHILD_TEST(TA1520_create_signature_invalid_password)
1000 switch_to_storage_user(TEST_LABEL);
1003 test_positive(&ManagerAsync::saveKey, dbc.key("alias"), keys[RSA][0].prv, Policy("password"));
1004 test_negative(&ManagerAsync::createSignature,
1005 CKM_API_ERROR_INPUT_PARAM,
1009 HashAlgorithm::SHA1,
1010 RSAPaddingAlgorithm::PKCS1);
1013 RUNNER_CHILD_TEST(TA1550_create_signature_positive)
1015 switch_to_storage_user(TEST_LABEL);
1018 test_positive(&ManagerAsync::saveKey, dbc.key("alias"), keys[RSA][0].prv, Policy("password"));
1019 test_positive(&ManagerAsync::createSignature,
1023 HashAlgorithm::SHA1,
1024 RSAPaddingAlgorithm::PKCS1);
1029 RUNNER_CHILD_TEST(TA1610_verify_signature_invalid_param)
1031 switch_to_storage_user(TEST_LABEL);
1033 test_no_observer(&ManagerAsync::verifySignature,
1038 HashAlgorithm::SHA1,
1039 RSAPaddingAlgorithm::PKCS1);
1040 test_invalid_param(&ManagerAsync::verifySignature,
1045 HashAlgorithm::SHA1,
1046 RSAPaddingAlgorithm::PKCS1);
1049 RUNNER_CHILD_TEST(TA1620_verify_signature_invalid_password)
1051 switch_to_storage_user(TEST_LABEL);
1054 test_positive(&ManagerAsync::saveKey, dbc.key("alias_prv"), keys[RSA][0].prv, Policy("pass1"));
1055 test_positive(&ManagerAsync::saveKey, dbc.key("alias_pub"), keys[RSA][0].pub, Policy("pass2"));
1056 auto obs = test_positive(&ManagerAsync::createSignature,
1057 dbc.key("alias_prv"),
1060 HashAlgorithm::SHA1,
1061 RSAPaddingAlgorithm::PKCS1);
1063 test_negative(&ManagerAsync::verifySignature,
1064 CKM_API_ERROR_SERVER_ERROR,
1065 dbc.key("alias_pub"),
1069 HashAlgorithm::SHA1,
1070 RSAPaddingAlgorithm::PKCS1);
1073 RUNNER_CHILD_TEST(TA1630_verify_signature_invalid_message)
1075 switch_to_storage_user(TEST_LABEL);
1078 test_positive(&ManagerAsync::saveKey, dbc.key("alias_prv"), keys[RSA][0].prv, Policy(""));
1079 test_positive(&ManagerAsync::saveKey, dbc.key("alias_pub"), keys[RSA][0].pub, Policy(""));
1081 auto obs = test_positive(&ManagerAsync::createSignature,
1082 dbc.key("alias_prv"),
1085 HashAlgorithm::SHA1,
1086 RSAPaddingAlgorithm::PKCS1);
1088 test_negative(&ManagerAsync::verifySignature,
1089 CKM_API_ERROR_VERIFICATION_FAILED,
1090 dbc.key("alias_pub"),
1092 raw_buffer("invalid-unsigned-mesage"),
1094 HashAlgorithm::SHA1,
1095 RSAPaddingAlgorithm::PKCS1);
1098 RUNNER_CHILD_TEST(TA1640_verify_signature_invalid_signature)
1100 switch_to_storage_user(TEST_LABEL);
1103 test_positive(&ManagerAsync::saveKey, dbc.key("alias_pub"), keys[RSA][0].pub, Policy(""));
1105 test_negative(&ManagerAsync::verifySignature,
1106 CKM_API_ERROR_VERIFICATION_FAILED,
1107 dbc.key("alias_pub"),
1110 raw_buffer("invalid-signature"),
1111 HashAlgorithm::SHA1,
1112 RSAPaddingAlgorithm::PKCS1);
1115 RUNNER_CHILD_TEST(TA1650_verify_signature_wrong_key)
1117 switch_to_storage_user(TEST_LABEL);
1120 test_positive(&ManagerAsync::saveKey, dbc.key("alias_prv"), keys[RSA][0].prv, Policy(""));
1121 auto obs = test_positive(&ManagerAsync::createSignature,
1122 dbc.key("alias_prv"),
1125 HashAlgorithm::SHA1,
1126 RSAPaddingAlgorithm::PKCS1);
1128 test_negative(&ManagerAsync::verifySignature,
1129 CKM_API_ERROR_SERVER_ERROR,
1130 dbc.key("alias_prv"),
1134 HashAlgorithm::SHA1,
1135 RSAPaddingAlgorithm::PKCS1);
1138 RUNNER_CHILD_TEST(TA1660_verify_signature_positive)
1140 switch_to_storage_user(TEST_LABEL);
1143 test_positive(&ManagerAsync::saveKey, dbc.key("alias_prv"), keys[RSA][0].prv, Policy("pass1"));
1144 test_positive(&ManagerAsync::saveKey, dbc.key("alias_pub"), keys[RSA][0].pub, Policy("pass2"));
1145 auto obs = test_positive(&ManagerAsync::createSignature,
1146 dbc.key("alias_prv"),
1149 HashAlgorithm::SHA1,
1150 RSAPaddingAlgorithm::PKCS1);
1152 test_positive(&ManagerAsync::verifySignature,
1153 dbc.key("alias_pub"),
1157 HashAlgorithm::SHA1,
1158 RSAPaddingAlgorithm::PKCS1);
1163 RUNNER_CHILD_TEST(TA1710_ocsp_check_invalid_param)
1165 test_no_observer(&ManagerAsync::ocspCheck, CertificateShPtrVector());
1166 test_invalid_param(&ManagerAsync::ocspCheck, CertificateShPtrVector());
1169 RUNNER_CHILD_TEST(TA1720_ocsp_check_negative)
1171 switch_to_storage_ocsp_user(TEST_LABEL);
1174 CertificateShPtrVector certv = { certs[0], certs[0] };
1176 auto obs = test_positive(&ManagerAsync::ocspCheck, certv);
1177 RUNNER_ASSERT_MSG(obs->m_ocspStatus != CKM_API_OCSP_STATUS_GOOD,
1178 "Verification should fail. Got: " << obs->m_ocspStatus);
1181 RUNNER_CHILD_TEST(TA1750_ocsp_check_positive)
1183 switch_to_storage_ocsp_user(TEST_LABEL);
1186 CertificateShPtr cert = certs[0];
1187 CertificateShPtrVector certv = { certs[1] };
1188 auto obs = test_positive<certChainFn1>(&ManagerAsync::getCertificateChain, cert, certv);
1190 auto obs2 = test_positive(&ManagerAsync::ocspCheck, obs->m_certChain);
1191 RUNNER_ASSERT_MSG(obs2->m_ocspStatus == CKM_API_OCSP_STATUS_GOOD,
1192 "Verification failed. Error: " << obs->m_ocspStatus);
1196 RUNNER_CHILD_TEST(TA1810_allow_access_invalid_param)
1198 switch_to_storage_user(TEST_LABEL);
1200 test_no_observer(&ManagerAsync::allowAccess, "alias", "accessor", AccessRight::AR_READ_REMOVE);
1201 test_invalid_param(&ManagerAsync::allowAccess, "", "accessor", AccessRight::AR_READ_REMOVE);
1202 test_invalid_param(&ManagerAsync::allowAccess, "alias", "", AccessRight::AR_READ_REMOVE);
1205 RUNNER_TEST(TA1820_allow_access)
1208 test_positive(&ManagerAsync::saveData, dbc.data("alias"), test_buffer, Policy());
1209 test_positive(&ManagerAsync::saveData, dbc.data("alias2"), test_buffer, Policy());
1210 test_positive(&ManagerAsync::saveData, dbc.data("alias3"), test_buffer, Policy());
1211 test_positive(&ManagerAsync::allowAccess,
1214 AccessRight::AR_READ);
1215 test_positive(&ManagerAsync::allowAccess,
1218 AccessRight::AR_READ_REMOVE);
1221 ScopedLabel label(TEST_LABEL);
1223 test_negative(&ManagerAsync::getData, CKM_API_ERROR_ACCESS_DENIED, dbc.data("alias"), "");
1224 test_negative(&ManagerAsync::removeData, CKM_API_ERROR_ACCESS_DENIED, dbc.data("alias"));
1226 test_positive(&ManagerAsync::getData, dbc.data("alias2"), "");
1227 test_negative(&ManagerAsync::removeData, CKM_API_ERROR_ACCESS_DENIED, dbc.data("alias2"));
1229 test_positive(&ManagerAsync::getData, dbc.data("alias3"), "");
1230 test_positive(&ManagerAsync::removeData, dbc.data("alias3"));
1235 RUNNER_CHILD_TEST(TA1910_deny_access_invalid_param)
1237 switch_to_storage_user(TEST_LABEL);
1239 test_no_observer(&ManagerAsync::denyAccess, "alias", "accessor");
1240 test_invalid_param(&ManagerAsync::denyAccess, "", "accessor");
1241 test_invalid_param(&ManagerAsync::denyAccess, "alias", "");
1244 RUNNER_TEST(TA1920_deny_access)
1247 test_positive(&ManagerAsync::saveData, dbc.data("alias"), test_buffer, Policy());
1248 test_positive(&ManagerAsync::allowAccess,
1251 AccessRight::AR_READ_REMOVE);
1252 test_positive(&ManagerAsync::denyAccess, dbc.data("alias"), TEST_LABEL);
1255 ScopedLabel label(TEST_LABEL);
1257 test_negative(&ManagerAsync::getData, CKM_API_ERROR_ACCESS_DENIED, dbc.data("alias"), "");
1258 test_negative(&ManagerAsync::removeData, CKM_API_ERROR_ACCESS_DENIED, dbc.data("alias"));
1262 RUNNER_TEST(TA9999_deinit)
1265 ControlShPtr control = Control::create();
1266 RUNNER_ASSERT_MSG(CKM_API_SUCCESS == (temp = control->lockUserKey(APP_UID)),
1267 "Error=" << ErrorToString(temp));
1268 RUNNER_ASSERT_MSG(CKM_API_SUCCESS == (temp = control->removeUserData(APP_UID)),
1269 "Error=" << ErrorToString(temp));