Make Keymaster1Test parameterizable.
This enabled running the same test suite across different
implementations.
Bug: 20912868
Change-Id: Iaa2c4bcb38224d090aa54184a042375eb835ad60
diff --git a/android_keymaster_test.cpp b/android_keymaster_test.cpp
index 5534a3c..c83e659 100644
--- a/android_keymaster_test.cpp
+++ b/android_keymaster_test.cpp
@@ -18,12 +18,6 @@
#include <string>
#include <vector>
-#include <openssl/engine.h>
-
-#include <hardware/keymaster0.h>
-
-#include <keymaster/android_keymaster_utils.h>
-#include <keymaster/keymaster_tags.h>
#include <keymaster/soft_keymaster_device.h>
#include "android_keymaster_test_utils.h"
@@ -33,33 +27,26 @@
using std::string;
using std::vector;
-template <typename T> std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec) {
- os << "{ ";
- bool first = true;
- for (T t : vec) {
- os << (first ? "" : ", ") << t;
- if (first)
- first = false;
- }
- os << " }";
- return os;
-}
-
namespace keymaster {
namespace test {
StdoutLogger logger;
-class KeymasterTest : public Keymaster1Test {
- protected:
- KeymasterTest() {
+class SoftKeymasterTestInstanceCreator : public Keymaster1TestInstanceCreator {
+ public:
+ keymaster1_device_t* CreateDevice() const override {
+ std::cerr << "Creating SoftKeymasterDevice" << std::endl;
SoftKeymasterDevice* device = new SoftKeymasterDevice;
- init(device->keymaster_device());
+ return device->keymaster_device();
}
};
-typedef KeymasterTest CheckSupported;
-TEST_F(CheckSupported, SupportedAlgorithms) {
+static auto test_params = testing::Values(InstanceCreatorPtr(new SoftKeymasterTestInstanceCreator));
+
+typedef Keymaster1Test CheckSupported;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, CheckSupported, test_params);
+
+TEST_P(CheckSupported, SupportedAlgorithms) {
EXPECT_EQ(KM_ERROR_OUTPUT_PARAMETER_NULL,
device()->get_supported_algorithms(device(), NULL, NULL));
@@ -71,7 +58,7 @@
free(algorithms);
}
-TEST_F(CheckSupported, SupportedBlockModes) {
+TEST_P(CheckSupported, SupportedBlockModes) {
EXPECT_EQ(KM_ERROR_OUTPUT_PARAMETER_NULL,
device()->get_supported_block_modes(device(), KM_ALGORITHM_RSA, KM_PURPOSE_ENCRYPT,
NULL, NULL));
@@ -93,7 +80,7 @@
free(modes);
}
-TEST_F(CheckSupported, SupportedPaddingModes) {
+TEST_P(CheckSupported, SupportedPaddingModes) {
EXPECT_EQ(KM_ERROR_OUTPUT_PARAMETER_NULL,
device()->get_supported_padding_modes(device(), KM_ALGORITHM_RSA, KM_PURPOSE_ENCRYPT,
NULL, NULL));
@@ -121,7 +108,7 @@
&modes, &len));
}
-TEST_F(CheckSupported, SupportedDigests) {
+TEST_P(CheckSupported, SupportedDigests) {
EXPECT_EQ(
KM_ERROR_OUTPUT_PARAMETER_NULL,
device()->get_supported_digests(device(), KM_ALGORITHM_RSA, KM_PURPOSE_SIGN, NULL, NULL));
@@ -150,7 +137,7 @@
free(digests);
}
-TEST_F(CheckSupported, SupportedImportFormats) {
+TEST_P(CheckSupported, SupportedImportFormats) {
EXPECT_EQ(KM_ERROR_OUTPUT_PARAMETER_NULL,
device()->get_supported_import_formats(device(), KM_ALGORITHM_RSA, NULL, NULL));
@@ -172,7 +159,7 @@
free(formats);
}
-TEST_F(CheckSupported, SupportedExportFormats) {
+TEST_P(CheckSupported, SupportedExportFormats) {
EXPECT_EQ(KM_ERROR_OUTPUT_PARAMETER_NULL,
device()->get_supported_export_formats(device(), KM_ALGORITHM_RSA, NULL, NULL));
@@ -204,7 +191,7 @@
free(formats);
}
-class NewKeyGeneration : public KeymasterTest {
+class NewKeyGeneration : public Keymaster1Test {
protected:
void CheckBaseParams() {
EXPECT_EQ(0U, hw_enforced().size());
@@ -235,7 +222,9 @@
}
};
-TEST_F(NewKeyGeneration, Rsa) {
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, NewKeyGeneration, test_params);
+
+TEST_P(NewKeyGeneration, Rsa) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -249,7 +238,7 @@
EXPECT_TRUE(contains(auths, TAG_RSA_PUBLIC_EXPONENT, 3));
}
-TEST_F(NewKeyGeneration, RsaDefaultSize) {
+TEST_P(NewKeyGeneration, RsaDefaultSize) {
ASSERT_EQ(KM_ERROR_UNSUPPORTED_KEY_SIZE,
GenerateKey(AuthorizationSetBuilder()
.Authorization(TAG_ALGORITHM, KM_ALGORITHM_RSA)
@@ -257,7 +246,7 @@
.SigningKey()));
}
-TEST_F(NewKeyGeneration, Ecdsa) {
+TEST_P(NewKeyGeneration, Ecdsa) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(224).Digest(KM_DIGEST_NONE)));
CheckBaseParams();
@@ -267,7 +256,7 @@
EXPECT_TRUE(contains(sw_enforced(), TAG_KEY_SIZE, 224));
}
-TEST_F(NewKeyGeneration, EcdsaDefaultSize) {
+TEST_P(NewKeyGeneration, EcdsaDefaultSize) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(224).Digest(KM_DIGEST_NONE)));
CheckBaseParams();
@@ -279,27 +268,30 @@
EXPECT_TRUE(contains(sw_enforced(), TAG_KEY_SIZE, 224));
}
-TEST_F(NewKeyGeneration, EcdsaInvalidSize) {
+TEST_P(NewKeyGeneration, EcdsaInvalidSize) {
ASSERT_EQ(KM_ERROR_UNSUPPORTED_KEY_SIZE,
GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(190).Digest(KM_DIGEST_NONE)));
}
-TEST_F(NewKeyGeneration, EcdsaAllValidSizes) {
+TEST_P(NewKeyGeneration, EcdsaAllValidSizes) {
size_t valid_sizes[] = {224, 256, 384, 521};
for (size_t size : valid_sizes) {
EXPECT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(size).Digest(
KM_DIGEST_NONE)))
- << "Failed to generate size: " << size;
+ << "Failed to generate size: "
+ << size;
}
}
-TEST_F(NewKeyGeneration, HmacSha256) {
+TEST_P(NewKeyGeneration, HmacSha256) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_256)));
}
-typedef KeymasterTest GetKeyCharacteristics;
-TEST_F(GetKeyCharacteristics, SimpleRsa) {
+typedef Keymaster1Test GetKeyCharacteristics;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, GetKeyCharacteristics, test_params);
+
+TEST_P(GetKeyCharacteristics, SimpleRsa) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -310,8 +302,10 @@
EXPECT_EQ(original, sw_enforced());
}
-typedef KeymasterTest SigningOperationsTest;
-TEST_F(SigningOperationsTest, RsaSuccess) {
+typedef Keymaster1Test SigningOperationsTest;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, SigningOperationsTest, test_params);
+
+TEST_P(SigningOperationsTest, RsaSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -321,7 +315,7 @@
SignMessage(message, &signature, KM_DIGEST_NONE, KM_PAD_NONE);
}
-TEST_F(SigningOperationsTest, RsaSha256DigestSuccess) {
+TEST_P(SigningOperationsTest, RsaSha256DigestSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(384, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -331,7 +325,7 @@
SignMessage(message, &signature, KM_DIGEST_SHA_2_256, KM_PAD_RSA_PSS);
}
-TEST_F(SigningOperationsTest, RsaPssSha256Success) {
+TEST_P(SigningOperationsTest, RsaPssSha256Success) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -342,7 +336,7 @@
SignMessage(message, &signature, KM_DIGEST_SHA_2_256, KM_PAD_RSA_PSS);
}
-TEST_F(SigningOperationsTest, RsaPkcs1Sha256Success) {
+TEST_P(SigningOperationsTest, RsaPkcs1Sha256Success) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -352,7 +346,7 @@
SignMessage(message, &signature, KM_DIGEST_SHA_2_256, KM_PAD_RSA_PKCS1_1_5_SIGN);
}
-TEST_F(SigningOperationsTest, RsaPssSha256TooSmallKey) {
+TEST_P(SigningOperationsTest, RsaPssSha256TooSmallKey) {
// Key must be at least 10 bytes larger than hash, to provide minimal random salt, so verify
// that 9 bytes larger than hash won't work.
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
@@ -374,7 +368,7 @@
EXPECT_EQ(KM_ERROR_INCOMPATIBLE_DIGEST, FinishOperation(signature, &result));
}
-TEST_F(SigningOperationsTest, RsaAbort) {
+TEST_P(SigningOperationsTest, RsaAbort) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -388,7 +382,7 @@
EXPECT_EQ(KM_ERROR_INVALID_OPERATION_HANDLE, AbortOperation());
}
-TEST_F(SigningOperationsTest, RsaUnsupportedDigest) {
+TEST_P(SigningOperationsTest, RsaUnsupportedDigest) {
GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_MD5)
@@ -396,7 +390,7 @@
ASSERT_EQ(KM_ERROR_UNSUPPORTED_DIGEST, BeginOperation(KM_PURPOSE_SIGN));
}
-TEST_F(SigningOperationsTest, RsaUnsupportedPadding) {
+TEST_P(SigningOperationsTest, RsaUnsupportedPadding) {
GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_SHA_2_256 /* supported digest */)
@@ -406,7 +400,7 @@
ASSERT_EQ(KM_ERROR_UNSUPPORTED_PADDING_MODE, BeginOperation(KM_PURPOSE_SIGN, begin_params));
}
-TEST_F(SigningOperationsTest, RsaNoDigest) {
+TEST_P(SigningOperationsTest, RsaNoDigest) {
// Digest must be specified.
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaKey(256, 3).SigningKey()));
ASSERT_EQ(KM_ERROR_UNSUPPORTED_DIGEST, BeginOperation(KM_PURPOSE_SIGN));
@@ -421,7 +415,7 @@
ASSERT_EQ(KM_ERROR_INCOMPATIBLE_DIGEST, BeginOperation(KM_PURPOSE_SIGN, begin_params));
}
-TEST_F(SigningOperationsTest, RsaNoPadding) {
+TEST_P(SigningOperationsTest, RsaNoPadding) {
// Padding must be specified
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaKey(256, 3).SigningKey().Digest(
KM_DIGEST_NONE)));
@@ -430,7 +424,7 @@
ASSERT_EQ(KM_ERROR_UNSUPPORTED_PADDING_MODE, BeginOperation(KM_PURPOSE_SIGN, begin_params));
}
-TEST_F(SigningOperationsTest, RsaTooShortMessage) {
+TEST_P(SigningOperationsTest, RsaTooShortMessage) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -452,7 +446,7 @@
EXPECT_EQ(0U, signature.length());
}
-TEST_F(SigningOperationsTest, RsaSignWithEncryptionKey) {
+TEST_P(SigningOperationsTest, RsaSignWithEncryptionKey) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaEncryptionKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -461,7 +455,7 @@
ASSERT_EQ(KM_ERROR_INCOMPATIBLE_PURPOSE, BeginOperation(KM_PURPOSE_VERIFY));
}
-TEST_F(SigningOperationsTest, EcdsaSuccess) {
+TEST_P(SigningOperationsTest, EcdsaSuccess) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(224).Digest(KM_DIGEST_NONE)));
string message = "123456789012345678901234567890123456789012345678";
@@ -469,7 +463,7 @@
SignMessage(message, &signature, KM_DIGEST_NONE);
}
-TEST_F(SigningOperationsTest, AesEcbSign) {
+TEST_P(SigningOperationsTest, AesEcbSign) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().AesEncryptionKey(128).Authorization(
TAG_BLOCK_MODE, KM_MODE_ECB)));
@@ -477,7 +471,7 @@
ASSERT_EQ(KM_ERROR_INCOMPATIBLE_PURPOSE, BeginOperation(KM_PURPOSE_VERIFY));
}
-TEST_F(SigningOperationsTest, HmacSha1Success) {
+TEST_P(SigningOperationsTest, HmacSha1Success) {
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA1));
string message = "12345678901234567890123456789012";
string signature;
@@ -485,7 +479,7 @@
ASSERT_EQ(20U, signature.size());
}
-TEST_F(SigningOperationsTest, HmacSha224Success) {
+TEST_P(SigningOperationsTest, HmacSha224Success) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_224)));
string message = "12345678901234567890123456789012";
@@ -494,7 +488,7 @@
ASSERT_EQ(28U, signature.size());
}
-TEST_F(SigningOperationsTest, HmacSha256Success) {
+TEST_P(SigningOperationsTest, HmacSha256Success) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_256)));
string message = "12345678901234567890123456789012";
@@ -503,7 +497,7 @@
ASSERT_EQ(32U, signature.size());
}
-TEST_F(SigningOperationsTest, HmacSha384Success) {
+TEST_P(SigningOperationsTest, HmacSha384Success) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_384)));
@@ -513,7 +507,7 @@
ASSERT_EQ(48U, signature.size());
}
-TEST_F(SigningOperationsTest, HmacSha512Success) {
+TEST_P(SigningOperationsTest, HmacSha512Success) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_512)));
string message = "12345678901234567890123456789012";
@@ -522,7 +516,7 @@
ASSERT_EQ(64U, signature.size());
}
-TEST_F(SigningOperationsTest, HmacLengthInKey) {
+TEST_P(SigningOperationsTest, HmacLengthInKey) {
// TODO(swillden): unified API should generate an error on key generation.
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.HmacKey(128)
@@ -535,7 +529,7 @@
ASSERT_EQ(30U, signature.size());
}
-TEST_F(SigningOperationsTest, HmacRfc4231TestCase1) {
+TEST_P(SigningOperationsTest, HmacRfc4231TestCase1) {
uint8_t key_data[] = {
0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
@@ -572,7 +566,7 @@
CheckHmacTestVector(key, message, KM_DIGEST_SHA_2_512, make_string(sha_512_expected));
}
-TEST_F(SigningOperationsTest, HmacRfc4231TestCase2) {
+TEST_P(SigningOperationsTest, HmacRfc4231TestCase2) {
string key = "Jefe";
string message = "what do ya want for nothing?";
uint8_t sha_224_expected[] = {
@@ -604,7 +598,7 @@
CheckHmacTestVector(key, message, KM_DIGEST_SHA_2_512, make_string(sha_512_expected));
}
-TEST_F(SigningOperationsTest, HmacRfc4231TestCase3) {
+TEST_P(SigningOperationsTest, HmacRfc4231TestCase3) {
string key(20, 0xaa);
string message(50, 0xdd);
uint8_t sha_224_expected[] = {
@@ -636,7 +630,7 @@
CheckHmacTestVector(key, message, KM_DIGEST_SHA_2_512, make_string(sha_512_expected));
}
-TEST_F(SigningOperationsTest, HmacRfc4231TestCase4) {
+TEST_P(SigningOperationsTest, HmacRfc4231TestCase4) {
uint8_t key_data[25] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
@@ -672,7 +666,7 @@
CheckHmacTestVector(key, message, KM_DIGEST_SHA_2_512, make_string(sha_512_expected));
}
-TEST_F(SigningOperationsTest, HmacRfc4231TestCase5) {
+TEST_P(SigningOperationsTest, HmacRfc4231TestCase5) {
string key(20, 0x0c);
string message = "Test With Truncation";
@@ -699,7 +693,7 @@
CheckHmacTestVector(key, message, KM_DIGEST_SHA_2_512, make_string(sha_512_expected));
}
-TEST_F(SigningOperationsTest, HmacRfc4231TestCase6) {
+TEST_P(SigningOperationsTest, HmacRfc4231TestCase6) {
string key(131, 0xaa);
string message = "Test Using Larger Than Block-Size Key - Hash Key First";
@@ -732,7 +726,7 @@
CheckHmacTestVector(key, message, KM_DIGEST_SHA_2_512, make_string(sha_512_expected));
}
-TEST_F(SigningOperationsTest, HmacRfc4231TestCase7) {
+TEST_P(SigningOperationsTest, HmacRfc4231TestCase7) {
string key(131, 0xaa);
string message = "This is a test using a larger than block-size key and a larger than "
"block-size data. The key needs to be hashed before being used by the HMAC "
@@ -767,7 +761,7 @@
CheckHmacTestVector(key, message, KM_DIGEST_SHA_2_512, make_string(sha_512_expected));
}
-TEST_F(SigningOperationsTest, HmacSha256TooLargeMacLength) {
+TEST_P(SigningOperationsTest, HmacSha256TooLargeMacLength) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_256)));
AuthorizationSet begin_params(client_params());
@@ -784,8 +778,10 @@
// TODO(swillden): Add more verification failure tests.
-typedef KeymasterTest VerificationOperationsTest;
-TEST_F(VerificationOperationsTest, RsaSuccess) {
+typedef Keymaster1Test VerificationOperationsTest;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, VerificationOperationsTest, test_params);
+
+TEST_P(VerificationOperationsTest, RsaSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -796,7 +792,7 @@
VerifyMessage(message, signature, KM_DIGEST_NONE, KM_PAD_NONE);
}
-TEST_F(VerificationOperationsTest, RsaSha256DigestSuccess) {
+TEST_P(VerificationOperationsTest, RsaSha256DigestSuccess) {
GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(384, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -807,7 +803,7 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_256, KM_PAD_RSA_PSS);
}
-TEST_F(VerificationOperationsTest, RsaSha256CorruptSignature) {
+TEST_P(VerificationOperationsTest, RsaSha256CorruptSignature) {
GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(384, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -829,7 +825,7 @@
EXPECT_EQ(KM_ERROR_VERIFICATION_FAILED, FinishOperation(signature, &result));
}
-TEST_F(VerificationOperationsTest, RsaPssSha256Success) {
+TEST_P(VerificationOperationsTest, RsaPssSha256Success) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -841,7 +837,7 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_256, KM_PAD_RSA_PSS);
}
-TEST_F(VerificationOperationsTest, RsaPssSha256CorruptSignature) {
+TEST_P(VerificationOperationsTest, RsaPssSha256CorruptSignature) {
GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -863,7 +859,7 @@
EXPECT_EQ(KM_ERROR_VERIFICATION_FAILED, FinishOperation(signature, &result));
}
-TEST_F(VerificationOperationsTest, RsaPssSha256CorruptInput) {
+TEST_P(VerificationOperationsTest, RsaPssSha256CorruptInput) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -886,7 +882,7 @@
EXPECT_EQ(KM_ERROR_VERIFICATION_FAILED, FinishOperation(signature, &result));
}
-TEST_F(VerificationOperationsTest, RsaPkcs1Sha256Success) {
+TEST_P(VerificationOperationsTest, RsaPkcs1Sha256Success) {
GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -897,7 +893,7 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_256, KM_PAD_RSA_PKCS1_1_5_SIGN);
}
-TEST_F(VerificationOperationsTest, RsaPkcs1Sha256CorruptSignature) {
+TEST_P(VerificationOperationsTest, RsaPkcs1Sha256CorruptSignature) {
GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -919,7 +915,7 @@
EXPECT_EQ(KM_ERROR_VERIFICATION_FAILED, FinishOperation(signature, &result));
}
-TEST_F(VerificationOperationsTest, RsaPkcs1Sha256CorruptInput) {
+TEST_P(VerificationOperationsTest, RsaPkcs1Sha256CorruptInput) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(512, 3)
.Digest(KM_DIGEST_SHA_2_256)
@@ -946,7 +942,7 @@
return vector<T>(array, array + len);
}
-TEST_F(VerificationOperationsTest, RsaAllDigestAndPadCombinations) {
+TEST_P(VerificationOperationsTest, RsaAllDigestAndPadCombinations) {
// Get all supported digests and padding modes.
size_t digests_len;
keymaster_digest_t* digests;
@@ -1020,7 +1016,7 @@
free(digests);
}
-TEST_F(VerificationOperationsTest, EcdsaSuccess) {
+TEST_P(VerificationOperationsTest, EcdsaSuccess) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(256).Digest(KM_DIGEST_NONE)));
string message = "123456789012345678901234567890123456789012345678";
@@ -1029,7 +1025,7 @@
VerifyMessage(message, signature, KM_DIGEST_NONE);
}
-TEST_F(VerificationOperationsTest, HmacSha1Success) {
+TEST_P(VerificationOperationsTest, HmacSha1Success) {
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA1));
string message = "123456789012345678901234567890123456789012345678";
string signature;
@@ -1037,7 +1033,7 @@
VerifyMessage(message, signature, KM_DIGEST_SHA1);
}
-TEST_F(VerificationOperationsTest, HmacSha224Success) {
+TEST_P(VerificationOperationsTest, HmacSha224Success) {
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_224));
string message = "123456789012345678901234567890123456789012345678";
string signature;
@@ -1045,7 +1041,7 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_224);
}
-TEST_F(VerificationOperationsTest, HmacSha256Success) {
+TEST_P(VerificationOperationsTest, HmacSha256Success) {
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_256));
string message = "123456789012345678901234567890123456789012345678";
string signature;
@@ -1053,7 +1049,7 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_256);
}
-TEST_F(VerificationOperationsTest, HmacSha384Success) {
+TEST_P(VerificationOperationsTest, HmacSha384Success) {
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_384));
string message = "123456789012345678901234567890123456789012345678";
string signature;
@@ -1061,7 +1057,7 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_384);
}
-TEST_F(VerificationOperationsTest, HmacSha512Success) {
+TEST_P(VerificationOperationsTest, HmacSha512Success) {
GenerateKey(AuthorizationSetBuilder().HmacKey(128).Digest(KM_DIGEST_SHA_2_512));
string message = "123456789012345678901234567890123456789012345678";
string signature;
@@ -1069,8 +1065,10 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_512);
}
-typedef VerificationOperationsTest ExportKeyTest;
-TEST_F(ExportKeyTest, RsaSuccess) {
+typedef Keymaster1Test ExportKeyTest;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, ExportKeyTest, test_params);
+
+TEST_P(ExportKeyTest, RsaSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -1082,7 +1080,7 @@
// TODO(swillden): Verify that the exported key is actually usable to verify signatures.
}
-TEST_F(ExportKeyTest, EcdsaSuccess) {
+TEST_P(ExportKeyTest, EcdsaSuccess) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(224).Digest(KM_DIGEST_NONE)));
string export_data;
@@ -1092,7 +1090,7 @@
// TODO(swillden): Verify that the exported key is actually usable to verify signatures.
}
-TEST_F(ExportKeyTest, RsaUnsupportedKeyFormat) {
+TEST_P(ExportKeyTest, RsaUnsupportedKeyFormat) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -1101,7 +1099,7 @@
ASSERT_EQ(KM_ERROR_UNSUPPORTED_KEY_FORMAT, ExportKey(KM_KEY_FORMAT_PKCS8, &export_data));
}
-TEST_F(ExportKeyTest, RsaCorruptedKeyBlob) {
+TEST_P(ExportKeyTest, RsaCorruptedKeyBlob) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -1111,7 +1109,7 @@
ASSERT_EQ(KM_ERROR_INVALID_KEY_BLOB, ExportKey(KM_KEY_FORMAT_X509, &export_data));
}
-TEST_F(ExportKeyTest, AesKeyExportFails) {
+TEST_P(ExportKeyTest, AesKeyExportFails) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().AesEncryptionKey(128)));
string export_data;
@@ -1127,8 +1125,10 @@
return string(file_begin, file_end);
}
-typedef VerificationOperationsTest ImportKeyTest;
-TEST_F(ImportKeyTest, RsaSuccess) {
+typedef Keymaster1Test ImportKeyTest;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, ImportKeyTest, test_params);
+
+TEST_P(ImportKeyTest, RsaSuccess) {
string pk8_key = read_file("rsa_privkey_pk8.der");
ASSERT_EQ(633U, pk8_key.size());
@@ -1153,7 +1153,7 @@
VerifyMessage(message, signature, KM_DIGEST_NONE, KM_PAD_NONE);
}
-TEST_F(ImportKeyTest, OldApiRsaSuccess) {
+TEST_P(ImportKeyTest, OldApiRsaSuccess) {
string pk8_key = read_file("rsa_privkey_pk8.der");
ASSERT_EQ(633U, pk8_key.size());
@@ -1178,7 +1178,7 @@
&output_params);
}
-TEST_F(ImportKeyTest, RsaKeySizeMismatch) {
+TEST_P(ImportKeyTest, RsaKeySizeMismatch) {
string pk8_key = read_file("rsa_privkey_pk8.der");
ASSERT_EQ(633U, pk8_key.size());
ASSERT_EQ(KM_ERROR_IMPORT_PARAMETER_MISMATCH,
@@ -1189,7 +1189,7 @@
KM_KEY_FORMAT_PKCS8, pk8_key));
}
-TEST_F(ImportKeyTest, RsaPublicExponenMismatch) {
+TEST_P(ImportKeyTest, RsaPublicExponenMismatch) {
string pk8_key = read_file("rsa_privkey_pk8.der");
ASSERT_EQ(633U, pk8_key.size());
ASSERT_EQ(KM_ERROR_IMPORT_PARAMETER_MISMATCH,
@@ -1200,7 +1200,7 @@
KM_KEY_FORMAT_PKCS8, pk8_key));
}
-TEST_F(ImportKeyTest, EcdsaSuccess) {
+TEST_P(ImportKeyTest, EcdsaSuccess) {
string pk8_key = read_file("ec_privkey_pk8.der");
ASSERT_EQ(138U, pk8_key.size());
@@ -1222,7 +1222,7 @@
VerifyMessage(message, signature, KM_DIGEST_NONE);
}
-TEST_F(ImportKeyTest, EcdsaSizeSpecified) {
+TEST_P(ImportKeyTest, EcdsaSizeSpecified) {
string pk8_key = read_file("ec_privkey_pk8.der");
ASSERT_EQ(138U, pk8_key.size());
@@ -1244,7 +1244,7 @@
VerifyMessage(message, signature, KM_DIGEST_NONE);
}
-TEST_F(ImportKeyTest, EcdsaSizeMismatch) {
+TEST_P(ImportKeyTest, EcdsaSizeMismatch) {
string pk8_key = read_file("ec_privkey_pk8.der");
ASSERT_EQ(138U, pk8_key.size());
ASSERT_EQ(KM_ERROR_IMPORT_PARAMETER_MISMATCH,
@@ -1254,7 +1254,7 @@
KM_KEY_FORMAT_PKCS8, pk8_key));
}
-TEST_F(ImportKeyTest, AesKeySuccess) {
+TEST_P(ImportKeyTest, AesKeySuccess) {
char key_data[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
string key(key_data, sizeof(key_data));
ASSERT_EQ(KM_ERROR_OK,
@@ -1271,7 +1271,7 @@
EXPECT_EQ(message, plaintext);
}
-TEST_F(ImportKeyTest, HmacSha256KeySuccess) {
+TEST_P(ImportKeyTest, HmacSha256KeySuccess) {
char key_data[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
string key(key_data, sizeof(key_data));
ASSERT_EQ(KM_ERROR_OK, ImportKey(AuthorizationSetBuilder()
@@ -1289,8 +1289,10 @@
VerifyMessage(message, signature, KM_DIGEST_SHA_2_256);
}
-typedef KeymasterTest EncryptionOperationsTest;
-TEST_F(EncryptionOperationsTest, RsaOaepSuccess) {
+typedef Keymaster1Test EncryptionOperationsTest;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, EncryptionOperationsTest, test_params);
+
+TEST_P(EncryptionOperationsTest, RsaOaepSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_OAEP)));
@@ -1305,7 +1307,7 @@
EXPECT_NE(ciphertext1, ciphertext2);
}
-TEST_F(EncryptionOperationsTest, RsaOaepRoundTrip) {
+TEST_P(EncryptionOperationsTest, RsaOaepRoundTrip) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_OAEP)));
string message = "Hello World!";
@@ -1316,7 +1318,7 @@
EXPECT_EQ(message, plaintext);
}
-TEST_F(EncryptionOperationsTest, RsaOaepTooLarge) {
+TEST_P(EncryptionOperationsTest, RsaOaepTooLarge) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_OAEP)));
string message = "12345678901234567890123";
@@ -1331,7 +1333,7 @@
EXPECT_EQ(0U, result.size());
}
-TEST_F(EncryptionOperationsTest, RsaOaepCorruptedDecrypt) {
+TEST_P(EncryptionOperationsTest, RsaOaepCorruptedDecrypt) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_OAEP)));
string message = "Hello World!";
@@ -1351,7 +1353,7 @@
EXPECT_EQ(0U, result.size());
}
-TEST_F(EncryptionOperationsTest, RsaPkcs1Success) {
+TEST_P(EncryptionOperationsTest, RsaPkcs1Success) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_PKCS1_1_5_ENCRYPT)));
string message = "Hello World!";
@@ -1365,7 +1367,7 @@
EXPECT_NE(ciphertext1, ciphertext2);
}
-TEST_F(EncryptionOperationsTest, RsaPkcs1RoundTrip) {
+TEST_P(EncryptionOperationsTest, RsaPkcs1RoundTrip) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_PKCS1_1_5_ENCRYPT)));
string message = "Hello World!";
@@ -1376,7 +1378,7 @@
EXPECT_EQ(message, plaintext);
}
-TEST_F(EncryptionOperationsTest, RsaPkcs1TooLarge) {
+TEST_P(EncryptionOperationsTest, RsaPkcs1TooLarge) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_PKCS1_1_5_ENCRYPT)));
string message = "123456789012345678901234567890123456789012345678901234";
@@ -1391,7 +1393,7 @@
EXPECT_EQ(0U, result.size());
}
-TEST_F(EncryptionOperationsTest, RsaPkcs1CorruptedDecrypt) {
+TEST_P(EncryptionOperationsTest, RsaPkcs1CorruptedDecrypt) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder().RsaEncryptionKey(512, 3).Padding(
KM_PAD_RSA_PKCS1_1_5_ENCRYPT)));
string message = "Hello World!";
@@ -1411,7 +1413,7 @@
EXPECT_EQ(0U, result.size());
}
-TEST_F(EncryptionOperationsTest, RsaEncryptWithSigningKey) {
+TEST_P(EncryptionOperationsTest, RsaEncryptWithSigningKey) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.RsaSigningKey(256, 3)
.Digest(KM_DIGEST_NONE)
@@ -1420,14 +1422,14 @@
ASSERT_EQ(KM_ERROR_INCOMPATIBLE_PURPOSE, BeginOperation(KM_PURPOSE_DECRYPT));
}
-TEST_F(EncryptionOperationsTest, EcdsaEncrypt) {
+TEST_P(EncryptionOperationsTest, EcdsaEncrypt) {
ASSERT_EQ(KM_ERROR_OK,
GenerateKey(AuthorizationSetBuilder().EcdsaSigningKey(224).Digest(KM_DIGEST_NONE)));
ASSERT_EQ(KM_ERROR_INCOMPATIBLE_PURPOSE, BeginOperation(KM_PURPOSE_ENCRYPT));
ASSERT_EQ(KM_ERROR_INCOMPATIBLE_PURPOSE, BeginOperation(KM_PURPOSE_DECRYPT));
}
-TEST_F(EncryptionOperationsTest, HmacEncrypt) {
+TEST_P(EncryptionOperationsTest, HmacEncrypt) {
ASSERT_EQ(
KM_ERROR_OK,
GenerateKey(
@@ -1436,7 +1438,7 @@
ASSERT_EQ(KM_ERROR_INCOMPATIBLE_PURPOSE, BeginOperation(KM_PURPOSE_DECRYPT));
}
-TEST_F(EncryptionOperationsTest, AesEcbRoundTripSuccess) {
+TEST_P(EncryptionOperationsTest, AesEcbRoundTripSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_ECB)
@@ -1456,7 +1458,7 @@
EXPECT_EQ(message, plaintext);
}
-TEST_F(EncryptionOperationsTest, AesEcbNoPaddingWrongInputSize) {
+TEST_P(EncryptionOperationsTest, AesEcbNoPaddingWrongInputSize) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_ECB)
@@ -1475,7 +1477,7 @@
EXPECT_EQ(KM_ERROR_INVALID_INPUT_LENGTH, FinishOperation(&ciphertext));
}
-TEST_F(EncryptionOperationsTest, AesEcbPkcs7Padding) {
+TEST_P(EncryptionOperationsTest, AesEcbPkcs7Padding) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_ECB)
@@ -1491,7 +1493,7 @@
}
}
-TEST_F(EncryptionOperationsTest, AesEcbPkcs7PaddingCorrupted) {
+TEST_P(EncryptionOperationsTest, AesEcbPkcs7PaddingCorrupted) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_ECB)
@@ -1514,7 +1516,7 @@
EXPECT_EQ(KM_ERROR_INVALID_ARGUMENT, FinishOperation(&plaintext));
}
-TEST_F(EncryptionOperationsTest, AesCtrRoundTripSuccess) {
+TEST_P(EncryptionOperationsTest, AesCtrRoundTripSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CTR)
@@ -1538,7 +1540,7 @@
EXPECT_EQ(message, plaintext);
}
-TEST_F(EncryptionOperationsTest, AesCtrIncremental) {
+TEST_P(EncryptionOperationsTest, AesCtrIncremental) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CTR)
@@ -1614,7 +1616,7 @@
},
};
-TEST_F(EncryptionOperationsTest, AesCtrSp80038aTestVector) {
+TEST_P(EncryptionOperationsTest, AesCtrSp80038aTestVector) {
for (size_t i = 0; i < 3; i++) {
const AesCtrSp80038aTestVector& test(kAesCtrSp80038aTestVectors[i]);
const string key = hex2str(test.key);
@@ -1625,7 +1627,7 @@
}
}
-TEST_F(EncryptionOperationsTest, AesCtrInvalidPaddingMode) {
+TEST_P(EncryptionOperationsTest, AesCtrInvalidPaddingMode) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CTR)
@@ -1636,7 +1638,7 @@
EXPECT_EQ(KM_ERROR_INCOMPATIBLE_PADDING_MODE, BeginOperation(KM_PURPOSE_ENCRYPT, begin_params));
}
-TEST_F(EncryptionOperationsTest, AesCtrInvalidCallerNonce) {
+TEST_P(EncryptionOperationsTest, AesCtrInvalidCallerNonce) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CTR)
@@ -1650,7 +1652,7 @@
EXPECT_EQ(KM_ERROR_INVALID_NONCE, BeginOperation(KM_PURPOSE_ENCRYPT, input_params));
}
-TEST_F(EncryptionOperationsTest, AesCbcRoundTripSuccess) {
+TEST_P(EncryptionOperationsTest, AesCbcRoundTripSuccess) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CBC)
@@ -1673,7 +1675,7 @@
EXPECT_EQ(message, plaintext);
}
-TEST_F(EncryptionOperationsTest, AesCallerNonce) {
+TEST_P(EncryptionOperationsTest, AesCallerNonce) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CBC)
@@ -1714,7 +1716,7 @@
EXPECT_NE(message, plaintext);
}
-TEST_F(EncryptionOperationsTest, AesCallerNonceProhibited) {
+TEST_P(EncryptionOperationsTest, AesCallerNonceProhibited) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CBC)
@@ -1742,7 +1744,7 @@
BeginOperation(KM_PURPOSE_ENCRYPT, input_params, &output_params));
}
-TEST_F(EncryptionOperationsTest, AesCbcIncrementalNoPadding) {
+TEST_P(EncryptionOperationsTest, AesCbcIncrementalNoPadding) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CBC)
@@ -1781,7 +1783,7 @@
EXPECT_EQ(message, plaintext);
}
-TEST_F(EncryptionOperationsTest, AesCbcPkcs7Padding) {
+TEST_P(EncryptionOperationsTest, AesCbcPkcs7Padding) {
ASSERT_EQ(KM_ERROR_OK, GenerateKey(AuthorizationSetBuilder()
.AesEncryptionKey(128)
.Authorization(TAG_BLOCK_MODE, KM_MODE_CBC)
@@ -1798,8 +1800,10 @@
}
}
-typedef KeymasterTest AddEntropyTest;
-TEST_F(AddEntropyTest, AddEntropy) {
+typedef Keymaster1Test AddEntropyTest;
+INSTANTIATE_TEST_CASE_P(AndroidKeymasterTest, AddEntropyTest, test_params);
+
+TEST_P(AddEntropyTest, AddEntropy) {
// There's no obvious way to test that entropy is actually added, but we can test that the API
// doesn't blow up or return an error.
EXPECT_EQ(KM_ERROR_OK,