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

Commit 303092c4 authored by David Drysdale's avatar David Drysdale Committed by Automerger Merge Worker
Browse files

Add check_feature helper am: b7d44a2e am: bd74aa90

parents db9c1fdc bd74aa90
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -31,8 +31,10 @@ cc_defaults {
        "VtsHalTargetTestDefaults",
    ],
    shared_libs: [
        "libbinder",
        "libbinder_ndk",
        "libcrypto",
        "packagemanager_aidl-cpp",
    ],
    static_libs: [
        "android.hardware.security.secureclock-V1-ndk",
+24 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@

#include <android-base/logging.h>
#include <android/binder_manager.h>
#include <android/content/pm/IPackageManagerNative.h>
#include <cppbor_parse.h>
#include <cutils/properties.h>
#include <gmock/gmock.h>
@@ -1923,6 +1924,29 @@ void p256_pub_key(const vector<uint8_t>& coseKeyData, EVP_PKEY_Ptr* signingKey)
    *signingKey = std::move(pubKey);
}

// Check whether the given named feature is available.
bool check_feature(const std::string& name) {
    ::android::sp<::android::IServiceManager> sm(::android::defaultServiceManager());
    ::android::sp<::android::IBinder> binder(sm->getService(::android::String16("package_native")));
    if (binder == nullptr) {
        GTEST_LOG_(ERROR) << "getService package_native failed";
        return false;
    }
    ::android::sp<::android::content::pm::IPackageManagerNative> packageMgr =
            ::android::interface_cast<::android::content::pm::IPackageManagerNative>(binder);
    if (packageMgr == nullptr) {
        GTEST_LOG_(ERROR) << "Cannot find package manager";
        return false;
    }
    bool hasFeature = false;
    auto status = packageMgr->hasSystemFeature(::android::String16(name.c_str()), 0, &hasFeature);
    if (!status.isOk()) {
        GTEST_LOG_(ERROR) << "hasSystemFeature('" << name << "') failed: " << status;
        return false;
    }
    return hasFeature;
}

}  // namespace test

}  // namespace aidl::android::hardware::security::keymint
+1 −0
Original line number Diff line number Diff line
@@ -386,6 +386,7 @@ vector<uint8_t> make_name_from_str(const string& name);
void check_maced_pubkey(const MacedPublicKey& macedPubKey, bool testMode,
                        vector<uint8_t>* payload_value);
void p256_pub_key(const vector<uint8_t>& coseKeyData, EVP_PKEY_Ptr* signingKey);
bool check_feature(const std::string& name);

AuthorizationSet HwEnforcedAuthorizations(const vector<KeyCharacteristics>& key_characteristics);
AuthorizationSet SwEnforcedAuthorizations(const vector<KeyCharacteristics>& key_characteristics);