Files
android/libwvdrmengine/include/mapErrors-inl.h
Rahul Frias 10eb4da035 Simplify parameter validation
[ Merge of http://go/wvgerrit/89888 ]

A macro validates parameters in CryptoSession and return a
specified error code. Some error codes have been retired and replaced with
the error code PARAMETER_NULL.

Bug: 136123217
Test: Android unit/integration tests
Change-Id: I6ecbad53e87cce04dfd9ea27861400e83044cf5e
2019-11-22 12:05:52 -08:00

600 lines
24 KiB
C++

//
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
// source code may only be used and distributed under the Widevine Master
// License Agreement.
//
#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) {
// Android return codes.
// This first group is for "android::OK".
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;
// The remaining android::* are alphabetically ordered based on the first
// case condition in the group.
case wvcdm::ANALOG_OUTPUT_ERROR:
case wvcdm::INSUFFICIENT_OUTPUT_PROTECTION:
case wvcdm::KEY_PROHIBITED_FOR_SECURITY_LEVEL:
return android::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION;
case wvcdm::DECRYPT_ERROR:
case wvcdm::SECURE_BUFFER_REQUIRED:
return android::ERROR_DRM_CANNOT_HANDLE;
case wvcdm::DECRYPT_NOT_READY:
case wvcdm::KEY_NOT_FOUND_IN_SESSION:
case wvcdm::NEED_KEY:
case wvcdm::NO_MATCHING_ENTITLEMENT_KEY:
case wvcdm::NO_CONTENT_KEY_3:
return android::ERROR_DRM_NO_LICENSE;
case wvcdm::DEVICE_REVOKED:
return android::ERROR_DRM_DEVICE_REVOKED;
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES:
return android::ERROR_DRM_RESOURCE_BUSY;
case wvcdm::NEED_PROVISIONING:
return android::ERROR_DRM_NOT_PROVISIONED;
case wvcdm::RELEASE_USAGE_INFO_FAILED:
case wvcdm::RELEASE_USAGE_INFO_ERROR:
return android::ERROR_DRM_TAMPER_DETECTED;
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:
case wvcdm::SESSION_NOT_FOUND_17:
case wvcdm::SESSION_NOT_FOUND_18:
case wvcdm::SESSION_NOT_FOUND_19:
case wvcdm::SESSION_NOT_FOUND_20:
case wvcdm::SESSION_NOT_FOUND_21:
case wvcdm::SESSION_NOT_FOUND_22:
case wvcdm::SESSION_NOT_FOUND_FOR_DECRYPT:
return android::ERROR_DRM_SESSION_NOT_OPENED;
case wvcdm::UNKNOWN_ERROR:
return android::ERROR_DRM_UNKNOWN;
// WV return codes.
// Alphabetically ordered based on the case condition.
case wvcdm::ADD_KEY_ERROR:
return kAddKeyError;
case wvcdm::CENC_INIT_DATA_UNAVAILABLE:
return kCencInitDataUnavailable;
case wvcdm::CERT_PROVISIONING_EMPTY_SERVICE_CERTIFICATE:
return kCertProvisioningEmptyServiceCertificate;
case wvcdm::CERT_PROVISIONING_GET_KEYBOX_ERROR_1:
return kCertProvisioningGetKeyboxError1;
case wvcdm::CERT_PROVISIONING_INVALID_CERT_TYPE:
return kCertProvisioningInvalidCertType;
case wvcdm::CERT_PROVISIONING_NONCE_GENERATION_ERROR:
return kCertProvisioningRequestNonceGenerationError;
case wvcdm::CERT_PROVISIONING_REQUEST_ERROR_1:
return kCertProvisioningRequestError1;
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::CLIENT_IDENTIFICATION_TOKEN_ERROR_1:
return kClientIdentificationTokenError1;
case wvcdm::CLIENT_ID_AES_ENCRYPT_ERROR:
return kClientIdAesEncryptError;
case wvcdm::CLIENT_ID_AES_INIT_ERROR:
return kClientIdAesInitError;
case wvcdm::CLIENT_ID_GENERATE_RANDOM_ERROR:
return kClientIdGenerateRandomError;
case wvcdm::CLIENT_ID_RSA_ENCRYPT_ERROR:
return kClientIdRsaEncryptError;
case wvcdm::CLIENT_ID_RSA_INIT_ERROR:
return kClientIdRsaInitError;
case wvcdm::COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR:
return kCopyOldUsageEntryUnknownError;
case wvcdm::CREATE_USAGE_ENTRY_UNKNOWN_ERROR:
return kCreateUsageEntryUnknownError;
case wvcdm::CREATE_USAGE_TABLE_ERROR:
return kCreateUsageTableError;
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::DEVICE_CANNOT_REPROVISION:
return kDeviceCannotReprovision;
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::DUPLICATE_SESSION_ID_SPECIFIED:
return kDuplicateSessionIdSpecified;
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_KEYSET_ID_ENG_5:
return kEmptyKeySetIdEng5;
case wvcdm::EMPTY_KEY_DATA_1:
return kEmptyKeyData1;
case wvcdm::EMPTY_KEY_DATA_2:
return kEmptyKeyData2;
case wvcdm::EMPTY_LICENSE_RENEWAL:
return kEmptyLicenseRenewal;
case wvcdm::EMPTY_LICENSE_REQUEST:
return kEmptyLicenseRequest;
case wvcdm::EMPTY_LICENSE_REQUEST_2:
return kEmptyLicenseRequest2;
case wvcdm::EMPTY_LICENSE_REQUEST_3:
return kEmptyLicenseRequest3;
case wvcdm::EMPTY_LICENSE_RESPONSE_1:
return kEmptyLicenseResponse1;
case wvcdm::EMPTY_LICENSE_RESPONSE_2:
return kEmptyLicenseResponse2;
case wvcdm::EMPTY_LICENSE_RESPONSE_3:
return kEmptyLicenseResponse3;
case wvcdm::EMPTY_LICENSE_RESPONSE_4:
return kEmptyLicenseResponse4;
case wvcdm::EMPTY_PROVISIONING_CERTIFICATE_1:
return kEmptyProvisioningCertificate1;
case wvcdm::EMPTY_PROVISIONING_CERTIFICATE_2:
return kEmptyProvisioningCertificate2;
case wvcdm::EMPTY_PROVISIONING_RESPONSE:
return kEmptyProvisioningResponse;
case wvcdm::EMPTY_RESPONSE_ERROR_1:
return kEmptyResponseError1;
case wvcdm::EMPTY_SESSION_ID:
return kEmptySessionId;
case wvcdm::GENERATE_DERIVED_KEYS_ERROR:
return kGenerateDerivedKeysError;
case wvcdm::GENERATE_USAGE_REPORT_ERROR:
return kGenerateUsageReportError;
case wvcdm::GET_DECRYPT_HASH_ERROR:
return kGetDecryptHashError;
case wvcdm::GET_LICENSE_ERROR:
case wvcdm::KEYSET_ID_NOT_FOUND_4:
// There is a sub-error code that distinguishes the two.
return kGetLicenseError;
case wvcdm::GET_PROVISIONING_METHOD_ERROR:
return kGetProvisioningError;
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::INCORRECT_CRYPTO_MODE:
return kIncorrectCryptoMode;
case wvcdm::INCORRECT_USAGE_SUPPORT_TYPE_1:
return kIncorrectUsageSupportType1;
case wvcdm::INCORRECT_USAGE_SUPPORT_TYPE_2:
return kIncorrectUsageSupportType2;
case wvcdm::INIT_DATA_NOT_FOUND:
return kInitDataNotFound;
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_2:
return kInsufficientCryptoResources2;
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_3:
return kInsufficientCryptoResources3;
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_4:
return kInsufficientCryptoResources4;
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_5:
return kInsufficientCryptoResources5;
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_6:
return kInsufficientCryptoResources6;
case wvcdm::INVALID_DECRYPT_HASH_FORMAT:
return kInvalidDecryptHashFormat;
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::INVALID_DEVICE_CERTIFICATE_TYPE:
return kInvalidDeviceCertificateType;
case wvcdm::INVALID_KEY_SYSTEM:
return kInvalidKeySystem;
case wvcdm::INVALID_LICENSE_REQUEST_TYPE_1:
return kInvalidLicenseRequestType1;
case wvcdm::INVALID_LICENSE_REQUEST_TYPE_2:
return kInvalidLicenseRequestType2;
case wvcdm::INVALID_LICENSE_RESPONSE:
return kInvalidLicenseResponse;
case wvcdm::INVALID_LICENSE_TYPE:
return kInvalidLicenseType;
case wvcdm::INVALID_LICENSE_TYPE_2:
return kInvalidLicenseType2;
case wvcdm::INVALID_PARAMETERS_ENG_5:
return kInvalidParametersEng5;
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_22:
return kInvalidParametersEng22;
case wvcdm::INVALID_PARAMETERS_ENG_23:
return kInvalidParametersEng23;
case wvcdm::INVALID_PARAMETERS_ENG_24:
return kInvalidParametersEng24;
case wvcdm::INVALID_PARAMETERS_LIC_1:
return kInvalidParametersLic1;
case wvcdm::INVALID_PARAMETERS_LIC_2:
return kInvalidParametersLic2;
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::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_1:
return kInvalidSession1;
case wvcdm::INVALID_SESSION_ID:
return kInvalidSessionId;
case wvcdm::INVALID_USAGE_ENTRY_NUMBER_MODIFICATION:
return kInvalidUsageEntryNumberModification;
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::KEY_CONFLICT_1:
return kKeyConflict1;
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::KEY_NOT_FOUND_1:
return kKeyNotFound1;
case wvcdm::KEY_NOT_FOUND_2:
return kKeyNotFound2;
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::KEY_REQUEST_ERROR_1:
return kKeyRequestError1;
case wvcdm::KEY_SIZE_ERROR_1:
return kKeySizeError1;
case wvcdm::KEY_SIZE_ERROR_2:
return kKeySizeError2;
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_PARSER_NOT_INITIALIZED_4:
return kLicenseParserNotInitialized4;
case wvcdm::LICENSE_RENEWAL_NONCE_GENERATION_ERROR:
return kLicenseRenewalNonceGenerationError;
case wvcdm::LICENSE_RENEWAL_PROHIBITED:
return kLicenseRenewalProhibited;
case wvcdm::LICENSE_REQUEST_NONCE_GENERATION_ERROR:
return kLicenseRequestNonceGenerationError;
case wvcdm::LICENSE_REQUEST_SERVICE_CERTIFICATE_GENERATION_ERROR:
return kLicenseRequestServiceCertificateGenerationError;
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::LICENSE_RESPONSE_PARSE_ERROR_4:
return kLicenseResponseParseError4;
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_5:
return kLicenseResponseParseError5;
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::LOAD_ENTITLED_CONTENT_KEYS_ERROR:
return kLoadEntitledContentKeysError;
case wvcdm::LOAD_KEY_ERROR:
return kLoadKeyError;
case wvcdm::LOAD_SYSTEM_ID_ERROR:
return kLoadSystemIdError;
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::LOAD_USAGE_HEADER_BAD_MAGIC:
return kLoadUsageHeaderBadMagic;
case wvcdm::LOAD_USAGE_HEADER_GENERATION_SKEW:
return kLoadUsageHeaderGenerationSkew;
case wvcdm::LOAD_USAGE_HEADER_SIGNATURE_FAILURE:
return kLoadUsageHeaderSignatureFailure;
case wvcdm::LOAD_USAGE_HEADER_UNKNOWN_ERROR:
return kLoadUsageHeaderUnknownError;
case wvcdm::LOAD_USAGE_INFO_FILE_ERROR:
return kLoadUsageInfoFileError;
case wvcdm::LOAD_USAGE_INFO_MISSING:
return kLoadUsageInfoMissing;
case wvcdm::MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
return kMoveUsageEntryUnknownError;
case wvcdm::NOT_AN_ENTITLEMENT_SESSION:
return kNotAnEntitlementSession;
case wvcdm::NOT_INITIALIZED_ERROR:
return kNotInitializedError;
case wvcdm::NO_CONTENT_KEY:
return kNoContentKey;
case wvcdm::NO_CONTENT_KEY_2:
return kNoContentKey2;
case wvcdm::NO_DEVICE_KEY_1:
return kNoDeviceKey1;
case wvcdm::NO_USAGE_ENTRIES:
return kNoUsageEntries;
case wvcdm::OFFLINE_LICENSE_PROHIBITED:
return kOfflineLicenseProhibited;
case wvcdm::PARAMETER_NULL:
return kParameterNull;
case wvcdm::PARSE_REQUEST_ERROR_1:
return kParseRequestError1;
case wvcdm::PARSE_REQUEST_ERROR_2:
return kParseRequestError2;
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::PARSE_SERVICE_CERTIFICATE_ERROR:
return kParseServiceCertificateError;
case wvcdm::PREPARE_CENC_CONTENT_ID_FAILED:
return kPrepareCencContentIdFailed;
case wvcdm::PREPARE_WEBM_CONTENT_ID_FAILED:
return kPrepareWebmContentIdFailed;
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::REFRESH_KEYS_ERROR:
return kRefreshKeysError;
case wvcdm::REINIT_ERROR:
return kReinitError;
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::REMOVE_ALL_USAGE_INFO_ERROR_1:
return kRemoveAllUsageInfoError1;
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_2:
return kRemoveAllUsageInfoError2;
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_5:
return kRemoveAllUsageInfoError5;
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_6:
return kRemoveAllUsageInfoError6;
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_7:
return kRemoveAllUsageInfoError7;
case wvcdm::REMOVE_USAGE_INFO_ERROR_1:
return kRemoveUsageInfoError1;
case wvcdm::REMOVE_USAGE_INFO_ERROR_2:
return kRemoveUsageInfoError2;
case wvcdm::REMOVE_USAGE_INFO_ERROR_3:
return kRemoveUsageInfoError3;
case wvcdm::RENEW_KEY_ERROR_1:
return kRenewKeyError1;
case wvcdm::RENEW_KEY_ERROR_2:
return kRenewKeyError2;
case wvcdm::RESTORE_OFFLINE_LICENSE_ERROR_2:
return kRestoreOfflineLicenseError2;
case wvcdm::SESSION_FILE_HANDLE_INIT_ERROR:
return kSessionFileHandleInitError;
case wvcdm::SESSION_KEYS_NOT_FOUND:
return kSessionKeysNotFound;
case wvcdm::SESSION_KEYS_NOT_FOUND_2:
return kSessionKeysNotFound2;
case wvcdm::SESSION_NOT_FOUND_11:
return kSessionNotFound11;
case wvcdm::SESSION_NOT_FOUND_12:
return kSessionNotFound12;
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::SET_DECRYPT_HASH_ERROR:
return kSetDecryptHashError;
case wvcdm::SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR:
return kShrinkUsageTablerHeaderUnknownError;
case wvcdm::SIGNATURE_NOT_FOUND:
return kSignatureNotFound;
case wvcdm::SIGNATURE_NOT_FOUND_2:
return kSignatureNotFound2;
case wvcdm::STORAGE_PROHIBITED:
return kStorageProhibited;
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::UNEXPECTED_EMPTY_USAGE_ENTRY:
return kUnexpectedEmptyUsageEntry;
case wvcdm::UNKNOWN_SELECT_KEY_ERROR_1:
return kUnknownSelectKeyError1;
case wvcdm::UNKNOWN_SELECT_KEY_ERROR_2:
return kUnknownSelectKeyError2;
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::UNSUPPORTED_INIT_DATA_FORMAT:
return kUnsupportedInitDataFormat;
case wvcdm::UPDATE_USAGE_ENTRY_UNKNOWN_ERROR:
return kUpdateUsageEntryUnknownError;
case wvcdm::USAGE_ENTRY_NUMBER_MISMATCH:
return kUsageEntryNumberMismatch;
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
return kUsageGetEntryRetrieveInvalidStorageType;
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_LICENSE_FAILED:
return kUsageGetEntryRetrieveLicenseFailed;
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_USAGE_INFO_FAILED:
return kUsageGetEntryRetrieveUsageInfoFailed;
case wvcdm::USAGE_INFORMATION_SUPPORT_FAILED:
return kUsageInformationSupportFailed;
case wvcdm::USAGE_INFO_NOT_FOUND:
return kUsageInfoNotFound;
case wvcdm::USAGE_INVALID_LOAD_ENTRY:
return kUsageInvalidLoadEntry;
case wvcdm::USAGE_INVALID_NEW_ENTRY:
return kUsageInvalidNewEntry;
case wvcdm::USAGE_INVALID_PARAMETERS_1:
return kUsageInvalidParameters1;
case wvcdm::USAGE_STORE_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
return kUsageStoreEntryRetrieveInvalidStorageType;
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_LICENSE_FAILED:
return kUsageStoreLicenseFailed;
case wvcdm::USAGE_STORE_USAGE_INFO_FAILED:
return kUsageStoreUsageInfoFailed;
case wvcdm::USAGE_SUPPORT_GET_API_FAILED:
return kUsageSupportGetApiFailed;
case wvcdm::WEBM_INIT_DATA_UNAVAILABLE:
return kWebmInitDataUnavailable;
// This error is only returned in API 29 by the hidl service.
// It should never be used in the legacy plugin.
// It is mapped here to clear the compiler warning.
case wvcdm::GET_OFFLINE_LICENSE_STATE_ERROR_1:
case wvcdm::GET_OFFLINE_LICENSE_STATE_ERROR_2:
case wvcdm::REMOVE_OFFLINE_LICENSE_ERROR_1:
case wvcdm::REMOVE_OFFLINE_LICENSE_ERROR_2:
case wvcdm::OUTPUT_TOO_LARGE_ERROR:
case wvcdm::SESSION_LOST_STATE_ERROR:
case wvcdm::GENERATE_DERIVED_KEYS_ERROR_2:
case wvcdm::LOAD_DEVICE_RSA_KEY_ERROR:
case wvcdm::NONCE_GENERATION_ERROR:
case wvcdm::GENERATE_SIGNATURE_ERROR:
case wvcdm::UNKNOWN_CLIENT_TOKEN_TYPE:
case wvcdm::DEACTIVATE_USAGE_ENTRY_ERROR:
case wvcdm::SYSTEM_INVALIDATED_ERROR:
case wvcdm::OPEN_CRYPTO_SESSION_ERROR:
case wvcdm::LOAD_SRM_ERROR:
case wvcdm::RANDOM_GENERATION_ERROR:
case wvcdm::CRYPTO_SESSION_NOT_INITIALIZED:
case wvcdm::GET_DEVICE_ID_ERROR:
case wvcdm::GET_TOKEN_FROM_OEM_CERT_ERROR:
case wvcdm::CRYPTO_SESSION_NOT_OPEN:
case wvcdm::GET_TOKEN_FROM_KEYBOX_ERROR:
case wvcdm::KEYBOX_TOKEN_TOO_SHORT:
case wvcdm::EXTRACT_SYSTEM_ID_FROM_OEM_CERT_ERROR:
case wvcdm::RSA_SIGNATURE_GENERATION_ERROR:
case wvcdm::GET_HDCP_CAPABILITY_FAILED:
case wvcdm::GET_NUMBER_OF_OPEN_SESSIONS_ERROR:
case wvcdm::GET_MAX_NUMBER_OF_OPEN_SESSIONS_ERROR:
case wvcdm::NOT_IMPLEMENTED_ERROR:
case wvcdm::GET_SRM_VERSION_ERROR:
case wvcdm::REWRAP_DEVICE_RSA_KEY_ERROR:
case wvcdm::REWRAP_DEVICE_RSA_KEY_30_ERROR:
case wvcdm::SERVICE_CERTIFICATE_PROVIDER_ID_EMPTY:
case wvcdm::INVALID_SRM_LIST:
return android::ERROR_DRM_UNKNOWN;
}
// 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_