mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Merge "KeyMint: test for unique HMAC results" into main am: e4d1d2dec7
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/3055482 Change-Id: Iac2ba94af4f740dd98dea338c41bfda431512d78 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <set>
|
||||
|
||||
#include <openssl/curve25519.h>
|
||||
#include <openssl/ec.h>
|
||||
@@ -3587,6 +3588,42 @@ TEST_P(SigningOperationsTest, HmacAllDigests) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* SigningOperationsTest.HmacMessageDigestUnique
|
||||
*
|
||||
* Verifies that HMAC with different keys gives different results.
|
||||
*/
|
||||
TEST_P(SigningOperationsTest, HmacMessageDigestUnique) {
|
||||
for (int key_len : {64, 128, 192, 256, 512}) {
|
||||
for (int msg_len = 0; msg_len <= 30; msg_len += 10) {
|
||||
string message = string(msg_len, 'x');
|
||||
for (auto digest : ValidDigests(false /* withNone */, false /* withMD5 */)) {
|
||||
SCOPED_TRACE(testing::Message() << "Digest::" << digest << "::MsgLen::" << msg_len);
|
||||
|
||||
int count = 10;
|
||||
std::set<string> results;
|
||||
for (int ii = 0; ii < count; ii++) {
|
||||
ASSERT_EQ(ErrorCode::OK,
|
||||
GenerateKey(AuthorizationSetBuilder()
|
||||
.Authorization(TAG_NO_AUTH_REQUIRED)
|
||||
.HmacKey(key_len)
|
||||
.Digest(digest)
|
||||
.Authorization(TAG_MIN_MAC_LENGTH, 160)))
|
||||
<< "Failed to create HMAC key with digest " << digest;
|
||||
string signature = MacMessage(message, digest, 160);
|
||||
EXPECT_EQ(160U / 8U, signature.size())
|
||||
<< "Failed to sign with HMAC key with digest " << digest;
|
||||
CheckedDeleteKey();
|
||||
results.insert(signature);
|
||||
}
|
||||
EXPECT_EQ(results.size(), count)
|
||||
<< "HMAC of a message '" << message << "' with " << count
|
||||
<< " fresh keys only gave " << results.size() << " distinct results";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* SigningOperationsTest.HmacSha256TooLargeMacLength
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user