These are a set of CLs merged from the wv cdm repo to the android repo. * Get System ID From OEM Cert Author: John W. Bruce <juce@google.com> [ Merge of http://go/wvgerrit/37940 ] (This is a merge of http://go/wvgerrit/30220 . However, it has been significantly modified in the merge due to needing to support both OpenSSL and BoringSSL.) Previously, extracting the system ID was only supported on Keybox-based systems. This patch adds support for extracting the system ID from the OEM Certificate chain on Provisioning 3.0 devices. This is done by getting the Widevine intermediate cert from the chain, finding the Widevine System ID extension in that cert, and extracting the value. The code that does the extraction is separate from any code that calls OEMCrypto so that it can be unit-tested in isolation. This patch adds a crypto_session_unittest test to do this unit-testing. Bug: 34776194 Test: crypto_session_unittest Test: widevine_ce_cdm_unittest * Remove unique_ptr from oemcrypto mod mock Author: Fred Gylys-Colwell <fredgc@google.com> [ Merge of http://go/wvgerrit/38500 ] Because we can't have C++11. Bug: 69935608 * Update CHANGELOG.md Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/38460 ] - Add items about adapter support. - Add mention of SRM support. Merged from cdm_partner_3.5 (Change-Id: I6d891e157edc3afb2797bf281ef3f06bdb8fe474) * Add Adapter for OEMCrypto v13 to v12. Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/38440 ] Also fix OEMCrypto_LoadKeys() definition broken by wvcl/38160 (srm_requirement param). * Allow certain warnings in protobuf build. Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/38424 ] maybe-uninitialized is triggered in release build. Allow it. * Enable -fPIC for jsmc.c build. Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/38423 ] -fPIC was removed for common c/c++ build rules. Add it back. * Missing OEMCrypto_LoadKeys param in static adapter. Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/38422 ] srm_requirement param was omitted in v11 static adapter. * Remove OEMCrypto v12 specification. Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/38421 ] * Update documentation for v3.5. Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/38420 ] * Added padded preprov key for 7880 Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/36924 ] Bug: 68765915 * Change overrides in CE L3FileSystem Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/38380 ] The 'override's are changed to the macro defined in override.h to be gnu++98 compliant. * Use source android level3 + add cache_flush call Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/37900 ] I put both changes in this CL since I have to generate Level3 libraries for both anyways. The first change involves shifting from using a prebuilt static library to using an obfuscated source library output from the Haystack tool on google3. The second change is from here: https://critique.corp.google.com/#review/176536782, and addresses b/69387416. Since the cache_flush function wasn't being used, the execution on Angler gave inconsistent segfaults, which this CL fixes. Verified on Angler, Sailfish, and Linux. 11/27/17: Added mips and mips64 libraries. * Make CDM result codes constexprs Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/38280 ] The values in the enumeration list of CdmResponseType error codes were earlier implicit. Comments were added to denote the actual values. This changes to make it fixed values, which makes it slightly more error prone, but cleaner when errors are retired. * Change watchdog timer to 2 minutes [ Merge of http://go/wvgerrit/36340 ] This relaxes the watchdog timer around the level 3 oemcrypto initialization to 120 seconds. There are also a couple of new log messages at the end of initialization and at termination. Library for arm updated: level3/arm/libwvlevel3.a Level3 Library 4445 Oct 4 2017 17:06:25 Bug: 65379279 Merged from https://widevine-internal-review.googlesource.com/35480 * Add test to get service certificate from server. Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/37780 ] This was extracted from Ic38dd27d06dc7528ae4cd995da4261fe6c34ad55 * Add watch dog timer to OEMCrypto L3 commit ec624ea483cbf8fb3d4e8f393bc25c90a0e29d4b Author: Fred Gylys-Colwell <fredgc@google.com> [ Merge of http://go/wvgerrit/34260 ] This code adds a watchdog timer to the level 3 initialization. If initialization does not finish within 5 seconds, the process will abort, printing a small amount of debugging information. arm/libwvlevel3.a Level3 Library 4445 Sep 11 2017 14:05:15 Test: unit tests on bullhead. Video on Play Movies. GTS tests run on loop overnight. Bug: 65379279 Merged from https://widevine-internal-review.googlesource.com/33540 * Remove libwidevinehidl_utils dependency Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/37822 ] libwvdrmcryptoplugin_hidl has a dependency on libwidevinehidl_utils which was introduced due to an out of order merge from oc-mr1-dev to master. Bug: 69573113 * Automatically generate log location information Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/36563 ] Currently class and method names are manually added to each log message in the CDM on android and some other platforms. This change prepends log messages with file name, line number and function name automatically. The code is platform specific so it can be enabled and the precise format configured on a per-platform basis. As an example, here is a log on android before the change, 11-01 02:48:48.658 D/WVCdm (32198): CryptoSession::Open: Lock: requested_security_level: Default and after, 11-01 02:48:48.658 D/WVCdm (32198): [crypto_session.cpp(1108):Open] Lock: requested_security_level: Default A follow on CL will remove the manually added class/method information. Bug: 9261010 * Fix BoringSSL Compatibility of oec_session_util.cpp Author: John W. Bruce <juce@google.com> [ Merge of http://go/wvgerrit/37121 ] A previous change inadvertantly used APIs from OpenSSL that do not exist in BoringSSL in oec_session_util.cpp. As a temporary fix until we can move all targets to BoringSSL, this patch switches that file to use conditional compilation to choose the correct API depending on the library in use. It does not otherwise change the behavior of the file. Bug: 67908123 Test: wv_ce_cdm_unittest on x86-64 Test: linux_unit_tests * Create local shared_ptr implementation Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/37600 ] Derived from protobuf version, which came from google3. Removed locking (not thread-safe) and removed weak pointers (not needed for usages in CDM). Locking can easily be added if needed. * Revert C++11 usage - back to gnu++98 Author: Gene Morgan <gmorgan@google.com> [ Merge of http://go/wvgerrit/37440 ] These changes roll back C++11-specific constructs: std::unique_ptr -> std::auto_ptr container initializers nullptr -> NULL std::shared_ptr to local shared_ptr compiler flags (-std=c++11 -> -sdt=gnu++98) NOTE: the "local" shared_ptr implementation is temporarily a direct reference to the shared_ptr implementation in third_party/protobuf. This has been fixed (implementation extracted and moved to core/include) in CL 37600. BUG: 71650075 Test: Not currently passing. Will be addressed in a subsequent commit in the chain. Change-Id: Ie09ecb970aa06fe9301ac255375ca7d8e7ead8bc
556 lines
22 KiB
C++
556 lines
22 KiB
C++
//
|
|
// Copyright 2013 Google Inc. All Rights Reserved.
|
|
//
|
|
|
|
#ifndef WV_MAP_ERRORS_H_
|
|
#define WV_MAP_ERRORS_H_
|
|
|
|
#include "media/stagefright/MediaErrors.h"
|
|
#include "utils/Errors.h"
|
|
#include "wv_cdm_types.h"
|
|
#include "WVErrors.h"
|
|
|
|
namespace wvdrm {
|
|
|
|
static android::status_t mapCdmResponseType(wvcdm::CdmResponseType res) {
|
|
switch (res) {
|
|
case wvcdm::NO_ERROR:
|
|
case wvcdm::KEY_ADDED:
|
|
case wvcdm::KEY_MESSAGE:
|
|
case wvcdm::KEY_CANCELED:
|
|
// KEY_ADDED, KEY_MESSAGE, and KEY_CANCELLED are all alternative
|
|
// success messages for certain CDM methods instead of NO_ERROR.
|
|
return android::OK;
|
|
case wvcdm::NEED_KEY:
|
|
case wvcdm::DECRYPT_NOT_READY:
|
|
case wvcdm::KEY_NOT_FOUND_IN_SESSION:
|
|
return android::ERROR_DRM_NO_LICENSE;
|
|
case wvcdm::NEED_PROVISIONING:
|
|
return android::ERROR_DRM_NOT_PROVISIONED;
|
|
case wvcdm::DEVICE_REVOKED:
|
|
return android::ERROR_DRM_DEVICE_REVOKED;
|
|
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES:
|
|
return android::ERROR_DRM_RESOURCE_BUSY;
|
|
case wvcdm::ADD_KEY_ERROR:
|
|
return kAddKeyError;
|
|
case wvcdm::CERT_PROVISIONING_GET_KEYBOX_ERROR_1:
|
|
return kCertProvisioningGetKeyboxError1;
|
|
case wvcdm::CERT_PROVISIONING_GET_KEYBOX_ERROR_2:
|
|
return kCertProvisioningGetKeyboxError2;
|
|
case wvcdm::CERT_PROVISIONING_INVALID_CERT_TYPE:
|
|
return kCertProvisioningInvalidCertType;
|
|
case wvcdm::CERT_PROVISIONING_REQUEST_ERROR_1:
|
|
return kCertProvisioningRequestError1;
|
|
case wvcdm::CERT_PROVISIONING_NONCE_GENERATION_ERROR:
|
|
return kCertProvisioningRequestNonceGenerationError;
|
|
case wvcdm::CERT_PROVISIONING_REQUEST_ERROR_3:
|
|
return kCertProvisioningRequestError3;
|
|
case wvcdm::CERT_PROVISIONING_REQUEST_ERROR_4:
|
|
return kCertProvisioningRequestError4;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_1:
|
|
return kCertProvisioningResponseError1;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_2:
|
|
return kCertProvisioningResponseError2;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_3:
|
|
return kCertProvisioningResponseError3;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_4:
|
|
return kCertProvisioningResponseError4;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_5:
|
|
return kCertProvisioningResponseError5;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_6:
|
|
return kCertProvisioningResponseError6;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_7:
|
|
return kCertProvisioningResponseError7;
|
|
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_8:
|
|
return kCertProvisioningResponseError8;
|
|
case wvcdm::CRYPTO_SESSION_OPEN_ERROR_1:
|
|
return kCryptoSessionOpenError1;
|
|
case wvcdm::CRYPTO_SESSION_OPEN_ERROR_2:
|
|
return kCryptoSessionOpenError2;
|
|
case wvcdm::CRYPTO_SESSION_OPEN_ERROR_3:
|
|
return kCryptoSessionOpenError3;
|
|
case wvcdm::CRYPTO_SESSION_OPEN_ERROR_4:
|
|
return kCryptoSessionOpenError4;
|
|
case wvcdm::CRYPTO_SESSION_OPEN_ERROR_5:
|
|
return kCryptoSessionOpenError5;
|
|
case wvcdm::DEVICE_CERTIFICATE_ERROR_1:
|
|
return kDeviceCertificateError1;
|
|
case wvcdm::DEVICE_CERTIFICATE_ERROR_2:
|
|
return kDeviceCertificateError2;
|
|
case wvcdm::DEVICE_CERTIFICATE_ERROR_3:
|
|
return kDeviceCertificateError3;
|
|
case wvcdm::DEVICE_CERTIFICATE_ERROR_4:
|
|
return kDeviceCertificateError4;
|
|
case wvcdm::EMPTY_KEY_DATA_1:
|
|
return kEmptyKeyData1;
|
|
case wvcdm::EMPTY_KEY_DATA_2:
|
|
return kEmptyKeyData2;
|
|
case wvcdm::EMPTY_KEYSET_ID:
|
|
return kEmptyKeySetId;
|
|
case wvcdm::EMPTY_KEYSET_ID_ENG_1:
|
|
return kEmptyKeySetIdEng1;
|
|
case wvcdm::EMPTY_KEYSET_ID_ENG_2:
|
|
return kEmptyKeySetIdEng2;
|
|
case wvcdm::EMPTY_KEYSET_ID_ENG_3:
|
|
return kEmptyKeySetIdEng3;
|
|
case wvcdm::EMPTY_KEYSET_ID_ENG_4:
|
|
return kEmptyKeySetIdEng4;
|
|
case wvcdm::EMPTY_LICENSE_RENEWAL:
|
|
return kEmptyLicenseRenewal;
|
|
case wvcdm::EMPTY_LICENSE_RESPONSE_1:
|
|
return kEmptyLicenseResponse1;
|
|
case wvcdm::EMPTY_LICENSE_RESPONSE_2:
|
|
return kEmptyLicenseResponse2;
|
|
case wvcdm::EMPTY_PROVISIONING_CERTIFICATE_1:
|
|
return kEmptyProvisioningCertificate1;
|
|
case wvcdm::EMPTY_PROVISIONING_RESPONSE:
|
|
return kEmptyProvisioningResponse;
|
|
case wvcdm::EMPTY_SESSION_ID:
|
|
return kEmptySessionId;
|
|
case wvcdm::GENERATE_DERIVED_KEYS_ERROR:
|
|
return kGenerateDerivedKeysError;
|
|
case wvcdm::LICENSE_RENEWAL_NONCE_GENERATION_ERROR:
|
|
return kLicenseRenewalNonceGenerationError;
|
|
case wvcdm::GENERATE_USAGE_REPORT_ERROR:
|
|
return kGenerateUsageReportError;
|
|
case wvcdm::GET_LICENSE_ERROR:
|
|
return kGetLicenseError;
|
|
case wvcdm::GET_RELEASED_LICENSE_ERROR:
|
|
return kGetReleasedLicenseError;
|
|
case wvcdm::GET_USAGE_INFO_ERROR_1:
|
|
return kGetUsageInfoError1;
|
|
case wvcdm::GET_USAGE_INFO_ERROR_2:
|
|
return kGetUsageInfoError2;
|
|
case wvcdm::GET_USAGE_INFO_ERROR_3:
|
|
return kGetUsageInfoError3;
|
|
case wvcdm::GET_USAGE_INFO_ERROR_4:
|
|
return kGetUsageInfoError4;
|
|
case wvcdm::INIT_DATA_NOT_FOUND:
|
|
return kInitDataNotFound;
|
|
case wvcdm::INVALID_CRYPTO_SESSION_1:
|
|
return kInvalidCryptoSession1;
|
|
case wvcdm::INVALID_CRYPTO_SESSION_2:
|
|
return kInvalidCryptoSession2;
|
|
case wvcdm::INVALID_CRYPTO_SESSION_3:
|
|
return kInvalidCryptoSession3;
|
|
case wvcdm::INVALID_CRYPTO_SESSION_4:
|
|
return kInvalidCryptoSession4;
|
|
case wvcdm::INVALID_CRYPTO_SESSION_5:
|
|
return kInvalidCryptoSession5;
|
|
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_1:
|
|
return kInvalidDecryptParametersEng1;
|
|
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_2:
|
|
return kInvalidDecryptParametersEng2;
|
|
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_3:
|
|
return kInvalidDecryptParametersEng3;
|
|
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_4:
|
|
return kInvalidDecryptParametersEng4;
|
|
case wvcdm::SESSION_NOT_FOUND_FOR_DECRYPT:
|
|
return android::ERROR_DRM_SESSION_NOT_OPENED;
|
|
case wvcdm::INVALID_DEVICE_CERTIFICATE_TYPE:
|
|
return kInvalidDeviceCertificateType;
|
|
case wvcdm::INVALID_KEY_SYSTEM:
|
|
return kInvalidKeySystem;
|
|
case wvcdm::INVALID_LICENSE_RESPONSE:
|
|
return kInvalidLicenseResponse;
|
|
case wvcdm::INVALID_LICENSE_TYPE:
|
|
return kInvalidLicenseType;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_1:
|
|
return kInvalidParametersEng1;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_2:
|
|
return kInvalidParametersEng2;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_3:
|
|
return kInvalidParametersEng3;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_4:
|
|
return kInvalidParametersEng4;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_5:
|
|
return kInvalidParametersEng5;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_6:
|
|
return kInvalidParametersEng6;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_7:
|
|
return kInvalidParametersEng7;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_8:
|
|
return kInvalidParametersEng8;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_9:
|
|
return kInvalidParametersEng9;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_10:
|
|
return kInvalidParametersEng10;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_11:
|
|
return kInvalidParametersEng11;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_12:
|
|
return kInvalidParametersEng12;
|
|
case wvcdm::INVALID_PARAMETERS_LIC_1:
|
|
return kInvalidParametersLic1;
|
|
case wvcdm::INVALID_PARAMETERS_LIC_2:
|
|
return kInvalidParametersLic2;
|
|
case wvcdm::INVALID_PROVISIONING_PARAMETERS_1:
|
|
return kInvalidProvisioningParam1;
|
|
case wvcdm::INVALID_PROVISIONING_PARAMETERS_2:
|
|
return kInvalidProvisioningParam2;
|
|
case wvcdm::INVALID_PROVISIONING_REQUEST_PARAM_1:
|
|
return kInvalidProvisioningReqParam1;
|
|
case wvcdm::INVALID_PROVISIONING_REQUEST_PARAM_2:
|
|
return kInvalidProvisioningReqParam2;
|
|
case wvcdm::INVALID_QUERY_KEY:
|
|
return kInvalidQueryKey;
|
|
case wvcdm::INVALID_SESSION_ID:
|
|
return kInvalidSessionId;
|
|
case wvcdm::KEY_REQUEST_ERROR_1:
|
|
return kKeyRequestError1;
|
|
case wvcdm::KEY_SIZE_ERROR:
|
|
return kKeySizeError;
|
|
case wvcdm::KEYSET_ID_NOT_FOUND_1:
|
|
return kKeySetIdNotFound1;
|
|
case wvcdm::KEYSET_ID_NOT_FOUND_2:
|
|
return kKeySetIdNotFound2;
|
|
case wvcdm::KEYSET_ID_NOT_FOUND_3:
|
|
return kKeySetIdNotFound3;
|
|
case wvcdm::LICENSE_ID_NOT_FOUND:
|
|
return kLicenseIdNotFound;
|
|
case wvcdm::LICENSE_PARSER_INIT_ERROR:
|
|
return kLicenseParserInitError;
|
|
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_1:
|
|
return kLicenseParserNotInitialized1;
|
|
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_2:
|
|
return kLicenseParserNotInitialized2;
|
|
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_3:
|
|
return kLicenseParserNotInitialized3;
|
|
case wvcdm::LICENSE_RESPONSE_NOT_SIGNED:
|
|
return kLicenseResponseNotSigned;
|
|
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_1:
|
|
return kLicenseResponseParseError1;
|
|
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_2:
|
|
return kLicenseResponseParseError2;
|
|
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_3:
|
|
return kLicenseResponseParseError3;
|
|
case wvcdm::LOAD_KEY_ERROR:
|
|
return kLoadKeyError;
|
|
case wvcdm::NO_CONTENT_KEY:
|
|
return kNoContentKey;
|
|
case wvcdm::REFRESH_KEYS_ERROR:
|
|
return kRefreshKeysError;
|
|
case wvcdm::RELEASE_ALL_USAGE_INFO_ERROR_1:
|
|
return kReleaseAllUsageInfoError1;
|
|
case wvcdm::RELEASE_ALL_USAGE_INFO_ERROR_2:
|
|
return kReleaseAllUsageInfoError2;
|
|
case wvcdm::RELEASE_KEY_ERROR:
|
|
return kReleaseKeyError;
|
|
case wvcdm::RELEASE_KEY_REQUEST_ERROR:
|
|
return kReleaseKeyRequestError;
|
|
case wvcdm::RELEASE_LICENSE_ERROR_1:
|
|
return kReleaseLicenseError1;
|
|
case wvcdm::RELEASE_LICENSE_ERROR_2:
|
|
return kReleaseLicenseError2;
|
|
case wvcdm::RELEASE_USAGE_INFO_ERROR:
|
|
return android::ERROR_DRM_TAMPER_DETECTED;
|
|
case wvcdm::RENEW_KEY_ERROR_1:
|
|
return kRenewKeyError1;
|
|
case wvcdm::RENEW_KEY_ERROR_2:
|
|
return kRenewKeyError2;
|
|
case wvcdm::LICENSE_RENEWAL_SIGNING_ERROR:
|
|
return kLicenseRenewalSigningError;
|
|
case wvcdm::RESTORE_OFFLINE_LICENSE_ERROR_2:
|
|
return kRestoreOfflineLicenseError2;
|
|
case wvcdm::SESSION_INIT_ERROR_1:
|
|
return kSessionInitError1;
|
|
case wvcdm::SESSION_INIT_ERROR_2:
|
|
return kSessionInitError2;
|
|
case wvcdm::SESSION_NOT_FOUND_1:
|
|
case wvcdm::SESSION_NOT_FOUND_2:
|
|
case wvcdm::SESSION_NOT_FOUND_3:
|
|
case wvcdm::SESSION_NOT_FOUND_4:
|
|
case wvcdm::SESSION_NOT_FOUND_5:
|
|
case wvcdm::SESSION_NOT_FOUND_6:
|
|
case wvcdm::SESSION_NOT_FOUND_7:
|
|
case wvcdm::SESSION_NOT_FOUND_8:
|
|
case wvcdm::SESSION_NOT_FOUND_9:
|
|
case wvcdm::SESSION_NOT_FOUND_10:
|
|
return android::ERROR_DRM_SESSION_NOT_OPENED;
|
|
case wvcdm::SESSION_KEYS_NOT_FOUND:
|
|
return kSessionKeysNotFound;
|
|
case wvcdm::SIGNATURE_NOT_FOUND:
|
|
return kSignatureNotFound;
|
|
case wvcdm::STORE_LICENSE_ERROR_1:
|
|
return kStoreLicenseError1;
|
|
case wvcdm::STORE_LICENSE_ERROR_2:
|
|
return kStoreLicenseError2;
|
|
case wvcdm::STORE_USAGE_INFO_ERROR:
|
|
return kStoreUsageInfoError;
|
|
case wvcdm::UNPROVISION_ERROR_1:
|
|
return kUnprovisioningError1;
|
|
case wvcdm::UNPROVISION_ERROR_2:
|
|
return kUnprovisioningError2;
|
|
case wvcdm::UNPROVISION_ERROR_3:
|
|
return kUnprovisioningError3;
|
|
case wvcdm::UNPROVISION_ERROR_4:
|
|
return kUnprovisioningError4;
|
|
case wvcdm::UNSUPPORTED_INIT_DATA:
|
|
return kUnsupportedInitData;
|
|
case wvcdm::USAGE_INFO_NOT_FOUND:
|
|
return kUsageInfoNotFound;
|
|
case wvcdm::PARSE_SERVICE_CERTIFICATE_ERROR:
|
|
return kParseServiceCertificateError;
|
|
case wvcdm::CLIENT_ID_GENERATE_RANDOM_ERROR:
|
|
return kClientIdGenerateRandomError;
|
|
case wvcdm::CLIENT_ID_AES_INIT_ERROR:
|
|
return kClientIdAesInitError;
|
|
case wvcdm::CLIENT_ID_AES_ENCRYPT_ERROR:
|
|
return kClientIdAesEncryptError;
|
|
case wvcdm::CLIENT_ID_RSA_INIT_ERROR:
|
|
return kClientIdRsaInitError;
|
|
case wvcdm::CLIENT_ID_RSA_ENCRYPT_ERROR:
|
|
return kClientIdRsaEncryptError;
|
|
case wvcdm::KEY_ERROR:
|
|
// KEY_ERROR is used by the CDM to mean just about any kind of error, not
|
|
// just license errors, so it is mapped to the generic response.
|
|
return kErrorCDMGeneric;
|
|
case wvcdm::INVALID_QUERY_STATUS:
|
|
return kInvalidQueryStatus;
|
|
case wvcdm::EMPTY_PROVISIONING_CERTIFICATE_2:
|
|
return kEmptyProvisioningCertificate2;
|
|
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_4:
|
|
return kLicenseParserNotInitialized4;
|
|
case wvcdm::INVALID_PARAMETERS_LIC_3:
|
|
return kInvalidParametersLic3;
|
|
case wvcdm::INVALID_PARAMETERS_LIC_4:
|
|
return kInvalidParametersLic4;
|
|
case wvcdm::INVALID_PARAMETERS_LIC_6:
|
|
return kInvalidParametersLic6;
|
|
case wvcdm::INVALID_PARAMETERS_LIC_7:
|
|
return kInvalidParametersLic7;
|
|
case wvcdm::LICENSE_REQUEST_SERVICE_CERTIFICATE_GENERATION_ERROR:
|
|
return kLicenseRequestServiceCertificateGenerationError;
|
|
case wvcdm::CENC_INIT_DATA_UNAVAILABLE:
|
|
return kCencInitDataUnavailable;
|
|
case wvcdm::PREPARE_CENC_CONTENT_ID_FAILED:
|
|
return kPrepareCencContentIdFailed;
|
|
case wvcdm::WEBM_INIT_DATA_UNAVAILABLE:
|
|
return kWebmInitDataUnavailable;
|
|
case wvcdm::PREPARE_WEBM_CONTENT_ID_FAILED:
|
|
return kPrepareWebmContentIdFailed;
|
|
case wvcdm::UNSUPPORTED_INIT_DATA_FORMAT:
|
|
return kUnsupportedInitDataFormat;
|
|
case wvcdm::LICENSE_REQUEST_NONCE_GENERATION_ERROR:
|
|
return kLicenseRequestNonceGenerationError;
|
|
case wvcdm::LICENSE_REQUEST_SIGNING_ERROR:
|
|
return kLicenseRequestSigningError;
|
|
case wvcdm::EMPTY_LICENSE_REQUEST:
|
|
return kEmptyLicenseRequest;
|
|
case wvcdm::DUPLICATE_SESSION_ID_SPECIFIED:
|
|
return kDuplicateSessionIdSpecified;
|
|
case wvcdm::LICENSE_RENEWAL_PROHIBITED:
|
|
return kLicenseRenewalProhibited;
|
|
case wvcdm::OFFLINE_LICENSE_PROHIBITED:
|
|
return kOfflineLicenseProhibited;
|
|
case wvcdm::STORAGE_PROHIBITED:
|
|
return kStorageProhibited;
|
|
case wvcdm::EMPTY_KEYSET_ID_ENG_5:
|
|
return kEmptyKeySetIdEng5;
|
|
case wvcdm::SESSION_NOT_FOUND_11:
|
|
return kSessionNotFound11;
|
|
case wvcdm::LOAD_USAGE_INFO_FILE_ERROR:
|
|
return kLoadUsageInfoFileError;
|
|
case wvcdm::LOAD_USAGE_INFO_MISSING:
|
|
return kLoadUsageInfoMissing;
|
|
case wvcdm::SESSION_FILE_HANDLE_INIT_ERROR:
|
|
return kSessionFileHandleInitError;
|
|
case wvcdm::INCORRECT_CRYPTO_MODE:
|
|
return kIncorrectCryptoMode;
|
|
case wvcdm::UNKNOWN_ERROR:
|
|
return android::ERROR_DRM_UNKNOWN;
|
|
case wvcdm::SECURE_BUFFER_REQUIRED:
|
|
case wvcdm::DECRYPT_ERROR:
|
|
return android::ERROR_DRM_CANNOT_HANDLE;
|
|
case wvcdm::INSUFFICIENT_OUTPUT_PROTECTION:
|
|
case wvcdm::ANALOG_OUTPUT_ERROR:
|
|
case wvcdm::KEY_PROHIBITED_FOR_SECURITY_LEVEL:
|
|
return android::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION;
|
|
case wvcdm::SESSION_NOT_FOUND_12:
|
|
return kSessionNotFound12;
|
|
case wvcdm::KEY_NOT_FOUND_1:
|
|
return kKeyNotFound1;
|
|
case wvcdm::KEY_NOT_FOUND_2:
|
|
return kKeyNotFound2;
|
|
case wvcdm::KEY_CONFLICT_1:
|
|
return kKeyConflict1;
|
|
case wvcdm::SESSION_NOT_FOUND_13:
|
|
return kSessionNotFound13;
|
|
case wvcdm::SESSION_NOT_FOUND_14:
|
|
return kSessionNotFound14;
|
|
case wvcdm::SESSION_NOT_FOUND_15:
|
|
return kSessionNotFound15;
|
|
case wvcdm::SESSION_NOT_FOUND_16:
|
|
return kSessionNotFound16;
|
|
case wvcdm::KEY_NOT_FOUND_3:
|
|
return kKeyNotFound3;
|
|
case wvcdm::KEY_NOT_FOUND_4:
|
|
return kKeyNotFound4;
|
|
case wvcdm::KEY_NOT_FOUND_5:
|
|
return kKeyNotFound5;
|
|
case wvcdm::KEY_NOT_FOUND_6:
|
|
return kKeyNotFound6;
|
|
case wvcdm::INVALID_SESSION_1:
|
|
return kInvalidSession1;
|
|
case wvcdm::NO_DEVICE_KEY_1:
|
|
return kNoDeviceKey1;
|
|
case wvcdm::NO_CONTENT_KEY_2:
|
|
return kNoContentKey2;
|
|
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_2:
|
|
return kInsufficientCryptoResources2;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_13:
|
|
return kInvalidParametersEng13;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_14:
|
|
return kInvalidParametersEng14;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_15:
|
|
return kInvalidParametersEng15;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_16:
|
|
return kInvalidParametersEng16;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_17:
|
|
return kInvalidParametersEng17;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_18:
|
|
return kInvalidParametersEng18;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_19:
|
|
return kInvalidParametersEng19;
|
|
case wvcdm::CERT_PROVISIONING_CLIENT_TOKEN_ERROR_1:
|
|
return kCertProvisioningClientTokenError1;
|
|
case wvcdm::CERT_PROVISIONING_CLIENT_TOKEN_ERROR_2:
|
|
return kCertProvisioningClientTokenError2;
|
|
case wvcdm::LICENSING_CLIENT_TOKEN_ERROR_1:
|
|
return kLicensingClientTokenError1;
|
|
case wvcdm::UNKNOWN_SELECT_KEY_ERROR_1:
|
|
return kUnknownSelectKeyError1;
|
|
case wvcdm::UNKNOWN_SELECT_KEY_ERROR_2:
|
|
return kUnknownSelectKeyError2;
|
|
case wvcdm::CREATE_USAGE_TABLE_ERROR:
|
|
return kCreateUsageTableError;
|
|
case wvcdm::LOAD_USAGE_HEADER_GENERATION_SKEW:
|
|
return kLoadUsageHeaderGenerationSkew;
|
|
case wvcdm::LOAD_USAGE_HEADER_SIGNATURE_FAILURE:
|
|
return kLoadUsageHeaderSignatureFailure;
|
|
case wvcdm::LOAD_USAGE_HEADER_BAD_MAGIC:
|
|
return kLoadUsageHeaderBadMagic;
|
|
case wvcdm::LOAD_USAGE_HEADER_UNKNOWN_ERROR:
|
|
return kLoadUsageHeaderUnknownError;
|
|
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_3:
|
|
return kInsufficientCryptoResources3;
|
|
case wvcdm::CREATE_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
return kCreateUsageEntryUnknownError;
|
|
case wvcdm::LOAD_USAGE_ENTRY_GENERATION_SKEW:
|
|
return kLoadUsageEntryGenerationSkew;
|
|
case wvcdm::LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
|
return kLoadUsageEntrySignatureFailure;
|
|
case wvcdm::LOAD_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
return kLoadUsageEntryUnknownError;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_20:
|
|
return kInvalidParametersEng20;
|
|
case wvcdm::UPDATE_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
return kUpdateUsageEntryUnknownError;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_21:
|
|
return kInvalidParametersEng21;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_22:
|
|
return kInvalidParametersEng22;
|
|
case wvcdm::SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR:
|
|
return kShrinkUsageTablerHeaderUnknownError;
|
|
case wvcdm::MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
return kMoveUsageEntryUnknownError;
|
|
case wvcdm::COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
return kCopyOldUsageEntryUnknownError;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_23:
|
|
return kInvalidParametersEng23;
|
|
case wvcdm::INVALID_PARAMETERS_ENG_24:
|
|
return kInvalidParametersEng24;
|
|
case wvcdm::USAGE_INFORMATION_SUPPORT_FAILED:
|
|
return kUsageInformationSupportFailed;
|
|
case wvcdm::USAGE_SUPPORT_GET_API_FAILED:
|
|
return kUsageSupportGetApiFailed;
|
|
case wvcdm::UNEXPECTED_EMPTY_USAGE_ENTRY:
|
|
return kUnexpectedEmptyUsageEntry;
|
|
case wvcdm::INVALID_USAGE_ENTRY_NUMBER_MODIFICATION:
|
|
return kInvalidUsageEntryNumberModification;
|
|
case wvcdm::USAGE_INVALID_NEW_ENTRY:
|
|
return kUsageInvalidNewEntry;
|
|
case wvcdm::USAGE_INVALID_PARAMETERS_1:
|
|
return kUsageInvalidParameters1;
|
|
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_LICENSE_FAILED:
|
|
return kUsageGetEntryRetrieveLicenseFailed;
|
|
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_USAGE_INFO_FAILED:
|
|
return kUsageGetEntryRetrieveUsageInfoFailed;
|
|
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
|
|
return kUsageGetEntryRetrieveInvalidStorageType;
|
|
case wvcdm::USAGE_ENTRY_NUMBER_MISMATCH:
|
|
return kUsageEntryNumberMismatch;
|
|
case wvcdm::USAGE_STORE_LICENSE_FAILED:
|
|
return kUsageStoreLicenseFailed;
|
|
case wvcdm::USAGE_STORE_USAGE_INFO_FAILED:
|
|
return kUsageStoreUsageInfoFailed;
|
|
case wvcdm::USAGE_INVALID_LOAD_ENTRY:
|
|
return kUsageInvalidLoadEntry;
|
|
case wvcdm::RELEASE_USAGE_INFO_FAILED:
|
|
return android::ERROR_DRM_TAMPER_DETECTED;
|
|
case wvcdm::INCORRECT_USAGE_SUPPORT_TYPE_1:
|
|
return kIncorrectUsageSupportType1;
|
|
case wvcdm::INCORRECT_USAGE_SUPPORT_TYPE_2:
|
|
return kIncorrectUsageSupportType2;
|
|
case wvcdm::RELEASE_ALL_USAGE_INFO_ERROR_4:
|
|
return kReleaseAllUsageInfoError4;
|
|
case wvcdm::RELEASE_ALL_USAGE_INFO_ERROR_5:
|
|
return kReleaseAllUsageInfoError5;
|
|
case wvcdm::NO_USAGE_ENTRIES:
|
|
return kNoUsageEntries;
|
|
case wvcdm::LIST_LICENSE_ERROR_1:
|
|
return kListLicenseError1;
|
|
case wvcdm::LIST_LICENSE_ERROR_2:
|
|
return kListLicenseError2;
|
|
case wvcdm::LIST_USAGE_ERROR_1:
|
|
return kListUsageError1;
|
|
case wvcdm::LIST_USAGE_ERROR_2:
|
|
return kListUsageError2;
|
|
case wvcdm::DELETE_USAGE_ERROR_1:
|
|
return kDeleteUsageError1;
|
|
case wvcdm::DELETE_USAGE_ERROR_2:
|
|
return kDeleteUsageError2;
|
|
case wvcdm::DELETE_USAGE_ERROR_3:
|
|
return kDeleteUsageError3;
|
|
case wvcdm::PRIVACY_MODE_ERROR_1:
|
|
return kPrivacyModeError1;
|
|
case wvcdm::PRIVACY_MODE_ERROR_2:
|
|
return kPrivacyModeError2;
|
|
case wvcdm::PRIVACY_MODE_ERROR_3:
|
|
return kPrivacyModeError3;
|
|
case wvcdm::EMPTY_RESPONSE_ERROR_1:
|
|
return kEmptyResponseError1;
|
|
case wvcdm::PARSE_RESPONSE_ERROR_1:
|
|
return kParseResponseError1;
|
|
case wvcdm::PARSE_RESPONSE_ERROR_2:
|
|
return kParseResponseError2;
|
|
case wvcdm::PARSE_RESPONSE_ERROR_3:
|
|
return kParseResponseError3;
|
|
case wvcdm::PARSE_RESPONSE_ERROR_4:
|
|
return kParseResponseError4;
|
|
case wvcdm::USAGE_STORE_ENTRY_RETRIEVE_LICENSE_FAILED:
|
|
return kUsageStoreEntryRetrieveLicenseFailed;
|
|
case wvcdm::USAGE_STORE_ENTRY_RETRIEVE_USAGE_INFO_FAILED:
|
|
return kUsageStoreEntryRetrieveUsageInfoFailed;
|
|
case wvcdm::USAGE_STORE_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
|
|
return kUsageStoreEntryRetrieveInvalidStorageType;
|
|
case wvcdm::RELEASE_ALL_USAGE_INFO_ERROR_6:
|
|
return kReleaseAllUsageInfoError6;
|
|
case wvcdm::RELEASE_ALL_USAGE_INFO_ERROR_7:
|
|
return kReleaseAllUsageInfoError7;
|
|
case wvcdm::LICENSE_REQUEST_INVALID_SUBLICENSE:
|
|
return kLicenseRequestInvalidSublicense;
|
|
}
|
|
|
|
// Return here instead of as a default case so that the compiler will warn
|
|
// us if we forget to include an enum member in the switch statement.
|
|
return android::UNKNOWN_ERROR;
|
|
}
|
|
|
|
static inline bool isCdmResponseTypeSuccess(wvcdm::CdmResponseType res) {
|
|
return mapCdmResponseType(res) == android::OK;
|
|
}
|
|
|
|
} // namespace wvdrm
|
|
|
|
#endif // WV_MAP_ERRORS_H_
|