#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;
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();
+}