#ifdef _Win64 #include "pch.h" #else #include #endif extern "C" { #include "lib_its_security.h" int8_t* bin_to_hex(const uint8_t* p_buffer, const size_t p_buffer_length); uint8_t* hex_to_bin(const int8_t* p_buffer, size_t* p_buffer_length); } /** * @class lib_its_security unit tests suite implementation */ class lib_its_security_test_suite : public ::testing::Test { protected: virtual void SetUp() { }; virtual void TearDown() { }; }; TEST(lib_its_security_test_suite, Init1) { EXPECT_TRUE(initialize(nist_p_256, NULL) == -1); } TEST(lib_its_security_test_suite, Init2) { EXPECT_TRUE(uninitialize(NULL) == -1); } TEST(lib_its_security_test_suite, Init3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context != NULL); // Test body EXPECT_EQ(lib_its_security_context->elliptic_curve, nist_p_256); EXPECT_EQ(lib_its_security_context->key_length, 32); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); // Postamble EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, Init4) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context != NULL); // Test body EXPECT_EQ(lib_its_security_context->elliptic_curve, brainpool_p_256_r1); EXPECT_EQ(lib_its_security_context->key_length, 32); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); // Postamble EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, Init5) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_384_r1, &lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context != NULL); // Test body EXPECT_EQ(lib_its_security_context->elliptic_curve, brainpool_p_384_r1); EXPECT_EQ(lib_its_security_context->key_length, 48); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); // Postamble EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sha_256_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body uint8_t* hashed_data = NULL; EXPECT_TRUE(hash_with_sha256(NULL, 10, &hashed_data) == 0); EXPECT_TRUE(hashed_data != NULL); EXPECT_EQ(hashed_data[0], 0xe3); EXPECT_EQ(hashed_data[31], 0x55); free(hashed_data); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sha_256_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body size_t l = 0; uint8_t* data_to_be_hashed = hex_to_bin((const int8_t*)"CAFEDECA", &l); uint8_t* hashed_data = NULL; EXPECT_TRUE(hash_with_sha256(data_to_be_hashed, 0, &hashed_data) == 0); // 0 instead of l EXPECT_TRUE(hashed_data != NULL); EXPECT_EQ(hashed_data[0], 0xe3); EXPECT_EQ(hashed_data[31], 0x55); free(data_to_be_hashed); free(hashed_data); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sha_256_3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body size_t l = 0; uint8_t* data_to_be_hashed = hex_to_bin((const int8_t*)"CAFEDECA", &l); uint8_t* hashed_data = NULL; EXPECT_TRUE(hash_with_sha256(data_to_be_hashed, l, &hashed_data) == 0); EXPECT_TRUE(hashed_data != NULL); EXPECT_EQ(hashed_data[0], 0x84); EXPECT_EQ(hashed_data[31], 0xfb); free(data_to_be_hashed); free(hashed_data); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sha_384_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body uint8_t* hashed_data = NULL; EXPECT_TRUE(hash_with_sha384(NULL, 10, &hashed_data) == 0); EXPECT_TRUE(hashed_data != NULL); EXPECT_EQ(hashed_data[0], 0x38); EXPECT_EQ(hashed_data[47], 0x5b); free(hashed_data); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sha_384_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body size_t l = 0; uint8_t* data_to_be_hashed = hex_to_bin((const int8_t*)"CAFEDECA", &l); uint8_t* hashed_data = NULL; EXPECT_TRUE(hash_with_sha384(data_to_be_hashed, 0, &hashed_data) == 0); // 0 instead of l EXPECT_TRUE(hashed_data != NULL); EXPECT_EQ(hashed_data[0], 0x38); EXPECT_EQ(hashed_data[47], 0x5b); free(data_to_be_hashed); free(hashed_data); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sha_384_3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body size_t l = 0; uint8_t* data_to_be_hashed = hex_to_bin((const int8_t*)"CAFEDECA", &l); uint8_t* hashed_data = NULL; EXPECT_TRUE(hash_with_sha384(data_to_be_hashed, l, &hashed_data) == 0); EXPECT_TRUE(hashed_data != NULL); EXPECT_EQ(hashed_data[0], 0x64); EXPECT_EQ(hashed_data[47], 0x12); free(data_to_be_hashed); free(hashed_data); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, hmac_sha_256_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body uint8_t* hmac = NULL; size_t secret_length; uint8_t* secret = hex_to_bin((const int8_t*)"4a656665", &secret_length); size_t message_length; uint8_t* message = hex_to_bin((const int8_t*)"7768617420646f2079612077616e7420666f72206e6f7468696e673f", &message_length); EXPECT_TRUE(hmac_sha256(secret, secret_length, message, message_length, NULL) == -1); EXPECT_TRUE(hmac_sha256(NULL, secret_length, message, message_length, &hmac) == -1); EXPECT_TRUE(hmac_sha256(secret, secret_length, NULL, message_length, &hmac) == -1); EXPECT_TRUE(hmac_sha256(secret, 0, message, message_length, &hmac) == -1); EXPECT_TRUE(hmac_sha256(secret, secret_length, message, 0, &hmac) == -1); free(secret); free(message); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, hmac_sha_256_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body uint8_t* hmac = NULL; size_t secret_length = 0; uint8_t* secret = hex_to_bin((const int8_t*)"4a656665", &secret_length); size_t message_length = 0; uint8_t* message = hex_to_bin((const int8_t*)"7768617420646f2079612077616e7420666f72206e6f7468696e673f", &message_length); EXPECT_TRUE(hmac_sha256(secret, secret_length, message, message_length, &hmac) == 0); EXPECT_EQ(hmac[0], 0x5b); EXPECT_EQ(hmac[15], 0xc7); free(secret); free(message); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, generate_key_pair_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(NULL, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == -1); EXPECT_TRUE(generate_key_pair(lib_its_security_context, NULL, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == -1); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, NULL, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == -1); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, NULL, &public_key_compressed, &public_key_compressed_mode) == -1); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, NULL, &public_key_compressed_mode) == -1); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, NULL) == -1); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, generate_key_pair_nist_p_256_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); // Test body uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, generate_key_pair_brainpool_p_256_r1_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); // Test body uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, generate_key_pair_brainpool_p_384_r1_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_384_r1, &lib_its_security_context) == 0); // Test body uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_nistp256_with_sha256_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); // Test body uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); free(sig); // Postamble free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_nistp256_with_sha256_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); // Test body EXPECT_TRUE(verify_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_nistp256_with_sha256_3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); EXPECT_TRUE(verify_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Test body *(public_key_y + 1) = 0xaa; *(public_key_y + 2) = 0xaa; EXPECT_TRUE(verify_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == -1); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_nistp256_with_sha256_4) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); EXPECT_TRUE(verify_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Test body *(sig + 1) = 0xaa; *(sig + 2) = 0xaa; EXPECT_TRUE(verify_with_ecdsa_nistp256_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == -1); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp256r1_with_sha256_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); // Test body uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); free(sig); // Postamble free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp256r1_with_sha256_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); // Test body EXPECT_TRUE(verify_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp256r1_with_sha256_3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); EXPECT_TRUE(verify_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Test body *(public_key_y + 1) = 0xaa; *(public_key_y + 2) = 0xaa; EXPECT_TRUE(verify_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == -1); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp256r1_with_sha256_4) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); EXPECT_TRUE(verify_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Test body *(sig + 1) = 0xaa; *(sig + 2) = 0xaa; EXPECT_TRUE(verify_with_ecdsa_brainpoolp256r1_with_sha256(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == -1); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp384r1_with_sha384_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_384_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); // Test body uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); free(sig); // Postamble free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp384r1_with_sha384_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_384_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); // Test body EXPECT_TRUE(verify_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp384r1_with_sha384_3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_384_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); EXPECT_TRUE(verify_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Test body *(public_key_y + 1) = 0xaa; *(public_key_y + 2) = 0xaa; EXPECT_TRUE(verify_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == -1); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, sign_with_ecdsa_brainpoolp384r1_with_sha384_4) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_384_r1, &lib_its_security_context) == 0); uint8_t* private_key = NULL; uint8_t* public_key_x = NULL; uint8_t* public_key_y = NULL; uint8_t* public_key_compressed = NULL; ecc_compressed_mode_t public_key_compressed_mode; EXPECT_TRUE(generate_key_pair(lib_its_security_context, &private_key, &public_key_x, &public_key_y, &public_key_compressed, &public_key_compressed_mode) == 0); uint8_t issuer[32] = { 0x00 }; uint8_t* sig = NULL; EXPECT_TRUE(sign_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, private_key, &sig) == 0); EXPECT_TRUE(verify_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == 0); // Test body *(sig + 1) = 0xaa; *(sig + 2) = 0xaa; EXPECT_TRUE(verify_with_ecdsa_brainpoolp384r1_with_sha384(lib_its_security_context, public_key_y, 32, issuer, sig, public_key_compressed, public_key_compressed_mode) == -1); // Postamble free(sig); free(private_key); free(public_key_x); free(public_key_y); free(public_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_nistp256_with_sha256_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); // Test body size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_nistp256_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_nistp256_with_sha256_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_nistp256_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; EXPECT_TRUE(decrypt_with_ecies_nistp256_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == 0); EXPECT_TRUE(new_plain_text_message_length == plain_text_message_length); for (uint32_t i = 0; i < plain_text_message_length; i++) { EXPECT_TRUE(*(plain_text_message + i) == *(new_plain_text_message + i)); } for (uint32_t i = 0; i < 16; i++) { EXPECT_TRUE(*(encrypted_sym_key + i) == *(new_aes_enc_sym_key + i)); } free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_nistp256_with_sha256_3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_nistp256_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(salt + 1) = 0xaa; *(salt + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_nistp256_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_nistp256_with_sha256_4) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_nistp256_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(encrypted_sym_key + 1) = 0xaa; *(encrypted_sym_key + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_nistp256_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_nistp256_with_sha256_5) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_nistp256_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(nonce + 1) = 0xaa; *(nonce + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_nistp256_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_nistp256_with_sha256_6) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(nist_p_256, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_nistp256_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(ephemeral_key_compressed + 1) = 0xaa; *(ephemeral_key_compressed + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_nistp256_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_brainpoolp256r1_with_sha256_1) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); // Test body size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); // Postamble EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_brainpoolp256r1_with_sha256_2) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; EXPECT_TRUE(decrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == 0); EXPECT_TRUE(new_plain_text_message_length == plain_text_message_length); for (uint32_t i = 0; i < plain_text_message_length; i++) { EXPECT_TRUE(*(plain_text_message + i) == *(new_plain_text_message + i)); } for (uint32_t i = 0; i < 16; i++) { EXPECT_TRUE(*(encrypted_sym_key + i) == *(new_aes_enc_sym_key + i)); } free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_brainpoolp256r1_with_sha256_3) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(salt + 1) = 0xaa; *(salt + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_brainpoolp256r1_with_sha256_4) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(encrypted_sym_key + 1) = 0xaa; *(encrypted_sym_key + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_brainpoolp256r1_with_sha256_5) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(nonce + 1) = 0xaa; *(nonce + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } TEST(lib_its_security_test_suite, encrypt_with_ecies_brainpoolp256r1_with_sha256_6) { // Preamble lib_its_security_context_t* lib_its_security_context = NULL; EXPECT_TRUE(initialize(brainpool_p_256_r1, &lib_its_security_context) == 0); EXPECT_TRUE(generate_key_pair(lib_its_security_context, &lib_its_security_context->private_key, &lib_its_security_context->public_key_x, &lib_its_security_context->public_key_y, &lib_its_security_context->public_key_c, &lib_its_security_context->compressed_mode) == 0); size_t plain_text_message_length; uint8_t* plain_text_message = hex_to_bin((const int8_t*)"03810040038081BC01800381004003806400104553435259505400000000000000001101008082671439CBFB6E69370113B14E077A6097AACC62945C122D402A6975AF6FF3DAA77C8110455343525950540000000000000000111DCCE0F98400788301028000FA80017C00010180012481030201C04002026F0001C6B773D2F2B0828080217B7AA6442D85721A9DB6F0C2E307BEC1795B33E6957055F504F8F7A5DD1A956788F6A1146998DA44EC4756C8DB2AB46EBD1D3BAB6894FE8667594FAE2B24374002026F0001C6B773D33130828080AE1B9F9D16A35646C4C84CE4A4C3B50C84125356A74A94B009750941DC94A9DB6D91A2B75633AB573B3369C0DE7CCBD44EC08ABB268EA341FCBB53757E5B7589", &plain_text_message_length); size_t salt_length; uint8_t* salt = hex_to_bin((const int8_t*)"4739DA8E1723A178CCF278763454DAE55B67208F1D9DCB312BDA08D4402BDEAA", &salt_length); /* Encrypt */ uint8_t* ephemeral_key_compressed = NULL; ecc_compressed_mode_t ephemeral_compressed_mode = compressed_y_0; uint8_t* aes_sym_key = NULL; uint8_t* encrypted_sym_key = NULL; uint8_t* authentication_vector = NULL; uint8_t* nonce = NULL; uint8_t* encrypted_secured_message = NULL; size_t encrypted_secured_message_length = 0; EXPECT_TRUE(encrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context/*recipient's public keys*/, plain_text_message, plain_text_message_length, lib_its_security_context->public_key_c, lib_its_security_context->compressed_mode, salt, salt_length, &ephemeral_key_compressed, &ephemeral_compressed_mode, &aes_sym_key, &encrypted_sym_key, &authentication_vector, &nonce, &encrypted_secured_message, &encrypted_secured_message_length) == 0); // Test body size_t new_plain_text_message_length = 0; uint8_t* new_plain_text_message = NULL; uint8_t* new_aes_enc_sym_key = NULL; *(ephemeral_key_compressed + 1) = 0xaa; *(ephemeral_key_compressed + 2) = 0xaa; EXPECT_TRUE(decrypt_with_ecies_brainpoolp256r1_with_sha256(lib_its_security_context, encrypted_secured_message, encrypted_secured_message_length, lib_its_security_context->private_key, ephemeral_key_compressed, ephemeral_compressed_mode, encrypted_sym_key, authentication_vector, nonce, salt, salt_length, &new_aes_enc_sym_key, &new_plain_text_message, &new_plain_text_message_length) == -1); free(new_plain_text_message); free(new_aes_enc_sym_key); // Postamble free(plain_text_message); free(salt); free(aes_sym_key); free(encrypted_sym_key); free(authentication_vector); free(nonce); free(encrypted_secured_message); free(ephemeral_key_compressed); EXPECT_TRUE(lib_its_security_context->ec_key != NULL); EXPECT_TRUE(uninitialize(&lib_its_security_context) == 0); EXPECT_TRUE(lib_its_security_context == NULL); } /** * @brief Main test program * @param[in] p_argc Number of argumrnt * @param[in] p_argv List of the arguments */ int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }