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

Commit fc746fb1 authored by Seth Moore's avatar Seth Moore Committed by Gerrit Code Review
Browse files

Merge "Do not require StrongBox to implement RKP"

parents 2154b453 5a0320fb
Loading
Loading
Loading
Loading
+19 −15
Original line number Diff line number Diff line
@@ -590,8 +590,7 @@ string device_suffix(const string& name) {
    return name.substr(pos + 1);
}

bool matching_rp_instance(const string& km_name,
                          std::shared_ptr<IRemotelyProvisionedComponent>* rp) {
std::shared_ptr<IRemotelyProvisionedComponent> matching_rp_instance(const std::string& km_name) {
    string km_suffix = device_suffix(km_name);

    vector<string> rp_names =
@@ -601,11 +600,10 @@ bool matching_rp_instance(const string& km_name,
        // KeyMint instance, assume they match.
        if (device_suffix(rp_name) == km_suffix && AServiceManager_isDeclared(rp_name.c_str())) {
            ::ndk::SpAIBinder binder(AServiceManager_waitForService(rp_name.c_str()));
            *rp = IRemotelyProvisionedComponent::fromBinder(binder);
            return true;
            return IRemotelyProvisionedComponent::fromBinder(binder);
        }
    }
    return false;
    return nullptr;
}

}  // namespace
@@ -1140,11 +1138,14 @@ TEST_P(NewKeyGenerationTest, RsaWithRkpAttestation) {
        GTEST_SKIP() << "RKP support is not required on this platform";
    }

    // There should be an IRemotelyProvisionedComponent instance associated with the KeyMint
    // instance.
    std::shared_ptr<IRemotelyProvisionedComponent> rp;
    ASSERT_TRUE(matching_rp_instance(GetParam(), &rp))
            << "No IRemotelyProvisionedComponent found that matches KeyMint device " << GetParam();
    // Check for an IRemotelyProvisionedComponent instance associated with the
    // KeyMint instance.
    std::shared_ptr<IRemotelyProvisionedComponent> rp = matching_rp_instance(GetParam());
    if (rp == nullptr && SecLevel() == SecurityLevel::STRONGBOX) {
        GTEST_SKIP() << "Encountered StrongBox implementation that does not support RKP";
    }
    ASSERT_NE(rp, nullptr) << "No IRemotelyProvisionedComponent found that matches KeyMint device "
                           << GetParam();

    // Generate a P-256 keypair to use as an attestation key.
    MacedPublicKey macedPubKey;
@@ -1218,11 +1219,14 @@ TEST_P(NewKeyGenerationTest, EcdsaWithRkpAttestation) {
        GTEST_SKIP() << "RKP support is not required on this platform";
    }

    // There should be an IRemotelyProvisionedComponent instance associated with the KeyMint
    // instance.
    std::shared_ptr<IRemotelyProvisionedComponent> rp;
    ASSERT_TRUE(matching_rp_instance(GetParam(), &rp))
            << "No IRemotelyProvisionedComponent found that matches KeyMint device " << GetParam();
    // Check for an IRemotelyProvisionedComponent instance associated with the
    // KeyMint instance.
    std::shared_ptr<IRemotelyProvisionedComponent> rp = matching_rp_instance(GetParam());
    if (rp == nullptr && SecLevel() == SecurityLevel::STRONGBOX) {
        GTEST_SKIP() << "Encountered StrongBox implementation that does not support RKP";
    }
    ASSERT_NE(rp, nullptr) << "No IRemotelyProvisionedComponent found that matches KeyMint device "
                           << GetParam();

    // Generate a P-256 keypair to use as an attestation key.
    MacedPublicKey macedPubKey;