Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9c7d312 authored by Seth Moore's avatar Seth Moore Committed by Automerger Merge Worker
Browse files

Generate COSE MAC with a callback, not raw key am: 7735ba5e

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/interfaces/+/14703695

Change-Id: I84a5546899424faae2982ac5938bcc3d51a69413
parents bc490291 7735ba5e
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -44,7 +44,9 @@ using std::unique_ptr;
using ::testing::AssertionFailure;
using ::testing::AssertionResult;
using ::testing::AssertionSuccess;
using ::testing::ElementsAreArray;
using ::testing::MatchesRegex;
using ::testing::Not;

::std::ostream& operator<<(::std::ostream& os, const AuthorizationSet& set) {
    if (set.size() == 0)
@@ -1548,14 +1550,17 @@ void check_maced_pubkey(const MacedPublicKey& macedPubKey, bool testMode,
    EXPECT_EQ(extractedTag.size(), 32U);

    // Compare with tag generated with kTestMacKey.  Should only match in test mode
    auto testTag = cppcose::generateCoseMac0Mac(remote_prov::kTestMacKey, {} /* external_aad */,
                                                payload->value());
    auto macFunction = [](const cppcose::bytevec& input) {
        return cppcose::generateHmacSha256(remote_prov::kTestMacKey, input);
    };
    auto testTag =
            cppcose::generateCoseMac0Mac(macFunction, {} /* external_aad */, payload->value());
    ASSERT_TRUE(testTag) << "Tag calculation failed: " << testTag.message();

    if (testMode) {
        EXPECT_EQ(*testTag, extractedTag);
        EXPECT_THAT(*testTag, ElementsAreArray(extractedTag));
    } else {
        EXPECT_NE(*testTag, extractedTag);
        EXPECT_THAT(*testTag, Not(ElementsAreArray(extractedTag)));
    }
    if (payload_value != nullptr) {
        *payload_value = payload->value();