--- /dev/null
+#define BOOST_TEST_MODULE HW API test
+
+#include "device_certificate_manager.h"
+#include <iostream>
+#include <iomanip>
+#include <cstring>
+
+#include <boost/algorithm/hex.hpp>
+#include <boost/test/unit_test.hpp>
+
+BOOST_AUTO_TEST_CASE(test01_dcm_create_key_context)
+{
+ void *ctx;
+ int ret = dcm_create_key_context(NULL, NULL, NULL, &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+
+ ctx = NULL;
+ ret = dcm_create_key_context("", "", NULL, &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+
+ ctx = NULL;
+ ret = dcm_create_key_context("a", NULL, NULL, &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+
+ ctx = NULL;
+ ret = dcm_create_key_context(NULL, "a", NULL, &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+
+ ctx = NULL;
+ ret = dcm_create_key_context("a", "a", NULL, &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+
+ ctx = NULL;
+ ret = dcm_create_key_context("a", "b", "UNEXISTING", &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_SOCKET);
+ BOOST_CHECK(!ctx);
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+}
+
+BOOST_AUTO_TEST_CASE(test02_dcm_get_certificate_chain)
+{
+ void *ctx;
+ char *cert;
+ size_t cert_len;
+
+ int ret = dcm_create_key_context("a", "b", NULL, &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+
+ ret = dcm_get_certificate_chain(ctx, NULL, &cert_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ ret = dcm_get_certificate_chain(ctx, &cert, NULL);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ ret = dcm_get_certificate_chain(NULL, &cert, &cert_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ ret = dcm_get_certificate_chain(ctx, &cert, &cert_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(cert);
+ BOOST_REQUIRE(cert_len > 0);
+
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+
+ free(cert);
+}
+
+BOOST_AUTO_TEST_CASE(test03_dcm_get_key_bit_length)
+{
+ int ret;
+ void *ctx;
+ size_t key_len = 0;
+
+ ret = dcm_get_key_bit_length(NULL, &key_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ ret = dcm_create_key_context("a", "b", "ECDSA", &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+
+ ret = dcm_get_key_bit_length(ctx, &key_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_REQUIRE(key_len > 0);
+
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+}
+
+BOOST_AUTO_TEST_CASE(test04_dcm_get_key_type)
+{
+ int ret;
+ void *ctx;
+ char *key_type;
+
+ ret = dcm_get_key_type(NULL, &key_type);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ ret = dcm_create_key_context("a", "b", "ECDSA", &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+
+ ret = dcm_get_key_type(ctx, &key_type);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(key_type);
+ BOOST_CHECK(strcmp(key_type, "ECDSA") == 0);
+
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ free(key_type);
+}
+
+BOOST_AUTO_TEST_CASE(test05_dcm_create_signature)
+{
+ int ret;
+ void *ctx;
+ char *signature;
+ size_t signature_len;
+ char data[32];
+
+ ret = dcm_create_signature(NULL, DCM_DIGEST_SHA256, data, sizeof(data), &signature, &signature_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ ret = dcm_create_key_context("a", "b", "ECDSA", &ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(ctx);
+
+ ret = dcm_create_signature(ctx, DCM_DIGEST_SHA256, data, sizeof(data), NULL, &signature_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ ret = dcm_create_signature(ctx, DCM_DIGEST_SHA256, data, sizeof(data), &signature, NULL);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
+
+ std::cout << "Data to sign = ";
+ boost::algorithm::hex(std::begin(data), std::end(data), std::ostream_iterator<char>(std::cout));
+ std::cout << std::endl;
+
+ ret = dcm_create_signature(ctx, DCM_DIGEST_SHA256, data, sizeof(data), &signature, &signature_len);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+ BOOST_CHECK(signature);
+ BOOST_REQUIRE(signature_len > 0);
+
+ std::cout << "Signature = ";
+ boost::algorithm::hex(signature, signature + signature_len, std::ostream_iterator<char>(std::cout));
+ std::cout << std::endl;
+
+ ret = dcm_free_key_context(ctx);
+ BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
+
+ free(signature);
+}
+++ /dev/null
-#define BOOST_TEST_MODULE HW API test
-
-#include "device_certificate_manager.h"
-#include <iostream>
-#include <iomanip>
-#include <cstring>
-
-#include <boost/algorithm/hex.hpp>
-#include <boost/test/unit_test.hpp>
-
-BOOST_AUTO_TEST_CASE(test01_dcm_create_key_context)
-{
- void *ctx;
- int ret = dcm_create_key_context(NULL, NULL, NULL, &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- ctx = NULL;
- ret = dcm_create_key_context("", "", NULL, &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- ctx = NULL;
- ret = dcm_create_key_context("a", NULL, NULL, &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- ctx = NULL;
- ret = dcm_create_key_context(NULL, "a", NULL, &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- ctx = NULL;
- ret = dcm_create_key_context("a", "a", NULL, &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- ctx = NULL;
- ret = dcm_create_key_context("a", "b", "UNEXISTING", &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_SOCKET);
- BOOST_CHECK(!ctx);
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-}
-
-BOOST_AUTO_TEST_CASE(test02_dcm_get_certificate_chain)
-{
- void *ctx;
- char *cert;
- size_t cert_len;
-
- int ret = dcm_create_key_context("a", "b", NULL, &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
-
- ret = dcm_get_certificate_chain(ctx, NULL, &cert_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_get_certificate_chain(ctx, &cert, NULL);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_get_certificate_chain(NULL, &cert, &cert_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_get_certificate_chain(ctx, &cert, &cert_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(cert);
- BOOST_REQUIRE(cert_len > 0);
-
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- free(cert);
-}
-
-BOOST_AUTO_TEST_CASE(test03_dcm_get_key_bit_length)
-{
- int ret;
- void *ctx;
- size_t key_len = 0;
-
- ret = dcm_get_key_bit_length(NULL, &key_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_create_key_context("a", "b", "RSA", &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
-
- ret = dcm_get_key_bit_length(ctx, NULL);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_get_key_bit_length(ctx, &key_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_REQUIRE(key_len > 0);
-
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- ctx = NULL;
- key_len = 0;
- ret = dcm_create_key_context("a", "b", "ECDSA", &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
-
- ret = dcm_get_key_bit_length(ctx, &key_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_REQUIRE(key_len > 0);
-
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-}
-
-BOOST_AUTO_TEST_CASE(test04_dcm_get_key_type)
-{
- int ret;
- void *ctx;
- char *key_type;
-
- ret = dcm_get_key_type(NULL, &key_type);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_create_key_context("a", "b", "RSA", &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
-
- ret = dcm_get_key_type(ctx, NULL);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_get_key_type(ctx, &key_type);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(key_type);
- BOOST_CHECK(strcmp(key_type, "RSA") == 0);
-
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- free(key_type);
-
- ctx = NULL;
- ret = dcm_create_key_context("a", "b", "ECDSA", &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
-
- ret = dcm_get_key_type(ctx, &key_type);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(key_type);
- BOOST_CHECK(strcmp(key_type, "ECDSA") == 0);
-
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- free(key_type);
-}
-
-BOOST_AUTO_TEST_CASE(test05_dcm_create_signature)
-{
- int ret;
- void *ctx;
- char *signature;
- size_t signature_len;
- char data[32];
-
- ret = dcm_create_signature(NULL, DCM_DIGEST_SHA256, data, sizeof(data), &signature, &signature_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_create_key_context("a", "b", "RSA", &ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(ctx);
-
- ret = dcm_create_signature(ctx, DCM_DIGEST_SHA256, data, sizeof(data), NULL, &signature_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- ret = dcm_create_signature(ctx, DCM_DIGEST_SHA256, data, sizeof(data), &signature, NULL);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_INVALID_PARAMETER);
-
- std::cout << "Data to sign = ";
- boost::algorithm::hex(std::begin(data), std::end(data), std::ostream_iterator<char>(std::cout));
- std::cout << std::endl;
-
- ret = dcm_create_signature(ctx, DCM_DIGEST_SHA256, data, sizeof(data), &signature, &signature_len);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
- BOOST_CHECK(signature);
- BOOST_REQUIRE(signature_len > 0);
-
- std::cout << "Signature = ";
- boost::algorithm::hex(signature, signature + signature_len, std::ostream_iterator<char>(std::cout));
- std::cout << std::endl;
-
- ret = dcm_free_key_context(ctx);
- BOOST_REQUIRE_EQUAL(ret, DCM_ERROR_NONE);
-
- free(signature);
-}