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

Commit bd3ca7a9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "DrmRkpAdapter: only return HALs supporting get bcc" into main

parents e1f45da5 569e8255
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -35,7 +35,7 @@ using ::ndk::ScopedAStatus;
class DrmRemotelyProvisionedComponent : public BnRemotelyProvisionedComponent {
class DrmRemotelyProvisionedComponent : public BnRemotelyProvisionedComponent {
  public:
  public:
    DrmRemotelyProvisionedComponent(std::shared_ptr<IDrmPlugin> drm, std::string drmVendor,
    DrmRemotelyProvisionedComponent(std::shared_ptr<IDrmPlugin> drm, std::string drmVendor,
                                    std::string drmDesc);
                                    std::string drmDesc, std::vector<uint8_t> bcc);
    ScopedAStatus getHardwareInfo(RpcHardwareInfo* info) override;
    ScopedAStatus getHardwareInfo(RpcHardwareInfo* info) override;


    ScopedAStatus generateEcdsaP256KeyPair(bool testMode, MacedPublicKey* macedPublicKey,
    ScopedAStatus generateEcdsaP256KeyPair(bool testMode, MacedPublicKey* macedPublicKey,
@@ -59,6 +59,7 @@ class DrmRemotelyProvisionedComponent : public BnRemotelyProvisionedComponent {
    std::shared_ptr<IDrmPlugin> mDrm;
    std::shared_ptr<IDrmPlugin> mDrm;
    std::string mDrmVendor;
    std::string mDrmVendor;
    std::string mDrmDesc;
    std::string mDrmDesc;
    std::vector<uint8_t> mBcc;
};
};
}  // namespace android::mediadrm
}  // namespace android::mediadrm


+8 −11
Original line number Original line Diff line number Diff line
@@ -27,8 +27,13 @@
namespace android::mediadrm {
namespace android::mediadrm {
DrmRemotelyProvisionedComponent::DrmRemotelyProvisionedComponent(std::shared_ptr<IDrmPlugin> drm,
DrmRemotelyProvisionedComponent::DrmRemotelyProvisionedComponent(std::shared_ptr<IDrmPlugin> drm,
                                                                 std::string drmVendor,
                                                                 std::string drmVendor,
                                                                 std::string drmDesc)
                                                                 std::string drmDesc,
    : mDrm(std::move(drm)), mDrmVendor(std::move(drmVendor)), mDrmDesc(std::move(drmDesc)) {}
                                                                 std::vector<uint8_t> bcc)
    : mDrm(std::move(drm)),
      mDrmVendor(std::move(drmVendor)),
      mDrmDesc(std::move(drmDesc)),
      mBcc(std::move(bcc)) {}

ScopedAStatus DrmRemotelyProvisionedComponent::getHardwareInfo(RpcHardwareInfo* info) {
ScopedAStatus DrmRemotelyProvisionedComponent::getHardwareInfo(RpcHardwareInfo* info) {
    info->versionNumber = 3;
    info->versionNumber = 3;
    info->rpcAuthorName = mDrmVendor;
    info->rpcAuthorName = mDrmVendor;
@@ -133,14 +138,6 @@ ScopedAStatus DrmRemotelyProvisionedComponent::generateCertificateRequestV2(
        return status;
        return status;
    }
    }


    std::vector<uint8_t> bcc;
    status = mDrm->getPropertyByteArray("bootCertificateChain", &bcc);
    if (!status.isOk()) {
        ALOGE("getPropertyByteArray bootCertificateChain failed. Details: [%s].",
              status.getDescription().c_str());
        return status;
    }

    std::vector<uint8_t> deviceInfo;
    std::vector<uint8_t> deviceInfo;
    status = getDeviceInfo(&deviceInfo);
    status = getDeviceInfo(&deviceInfo);
    if (!status.isOk()) {
    if (!status.isOk()) {
@@ -167,7 +164,7 @@ ScopedAStatus DrmRemotelyProvisionedComponent::generateCertificateRequestV2(
    *out = cppbor::Array()
    *out = cppbor::Array()
                   .add(1 /* version */)
                   .add(1 /* version */)
                   .add(cppbor::Map() /* UdsCerts */)
                   .add(cppbor::Map() /* UdsCerts */)
                   .add(cppbor::EncodedItem(std::move(bcc)))
                   .add(cppbor::EncodedItem(mBcc))
                   .add(cppbor::EncodedItem(std::move(deviceSignedCsrPayload)))
                   .add(cppbor::EncodedItem(std::move(deviceSignedCsrPayload)))
                   .encode();
                   .encode();
    return ScopedAStatus::ok();
    return ScopedAStatus::ok();
+11 −2
Original line number Original line Diff line number Diff line
@@ -79,12 +79,21 @@ getDrmRemotelyProvisionedComponents() {
                    return;
                    return;
                }
                }


                std::string compName = "DrmRemotelyProvisionedComponent_" + std::string(instance);
                std::vector<uint8_t> bcc;
                status = mDrm->getPropertyByteArray("bootCertificateChain", &bcc);
                if (!status.isOk()) {
                    ALOGE("mDrm->getPropertyByteArray(\"bootCertificateChain\") failed."
                          "Detail: [%s].",
                          status.getDescription().c_str());
                    return;
                }

                std::string compName(instance);
                auto comps = static_cast<
                auto comps = static_cast<
                        std::map<std::string, std::shared_ptr<IRemotelyProvisionedComponent>>*>(
                        std::map<std::string, std::shared_ptr<IRemotelyProvisionedComponent>>*>(
                        context);
                        context);
                (*comps)[compName] = ::ndk::SharedRefBase::make<DrmRemotelyProvisionedComponent>(
                (*comps)[compName] = ::ndk::SharedRefBase::make<DrmRemotelyProvisionedComponent>(
                        mDrm, drmVendor, drmDesc);
                        mDrm, drmVendor, drmDesc, bcc);
            });
            });
    return comps;
    return comps;
}
}