@@ -42,10 +42,17 @@ TEST_CASE("SNP derive key")
4242 ccf::ds::to_hex (key1->get_raw ()), ccf::ds::to_hex (key2->get_raw ()));
4343
4444 std::vector<uint8_t > expected_plaintext = {0xde , 0xad , 0xbe , 0xef };
45- auto ciphertext =
46- ccf::crypto::aes_gcm_encrypt (key1->get_raw (), expected_plaintext);
47- auto decrypted_plaintext =
48- ccf::crypto::aes_gcm_decrypt (key2->get_raw (), ciphertext);
45+ auto entropy = ccf::crypto::get_entropy ();
46+ auto iv = entropy->random (ccf::crypto::iv_size);
47+
48+ auto k1 = ccf::crypto::make_key_aes_gcm (key1->get_raw ());
49+ std::vector<uint8_t > cipher;
50+ uint8_t tag[ccf::crypto::GCM_SIZE_TAG];
51+ k1->encrypt (iv, expected_plaintext, {}, cipher, tag);
52+
53+ auto k2 = ccf::crypto::make_key_aes_gcm (key2->get_raw ());
54+ std::vector<uint8_t > decrypted_plaintext;
55+ REQUIRE (k2->decrypt (iv, tag, cipher, {}, decrypted_plaintext));
4956
5057 CHECK_EQ (
5158 ccf::ds::to_hex (expected_plaintext), ccf::ds::to_hex (decrypted_plaintext));
@@ -63,21 +70,17 @@ TEST_CASE("SNP derived keys with different TCBs should be different")
6370 CHECK_NE (ccf::ds::to_hex (key1->get_raw ()), ccf::ds::to_hex (key2->get_raw ()));
6471
6572 std::vector<uint8_t > expected_plaintext = {0xde , 0xad , 0xbe , 0xef };
66- bool threw = false ;
67- try
68- {
69- auto ciphertext =
70- ccf::crypto::aes_gcm_encrypt (key1->get_raw (), expected_plaintext);
71- auto decrypted_plaintext =
72- ccf::crypto::aes_gcm_decrypt (key2->get_raw (), ciphertext);
73- }
74- catch (std::runtime_error& e)
75- {
76- CHECK (std::string (e.what ()) == " Failed to decrypt" );
77- threw = true ;
78- }
73+ auto entropy = ccf::crypto::get_entropy ();
74+ auto iv = entropy->random (ccf::crypto::iv_size);
75+
76+ auto k1 = ccf::crypto::make_key_aes_gcm (key1->get_raw ());
77+ std::vector<uint8_t > cipher;
78+ uint8_t tag[ccf::crypto::GCM_SIZE_TAG];
79+ k1->encrypt (iv, expected_plaintext, {}, cipher, tag);
7980
80- CHECK (threw == true );
81+ auto k2 = ccf::crypto::make_key_aes_gcm (key2->get_raw ());
82+ std::vector<uint8_t > decrypted_plaintext;
83+ CHECK_FALSE (k2->decrypt (iv, tag, cipher, {}, decrypted_plaintext));
8184}
8285
8386int main (int argc, char ** argv)
0 commit comments