diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_types.h b/libwvdrmengine/cdm/core/include/wv_cdm_types.h index 111ae3a0..b7b691cb 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_types.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_types.h @@ -333,9 +333,10 @@ enum CdmResponseType { GET_PROVISIONING_METHOD_ERROR = 289, SESSION_NOT_FOUND_17 = 290, SESSION_NOT_FOUND_18 = 291, - /* Error code 292 can be reused as it was never present in a release */ + NO_CONTENT_KEY_3 = 292, DEVICE_CANNOT_REPROVISION = 293, SESSION_NOT_FOUND_19 = 294, + // Don't forget to add new values to ../test/test_printers.cpp. }; enum CdmKeyStatus { diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index 3451527b..7d8b0f0f 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -981,6 +981,8 @@ CdmResponseType CryptoSession::SelectKey(const std::string& key_id, return NO_DEVICE_KEY_1; case OEMCrypto_ERROR_NO_CONTENT_KEY: return NO_CONTENT_KEY_2; + case OEMCrypto_KEY_NOT_LOADED: + return NO_CONTENT_KEY_3; case OEMCrypto_ERROR_INSUFFICIENT_RESOURCES: return INSUFFICIENT_CRYPTO_RESOURCES_2; case OEMCrypto_ERROR_UNKNOWN_FAILURE: diff --git a/libwvdrmengine/cdm/core/test/generic_crypto_unittest.cpp b/libwvdrmengine/cdm/core/test/generic_crypto_unittest.cpp index d8a188fd..ef571df8 100644 --- a/libwvdrmengine/cdm/core/test/generic_crypto_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/generic_crypto_unittest.cpp @@ -258,7 +258,7 @@ TEST_F(WvGenericOperationsTest, GenericEncryptNoKey) { cdm_sts = cdm_engine_->GenericEncrypt(session_id_, in_buffer, key_id, iv, wvcdm::kEncryptionAlgorithmAesCbc128, &out_buffer); - EXPECT_EQ(NO_CONTENT_KEY_2, cdm_sts); + EXPECT_EQ(NO_CONTENT_KEY_3, cdm_sts); } TEST_F(WvGenericOperationsTest, GenericEncryptKeyNotAllowed) { diff --git a/libwvdrmengine/cdm/core/test/test_printers.cpp b/libwvdrmengine/cdm/core/test/test_printers.cpp index 582e7928..be03e4ce 100644 --- a/libwvdrmengine/cdm/core/test/test_printers.cpp +++ b/libwvdrmengine/cdm/core/test/test_printers.cpp @@ -395,6 +395,8 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) { break; case NO_CONTENT_KEY_2: *os << "NO_CONTENT_KEY_2"; break; + case NO_CONTENT_KEY_3: *os << "NO_CONTENT_KEY_3"; + break; case INSUFFICIENT_CRYPTO_RESOURCES_2: *os << "INSUFFICIENT_CRYPTO_RESOURCES_2"; break; diff --git a/libwvdrmengine/include/mapErrors-inl.h b/libwvdrmengine/include/mapErrors-inl.h index 11ffe9f1..eb146464 100644 --- a/libwvdrmengine/include/mapErrors-inl.h +++ b/libwvdrmengine/include/mapErrors-inl.h @@ -27,6 +27,7 @@ static android::status_t mapCdmResponseType(wvcdm::CdmResponseType res) { case wvcdm::DECRYPT_NOT_READY: case wvcdm::KEY_NOT_FOUND_IN_SESSION: case wvcdm::NO_MATCHING_ENTITLEMENT_KEY: + case wvcdm::NO_CONTENT_KEY_3: return android::ERROR_DRM_NO_LICENSE; case wvcdm::NEED_PROVISIONING: return android::ERROR_DRM_NOT_PROVISIONED; diff --git a/libwvdrmengine/include_hidl/mapErrors-inl.h b/libwvdrmengine/include_hidl/mapErrors-inl.h index 72f2eab4..6fdd4c8c 100644 --- a/libwvdrmengine/include_hidl/mapErrors-inl.h +++ b/libwvdrmengine/include_hidl/mapErrors-inl.h @@ -30,6 +30,7 @@ static Status mapCdmResponseType(wvcdm::CdmResponseType res) { case wvcdm::KEY_NOT_FOUND_IN_SESSION: case wvcdm::NEED_KEY: case wvcdm::NO_MATCHING_ENTITLEMENT_KEY: + case wvcdm::NO_CONTENT_KEY_3: return Status::ERROR_DRM_NO_LICENSE; case wvcdm::NEED_PROVISIONING: diff --git a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp index cc29b6fd..6dae3c6e 100644 --- a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp +++ b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp @@ -1224,8 +1224,8 @@ OEMCryptoResult SessionContext::SelectContentKey( } Key* content_key = session_keys_->Find(key_id); if (NULL == content_key) { - LOGE("[SelectContentKey(): No key matches key id]"); - return OEMCrypto_ERROR_NO_CONTENT_KEY; + LOGE("No key matches key id"); + return OEMCrypto_KEY_NOT_LOADED; } if (LogCategoryEnabled(kLoggingTraceDecryption)) { LOGI((" Select Key: key = " + wvcdm::b2a_hex(content_key->value()))