Add some simple unit tests for hw_api 93/163493/1
authorUladzislau Harbuz <u.harbuz@samsung.com>
Mon, 11 Dec 2017 13:47:36 +0000 (14:47 +0100)
committerUladzislau Harbuz <u.harbuz@samsung.com>
Mon, 11 Dec 2017 13:48:10 +0000 (14:48 +0100)
Change-Id: If1fa9dfcec2afc437e00d2940378223c04ea6697

tests/hw_api_test.cpp

index 2340a55..7c76a34 100644 (file)
 
 #include <boost/algorithm/hex.hpp>
 
-int main()
-{
+
+static void test_key_context_creation() {
+
+    void* res = DCM_HWGetKeyContext(NULL, NULL, NULL);
+    assert(res != NULL);
+    int ret = DCM_HWFreeKeyContext(res);
+    assert(ret == 0);
+
+    res = DCM_HWGetKeyContext("", "", NULL);
+    assert(res != NULL);
+    ret = DCM_HWFreeKeyContext(res);
+    assert(ret == 0);
+
+    res = DCM_HWGetKeyContext("a", NULL, NULL);
+    assert(res != NULL);
+    ret = DCM_HWFreeKeyContext(res);
+    assert(ret == 0);
+
+    res = DCM_HWGetKeyContext(NULL, "a", NULL);
+    assert(res != NULL);
+    ret = DCM_HWFreeKeyContext(res);
+    assert(ret == 0);
+
+    res = DCM_HWGetKeyContext("a", "a", NULL);
+    assert(res != NULL);
+    ret = DCM_HWFreeKeyContext(res);
+    assert(ret == 0);
+
+    res = DCM_HWGetKeyContext("a", "b", "UNEXISTING");
+    assert(res == NULL);
+    ret = DCM_HWFreeKeyContext(res);
+    assert(ret == 0);
+
+    std::cout << "DCM_HWGetKeyContext/DCM_HWFreeKeyContext ... OK\n";
+}
+
+static void test_get_own_cert_chain() {
+    void *ctx = DCM_HWGetKeyContext("a", "b", NULL);
+    size_t size;
+    unsigned char *cert;
+
+    int res = DCM_HWGetOwnCertificateChain(ctx, NULL, &size);
+    assert(res < 0);
+
+    res = DCM_HWGetOwnCertificateChain(ctx, &cert, NULL);
+    assert(res < 0);
+
+    res = DCM_HWGetOwnCertificateChain(NULL, &cert, &size);
+    assert(res < 0);
+
+    res = DCM_HWGetOwnCertificateChain(ctx, &cert, &size);
+    assert(res == 0);
+
+    DCM_HWFreeKeyContext(ctx);
+
+    std::cout << "DCM_HWGetOwnCertificateChain ... OK\n";
+}
+
+static void test_setup_pk_ctx() {
+    void *ctx = DCM_HWGetKeyContext("a", "b", NULL);
+
+    int ret = DCM_HWSetupPkContext(NULL, ctx);
+    assert(ret < 0);
+
+    ret = DCM_HWSetupPkContext(NULL, ctx);
+    assert(ret < 0);
+
+    mbedtls_pk_context_wrapper pkey;
+
+    ret = DCM_HWSetupPkContext(&pkey, NULL);
+    assert(ret < 0);
+
+    ret = DCM_HWSetupPkContext(&pkey, ctx);
+    assert(ret == 0);
+
+    DCM_HWFreeKeyContext(ctx);
+
+    std::cout << "DCM_HWSetupPkContext ... OK\n";
+}
+
+static int test_general_case() {
        const char *pers = "hw_api_test";
 
        mbedtls_entropy_context_wrapper entropy;
@@ -126,7 +205,14 @@ int main()
     std::cout << "Deleting HW context" << std::endl;
     DCM_HWFreeKeyContext(keyContext);
 
-    std::cout << "Finished" << std::endl;
-
+    std::cout << "Testing general usecase ... OK" << std::endl;
     return 0;
 }
+
+int main()
+{
+    test_key_context_creation();
+    test_get_own_cert_chain();
+    test_setup_pk_ctx();
+    return test_general_case();
+}