Files
android/libwvdrmengine/include/mapErrors-inl.h
Kyle Zhang 5070a7b949 Exposing the Cast Signing Algorithm
1. Exposing the Cast Signing Algorithm in cdm core.
2. Update core Cast tests to use new core CDM Cast signing API.

Bug: 279671867
Bug: 279672538
Change-Id: Ia73c4b5e6dd61edf790bca97a321881d310e7a99
2024-01-26 17:05:58 -08:00

473 lines
18 KiB
C++

//
// Copyright 2021 Google LLC. All Rights Reserved. This file and proprietary
// source code may only be used and distributed under the Widevine License
// Agreement.
//
#ifndef WV_MAP_ERRORS_INL_H_
#define WV_MAP_ERRORS_INL_H_
#include "WVErrors.h"
#include "WVTypes.h"
#include "media/stagefright/MediaErrors.h"
#include "utils/Errors.h"
#include "wv_cdm_types.h"
namespace wvdrm {
using ::aidl::android::hardware::drm::Status;
static inline WvStatus mapCdmResponseType(wvcdm::CdmResponseType res) {
Status err = Status::ERROR_DRM_UNKNOWN;
switch (res.code()) {
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.
case wvcdm::NO_ERROR:
err = Status::OK;
break;
case wvcdm::DECRYPT_NOT_READY:
case wvcdm::KEY_NOT_FOUND_IN_SESSION:
case wvcdm::NEED_KEY:
case wvcdm::NO_MATCHING_ENTITLEMENT_KEY:
// TODO(http://b/119690361): there are several NO_CONTENT_* errors.
// that should probably all turn into NO_LICENSE. Here, and below, and
// everywhere.
case wvcdm::NO_CONTENT_KEY_3:
err = Status::ERROR_DRM_NO_LICENSE;
break;
case wvcdm::NEED_PROVISIONING:
err = Status::ERROR_DRM_NOT_PROVISIONED;
break;
case wvcdm::DEVICE_REVOKED:
err = Status::ERROR_DRM_DEVICE_REVOKED;
break;
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES:
err = Status::ERROR_DRM_RESOURCE_BUSY;
break;
case wvcdm::RELEASE_USAGE_INFO_ERROR:
case wvcdm::RELEASE_USAGE_INFO_FAILED:
case wvcdm::SYSTEM_INVALIDATED_ERROR:
err = Status::ERROR_DRM_INVALID_STATE;
break;
case wvcdm::SESSION_NOT_FOUND_FOR_DECRYPT:
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_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_23:
case wvcdm::SESSION_NOT_FOUND_GENERIC_CRYPTO:
err = Status::ERROR_DRM_SESSION_NOT_OPENED;
break;
case wvcdm::DECRYPT_ERROR:
case wvcdm::SECURE_BUFFER_REQUIRED:
err = Status::ERROR_DRM_CANNOT_HANDLE;
break;
case wvcdm::ANALOG_OUTPUT_ERROR:
case wvcdm::INSUFFICIENT_OUTPUT_PROTECTION:
err = Status::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION;
break;
case wvcdm::KEYSET_ID_NOT_FOUND_4:
err = Status::BAD_VALUE;
break;
// The following cases follow the order in wv_cdm_types.h
// to make it easier to keep track of newly defined errors.
case wvcdm::CERT_PROVISIONING_GET_KEYBOX_ERROR_1:
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_1:
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_3:
case wvcdm::INVALID_DEVICE_CERTIFICATE_TYPE:
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_1:
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_2:
case wvcdm::UNPROVISION_ERROR_4:
case wvcdm::PARSE_SERVICE_CERTIFICATE_ERROR:
case wvcdm::CLIENT_ID_RSA_INIT_ERROR:
case wvcdm::INCORRECT_CRYPTO_MODE:
case wvcdm::INVALID_PARAMETERS_ENG_5:
case wvcdm::COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR:
case wvcdm::UNEXPECTED_EMPTY_USAGE_ENTRY:
case wvcdm::INVALID_USAGE_ENTRY_NUMBER_MODIFICATION:
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_6:
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_7:
case wvcdm::DELETE_USAGE_ERROR_3:
case wvcdm::LOAD_SYSTEM_ID_ERROR:
case wvcdm::RSA_SIGNATURE_GENERATION_ERROR:
case wvcdm::REWRAP_DEVICE_RSA_KEY_ERROR:
case wvcdm::PARSE_OKP_RESPONSE_ERROR:
case wvcdm::OKP_ALREADY_PROVISIONED:
ALOGW("Returns UNKNOWN error for legacy status: %u", res.ToInt());
err = Status::ERROR_DRM_UNKNOWN;
break;
case wvcdm::KEY_PROHIBITED_FOR_SECURITY_LEVEL:
err = Status::ERROR_DRM_INSUFFICIENT_SECURITY;
break;
case wvcdm::OUTPUT_TOO_LARGE_ERROR:
err = Status::ERROR_DRM_FRAME_TOO_LARGE;
break;
case wvcdm::SESSION_LOST_STATE_ERROR:
err = Status::ERROR_DRM_SESSION_LOST_STATE;
break;
case wvcdm::LICENSE_REQUEST_NONCE_GENERATION_ERROR:
case wvcdm::LICENSE_RENEWAL_NONCE_GENERATION_ERROR:
case wvcdm::CERT_PROVISIONING_NONCE_GENERATION_ERROR:
case wvcdm::NONCE_GENERATION_ERROR:
// These are likely nonce flood errors
err = Status::ERROR_DRM_RESOURCE_CONTENTION;
break;
case wvcdm::CANNOT_DECRYPT_ZERO_SUBSAMPLES:
err = Status::CANNOT_DECRYPT_ZERO_SUBSAMPLES;
break;
case wvcdm::CLIENT_ID_AES_ENCRYPT_ERROR:
case wvcdm::CLIENT_ID_AES_INIT_ERROR:
case wvcdm::CLIENT_ID_RSA_ENCRYPT_ERROR:
err = Status::CRYPTO_LIBRARY_ERROR;
break;
case wvcdm::PROVISIONING_NOT_ALLOWED_FOR_ATSC:
err = Status::ERROR_DRM_CANNOT_HANDLE;
break;
case wvcdm::CERT_PROVISIONING_REQUEST_ERROR_4:
case wvcdm::CLIENT_IDENTIFICATION_TOKEN_ERROR_1:
case wvcdm::CREATE_USAGE_ENTRY_UNKNOWN_ERROR:
case wvcdm::CREATE_USAGE_TABLE_ERROR:
case wvcdm::DEACTIVATE_USAGE_ENTRY_ERROR:
case wvcdm::EMPTY_LICENSE_RENEWAL:
case wvcdm::EXTRACT_SYSTEM_ID_FROM_OEM_CERT_ERROR:
case wvcdm::GENERATE_DERIVED_KEYS_ERROR:
case wvcdm::GENERATE_DERIVED_KEYS_ERROR_2:
case wvcdm::GENERATE_SIGNATURE_ERROR:
case wvcdm::GENERATE_USAGE_REPORT_ERROR:
case wvcdm::GET_DECRYPT_HASH_ERROR:
case wvcdm::GET_DEVICE_ID_ERROR:
case wvcdm::GET_HDCP_CAPABILITY_FAILED:
case wvcdm::GET_MAX_NUMBER_OF_OPEN_SESSIONS_ERROR:
case wvcdm::GET_NUMBER_OF_OPEN_SESSIONS_ERROR:
case wvcdm::GET_PROVISIONING_METHOD_ERROR:
case wvcdm::GET_SIGNATURE_HASH_ALGORITHM_ERROR_1:
case wvcdm::GET_SIGNATURE_HASH_ALGORITHM_ERROR_2:
case wvcdm::GET_SIGNATURE_HASH_ALGORITHM_ERROR_3:
case wvcdm::GET_SRM_VERSION_ERROR:
case wvcdm::GET_TOKEN_FROM_KEYBOX_ERROR:
case wvcdm::GET_TOKEN_FROM_OEM_CERT_ERROR:
case wvcdm::INVALID_DECRYPT_HASH_FORMAT:
case wvcdm::INVALID_SESSION_1:
case wvcdm::INVALID_SESSION_2:
case wvcdm::KEYBOX_TOKEN_TOO_SHORT:
case wvcdm::LOAD_USAGE_ENTRY_UNKNOWN_ERROR:
case wvcdm::LOAD_USAGE_HEADER_UNKNOWN_ERROR:
case wvcdm::MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
case wvcdm::OPEN_CRYPTO_SESSION_ERROR:
case wvcdm::RANDOM_GENERATION_ERROR:
case wvcdm::SET_DECRYPT_HASH_ERROR:
case wvcdm::SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR:
case wvcdm::UNKNOWN_CLIENT_TOKEN_TYPE:
case wvcdm::UNKNOWN_SELECT_KEY_ERROR_1:
case wvcdm::UNKNOWN_SELECT_KEY_ERROR_2:
case wvcdm::UPDATE_USAGE_ENTRY_UNKNOWN_ERROR:
case wvcdm::USAGE_SUPPORT_GET_API_FAILED:
err = Status::GENERAL_OEM_ERROR;
break;
case wvcdm::CANNOT_DECRYPT_ZERO_SAMPLES:
case wvcdm::CERT_PROVISIONING_REQUEST_ERROR_1:
case wvcdm::CRYPTO_SESSION_NOT_INITIALIZED:
case wvcdm::CRYPTO_SESSION_NOT_OPEN:
case wvcdm::DEVICE_CANNOT_REPROVISION:
case wvcdm::DEVICE_CERTIFICATE_ERROR_1:
case wvcdm::DUPLICATE_SESSION_ID_SPECIFIED:
case wvcdm::EMPTY_KEYSET_ID_ENG_5:
case wvcdm::EMPTY_RESPONSE_ERROR_1:
case wvcdm::EMPTY_SESSION_ID:
case wvcdm::INCORRECT_USAGE_SUPPORT_TYPE_1:
case wvcdm::INCORRECT_USAGE_SUPPORT_TYPE_2:
case wvcdm::INVALID_IV_SIZE:
case wvcdm::INVALID_KEY_SYSTEM:
case wvcdm::INVALID_PARAMETERS_ENG_22:
case wvcdm::INVALID_PARAMETERS_ENG_23:
case wvcdm::INVALID_PARAMETERS_ENG_24:
case wvcdm::INVALID_PARAMETERS_LIC_1:
case wvcdm::INVALID_PARAMETERS_LIC_2:
case wvcdm::INVALID_PARAMETERS_LIC_6:
case wvcdm::INVALID_PARAMETERS_LIC_7:
case wvcdm::INVALID_PROVISIONING_PARAMETERS_1:
case wvcdm::INVALID_PROVISIONING_PARAMETERS_2:
case wvcdm::INVALID_PROVISIONING_REQUEST_PARAM_1:
case wvcdm::INVALID_PROVISIONING_REQUEST_PARAM_2:
case wvcdm::INVALID_SESSION_ID:
case wvcdm::KEYSET_ID_NOT_FOUND_1:
case wvcdm::KEYSET_ID_NOT_FOUND_2:
case wvcdm::KEYSET_ID_NOT_FOUND_3:
case wvcdm::KEY_CONFLICT_1:
case wvcdm::KEY_NOT_FOUND_2:
case wvcdm::KEY_REQUEST_ERROR_1:
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_1:
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_2:
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_3:
case wvcdm::LICENSE_PARSER_NOT_INITIALIZED_4:
case wvcdm::LICENSE_REQUEST_SERVICE_CERTIFICATE_GENERATION_ERROR:
case wvcdm::LICENSE_USAGE_ENTRY_MISSING:
case wvcdm::LOAD_ENTITLED_CONTENT_KEYS_ERROR:
case wvcdm::LOAD_USAGE_ENTRY_GENERATION_SKEW:
case wvcdm::LOAD_USAGE_ENTRY_INVALID_SESSION:
case wvcdm::LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
case wvcdm::LOAD_USAGE_HEADER_BAD_MAGIC:
case wvcdm::LOAD_USAGE_HEADER_GENERATION_SKEW:
case wvcdm::LOAD_USAGE_HEADER_SIGNATURE_FAILURE:
case wvcdm::LOAD_USAGE_INFO_MISSING:
case wvcdm::MOVE_USAGE_ENTRY_DESTINATION_IN_USE:
case wvcdm::NOT_IMPLEMENTED_ERROR:
case wvcdm::NOT_INITIALIZED_ERROR:
case wvcdm::NO_SRM_VERSION:
case wvcdm::NO_USAGE_ENTRIES:
case wvcdm::PARAMETER_NULL:
case wvcdm::PREPARE_CENC_CONTENT_ID_FAILED:
case wvcdm::PREPARE_WEBM_CONTENT_ID_FAILED:
case wvcdm::REINIT_ERROR:
case wvcdm::REMOVE_OFFLINE_LICENSE_ERROR_2:
case wvcdm::REMOVE_USAGE_INFO_ERROR_3:
case wvcdm::SESSION_NOT_FOUND_11:
case wvcdm::SESSION_NOT_FOUND_12:
case wvcdm::SESSION_NOT_FOUND_13:
case wvcdm::SESSION_NOT_FOUND_14:
case wvcdm::SESSION_NOT_FOUND_15:
case wvcdm::SESSION_NOT_FOUND_16:
case wvcdm::SESSION_NOT_FOUND_24:
case wvcdm::SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE:
case wvcdm::STORAGE_PROHIBITED:
case wvcdm::STORE_LICENSE_ERROR_2:
case wvcdm::UNSUPPORTED_SIGNATURE_HASH_ALGORITHM_1:
case wvcdm::UNSUPPORTED_SIGNATURE_HASH_ALGORITHM_2:
case wvcdm::UNSUPPORTED_SIGNATURE_HASH_ALGORITHM_3:
case wvcdm::UNSUPPORTED_SIGNATURE_HASH_ALGORITHM_4:
case wvcdm::USAGE_ENTRY_NUMBER_MISMATCH:
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
case wvcdm::USAGE_INFORMATION_SUPPORT_FAILED:
case wvcdm::USAGE_INVALID_LOAD_ENTRY:
case wvcdm::USAGE_INVALID_NEW_ENTRY:
case wvcdm::USAGE_INVALID_PARAMETERS_1:
case wvcdm::USAGE_INVALID_PARAMETERS_2:
case wvcdm::USAGE_STORE_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
case wvcdm::CLIENT_TOKEN_NOT_SET:
err = Status::GENERAL_PLUGIN_ERROR;
break;
case wvcdm::CLIENT_ID_GENERATE_RANDOM_ERROR:
err = Status::ERROR_DRM_RESOURCE_CONTENTION;
break;
case wvcdm::CENC_INIT_DATA_UNAVAILABLE:
case wvcdm::INIT_DATA_NOT_FOUND:
case wvcdm::INVALID_PARAMETERS_LIC_3:
case wvcdm::INVALID_PARAMETERS_LIC_4:
case wvcdm::UNSUPPORTED_INIT_DATA:
case wvcdm::UNSUPPORTED_INIT_DATA_FORMAT:
case wvcdm::WEBM_INIT_DATA_UNAVAILABLE:
err = Status::INIT_DATA_INVALID;
break;
case wvcdm::EMPTY_KEYSET_ID:
case wvcdm::EMPTY_KEYSET_ID_ENG_1:
case wvcdm::EMPTY_KEYSET_ID_ENG_2:
case wvcdm::EMPTY_KEYSET_ID_ENG_3:
case wvcdm::EMPTY_KEYSET_ID_ENG_4:
case wvcdm::EMPTY_LICENSE_RESPONSE_1:
case wvcdm::EMPTY_LICENSE_RESPONSE_2:
case wvcdm::EMPTY_PROVISIONING_RESPONSE:
case wvcdm::INVALID_PARAMETERS_ENG_13:
case wvcdm::INVALID_PARAMETERS_ENG_14:
case wvcdm::INVALID_PARAMETERS_ENG_15:
case wvcdm::INVALID_PARAMETERS_ENG_16:
case wvcdm::INVALID_QUERY_KEY:
case wvcdm::KEY_NOT_FOUND_1:
case wvcdm::SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH:
err = Status::BAD_VALUE;
break;
case wvcdm::KEY_NOT_FOUND_3:
case wvcdm::KEY_NOT_FOUND_4:
case wvcdm::KEY_NOT_FOUND_5:
case wvcdm::KEY_NOT_FOUND_6:
err = Status::KEY_NOT_LOADED;
break;
case wvcdm::ADD_KEY_ERROR:
case wvcdm::CORE_MESSAGE_NOT_FOUND:
case wvcdm::EMPTY_KEY_DATA_1:
case wvcdm::EMPTY_KEY_DATA_2:
case wvcdm::INVALID_LICENSE_RESPONSE:
case wvcdm::INVALID_LICENSE_TYPE:
case wvcdm::INVALID_SRM_LIST:
case wvcdm::KEY_SIZE_ERROR_1:
case wvcdm::KEY_SIZE_ERROR_2:
case wvcdm::LICENSE_ID_NOT_FOUND:
case wvcdm::LICENSE_RESPONSE_NOT_SIGNED:
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_1:
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_2:
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_3:
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_4:
case wvcdm::LICENSE_RESPONSE_PARSE_ERROR_5:
case wvcdm::LOAD_KEY_ERROR:
case wvcdm::LOAD_LICENSE_ERROR:
case wvcdm::LOAD_RENEWAL_ERROR:
case wvcdm::LOAD_SRM_ERROR:
case wvcdm::NOT_AN_ENTITLEMENT_SESSION:
case wvcdm::NO_CONTENT_KEY:
case wvcdm::NO_CONTENT_KEY_2:
case wvcdm::NO_DEVICE_KEY_1:
case wvcdm::REFRESH_KEYS_ERROR:
case wvcdm::SESSION_KEYS_NOT_FOUND:
case wvcdm::SIGNATURE_NOT_FOUND:
err = Status::LICENSE_PARSE_ERROR;
break;
case wvcdm::LICENSE_RENEWAL_PROHIBITED:
case wvcdm::OFFLINE_LICENSE_PROHIBITED:
err = Status::LICENSE_POLICY_ERROR;
break;
case wvcdm::PARSE_REQUEST_ERROR_2:
case wvcdm::RELEASE_LICENSE_ERROR_1:
case wvcdm::SESSION_KEYS_NOT_FOUND_2:
err = Status::LICENSE_RELEASE_ERROR;
break;
case wvcdm::KEY_ERROR:
case wvcdm::RELEASE_KEY_ERROR:
case wvcdm::RENEW_KEY_ERROR_1:
err = Status::LICENSE_REQUEST_REJECTED;
break;
case wvcdm::EMPTY_LICENSE_REQUEST_2:
case wvcdm::EMPTY_LICENSE_REQUEST_3:
case wvcdm::EMPTY_LICENSE_RESPONSE_3:
case wvcdm::EMPTY_LICENSE_RESPONSE_4:
case wvcdm::INVALID_LICENSE_REQUEST_TYPE_1:
case wvcdm::INVALID_LICENSE_REQUEST_TYPE_2:
case wvcdm::INVALID_LICENSE_TYPE_2:
case wvcdm::PARSE_REQUEST_ERROR_1:
case wvcdm::RESTORE_OFFLINE_LICENSE_ERROR_2:
case wvcdm::SIGNATURE_NOT_FOUND_2:
err = Status::LICENSE_RESTORE_ERROR;
break;
case wvcdm::GET_RELEASED_LICENSE_ERROR:
case wvcdm::RESTORE_OFFLINE_LICENSE_ERROR_3:
case wvcdm::USAGE_ENTRY_ALREADY_LOADED:
err = Status::LICENSE_STATE_ERROR;
break;
case wvcdm::DEVICE_CERTIFICATE_ERROR_2:
case wvcdm::DEVICE_CERTIFICATE_ERROR_3:
case wvcdm::DEVICE_CERTIFICATE_ERROR_4:
case wvcdm::LICENSE_PARSER_INIT_ERROR:
case wvcdm::PARSE_RESPONSE_ERROR_1:
case wvcdm::PARSE_RESPONSE_ERROR_2:
case wvcdm::PARSE_RESPONSE_ERROR_3:
case wvcdm::PARSE_RESPONSE_ERROR_4:
err = Status::MALFORMED_CERTIFICATE;
break;
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_2:
case wvcdm::INVALID_DECRYPT_PARAMETERS_ENG_4:
err = Status::MEDIA_FRAMEWORK_ERROR;
break;
case wvcdm::PRIVACY_MODE_ERROR_1:
case wvcdm::PRIVACY_MODE_ERROR_2:
case wvcdm::PRIVACY_MODE_ERROR_3:
err = Status::MISSING_CERTIFICATE;
break;
case wvcdm::LOAD_DEVICE_RSA_KEY_ERROR:
err = Status::PROVISIONING_CERTIFICATE_ERROR;
break;
case wvcdm::CERT_PROVISIONING_EMPTY_SERVICE_CERTIFICATE:
case wvcdm::SERVICE_CERTIFICATE_PROVIDER_ID_EMPTY:
err = Status::PROVISIONING_CONFIGURATION_ERROR;
break;
case wvcdm::CERT_PROVISIONING_INVALID_CERT_TYPE:
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_1:
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_2:
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_3:
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_4:
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_9:
case wvcdm::LOAD_PROVISIONING_ERROR:
err = Status::PROVISIONING_PARSE_ERROR;
break;
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_10:
err = Status::PROVISIONING_REQUEST_REJECTED;
break;
case wvcdm::EMPTY_PROVISIONING_CERTIFICATE_1:
case wvcdm::EMPTY_PROVISIONING_CERTIFICATE_2:
err = Status::RETRYABLE_PROVISIONING_ERROR;
break;
case wvcdm::RELEASE_LICENSE_ERROR_2:
err = Status::SECURE_STOP_RELEASE_ERROR;
break;
case wvcdm::GET_LICENSE_ERROR:
case wvcdm::GET_OFFLINE_LICENSE_STATE_ERROR_1:
case wvcdm::GET_OFFLINE_LICENSE_STATE_ERROR_2:
case wvcdm::GET_USAGE_INFO_ERROR_1:
case wvcdm::GET_USAGE_INFO_ERROR_2:
case wvcdm::GET_USAGE_INFO_ERROR_3:
case wvcdm::GET_USAGE_INFO_ERROR_4:
case wvcdm::LIST_LICENSE_ERROR_1:
case wvcdm::LIST_LICENSE_ERROR_2:
case wvcdm::LIST_USAGE_ERROR_1:
case wvcdm::LIST_USAGE_ERROR_2:
case wvcdm::LOAD_USAGE_INFO_FILE_ERROR:
case wvcdm::REMOVE_OFFLINE_LICENSE_ERROR_1:
case wvcdm::REMOVE_USAGE_INFO_ERROR_2:
case wvcdm::SESSION_FILE_HANDLE_INIT_ERROR:
case wvcdm::UNPROVISION_ERROR_1:
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_LICENSE_FAILED:
case wvcdm::USAGE_GET_ENTRY_RETRIEVE_USAGE_INFO_FAILED:
case wvcdm::USAGE_INFO_NOT_FOUND:
case wvcdm::USAGE_STORE_ENTRY_RETRIEVE_LICENSE_FAILED:
case wvcdm::USAGE_STORE_ENTRY_RETRIEVE_USAGE_INFO_FAILED:
err = Status::STORAGE_READ_FAILURE;
break;
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_7:
case wvcdm::CERT_PROVISIONING_RESPONSE_ERROR_8:
case wvcdm::DELETE_USAGE_ERROR_1:
case wvcdm::DELETE_USAGE_ERROR_2:
case wvcdm::RELEASE_KEY_REQUEST_ERROR:
case wvcdm::REMOVE_ALL_USAGE_INFO_ERROR_5:
case wvcdm::REMOVE_USAGE_INFO_ERROR_1:
case wvcdm::RENEW_KEY_ERROR_2:
case wvcdm::STORE_LICENSE_ERROR_1:
case wvcdm::STORE_USAGE_INFO_ERROR:
case wvcdm::UNPROVISION_ERROR_2:
case wvcdm::UNPROVISION_ERROR_3:
case wvcdm::USAGE_STORE_LICENSE_FAILED:
case wvcdm::USAGE_STORE_USAGE_INFO_FAILED:
case wvcdm::STORE_ATSC_LICENSE_DEVICE_FILES_INIT_ERROR:
case wvcdm::STORE_ATSC_LICENSE_ERROR:
err = Status::STORAGE_WRITE_FAILURE;
break;
default:
err = Status::ERROR_DRM_UNKNOWN;
}
return WvStatus(err, res);
}
static inline WvStatus mapCdmResponseType(wvcdm::CdmResponseEnum res) {
return mapCdmResponseType(wvcdm::CdmResponseType(res));
}
static inline bool isCdmResponseTypeSuccess(wvcdm::CdmResponseType res) {
return mapCdmResponseType(res) == Status::OK;
}
} // namespace wvdrm
#endif // WV_MAP_ERRORS_INL_H_