// Copyright 2022 Google LLC. All Rights Reserved. This file and proprietary // source code may only be used and distributed under the Widevine License // Agreement. // #include "error_string_util.h" #include "OEMCryptoCENC.h" #include "wv_cdm_types.h" namespace wvutil { const std::string OEMCryptoResultToString(int oemcrypto_result) { switch (oemcrypto_result) { case OEMCrypto_SUCCESS: return "SUCCESS"; case OEMCrypto_ERROR_INIT_FAILED: return "INIT_FAILED"; case OEMCrypto_ERROR_TERMINATE_FAILED: return "TERMINATE_FAILED"; case OEMCrypto_ERROR_OPEN_FAILURE: return "OPEN_FAILURE"; case OEMCrypto_ERROR_CLOSE_FAILURE: return "CLOSE_FAILURE"; case OEMCrypto_ERROR_ENTER_SECURE_PLAYBACK_FAILED: return "ENTER_SECURE_PLAYBACK_FAILED"; case OEMCrypto_ERROR_EXIT_SECURE_PLAYBACK_FAILED: return "EXIT_SECURE_PLAYBACK_FAILED"; case OEMCrypto_ERROR_SHORT_BUFFER: return "SHORT_BUFFER"; case OEMCrypto_ERROR_NO_DEVICE_KEY: return "NO_DEVICE_KEY"; case OEMCrypto_ERROR_NO_ASSET_KEY: return "NO_ASSET_KEY"; case OEMCrypto_ERROR_KEYBOX_INVALID: return "KEYBOX_INVALID"; case OEMCrypto_ERROR_NO_KEYDATA: return "NO_KEYDATA"; case OEMCrypto_ERROR_NO_CW: return "NO_CW"; case OEMCrypto_ERROR_DECRYPT_FAILED: return "DECRYPT_FAILED"; case OEMCrypto_ERROR_WRITE_KEYBOX: return "WRITE_KEYBOX"; case OEMCrypto_ERROR_WRAP_KEYBOX: return "WRAP_KEYBOX"; case OEMCrypto_ERROR_BAD_MAGIC: return "BAD_MAGIC"; case OEMCrypto_ERROR_BAD_CRC: return "BAD_CRC"; case OEMCrypto_ERROR_NO_DEVICEID: return "NO_DEVICEID"; case OEMCrypto_ERROR_RNG_FAILED: return "RNG_FAILED"; case OEMCrypto_ERROR_RNG_NOT_SUPPORTED: return "RNG_NOT_SUPPORTED"; case OEMCrypto_ERROR_SETUP: return "SETUP"; case OEMCrypto_ERROR_OPEN_SESSION_FAILED: return "OPEN_SESSION_FAILED"; case OEMCrypto_ERROR_CLOSE_SESSION_FAILED: return "CLOSE_SESSION_FAILED"; case OEMCrypto_ERROR_INVALID_SESSION: return "INVALID_SESSION"; case OEMCrypto_ERROR_NOT_IMPLEMENTED: return "NOT_IMPLEMENTED"; case OEMCrypto_ERROR_NO_CONTENT_KEY: return "NO_CONTENT_KEY"; case OEMCrypto_ERROR_CONTROL_INVALID: return "CONTROL_INVALID"; case OEMCrypto_ERROR_UNKNOWN_FAILURE: return "UNKNOWN_FAILURE"; case OEMCrypto_ERROR_INVALID_CONTEXT: return "INVALID_CONTEXT"; case OEMCrypto_ERROR_SIGNATURE_FAILURE: return "SIGNATURE_FAILURE"; case OEMCrypto_ERROR_TOO_MANY_SESSIONS: return "TOO_MANY_SESSIONS"; case OEMCrypto_ERROR_INVALID_NONCE: return "INVALID_NONCE"; case OEMCrypto_ERROR_TOO_MANY_KEYS: return "TOO_MANY_KEYS"; case OEMCrypto_ERROR_DEVICE_NOT_RSA_PROVISIONED: return "DEVICE_NOT_RSA_PROVISIONED"; case OEMCrypto_ERROR_INVALID_RSA_KEY: return "INVALID_RSA_KEY"; case OEMCrypto_ERROR_KEY_EXPIRED: return "KEY_EXPIRED"; case OEMCrypto_ERROR_INSUFFICIENT_RESOURCES: return "INSUFFICIENT_RESOURCES"; case OEMCrypto_ERROR_INSUFFICIENT_HDCP: return "INSUFFICIENT_HDCP"; case OEMCrypto_ERROR_BUFFER_TOO_LARGE: return "BUFFER_TOO_LARGE"; case OEMCrypto_WARNING_GENERATION_SKEW: return "OEMCrypto_WARNING_GENERATION_SKEW"; case OEMCrypto_ERROR_GENERATION_SKEW: return "GENERATION_SKEW"; case OEMCrypto_LOCAL_DISPLAY_ONLY: return "OEMCrypto_LOCAL_DISPLAY_ONLY"; case OEMCrypto_ERROR_ANALOG_OUTPUT: return "ANALOG_OUTPUT"; case OEMCrypto_ERROR_WRONG_PST: return "WRONG_PST"; case OEMCrypto_ERROR_WRONG_KEYS: return "WRONG_KEYS"; case OEMCrypto_ERROR_MISSING_MASTER: return "MISSING_MASTER"; case OEMCrypto_ERROR_LICENSE_INACTIVE: return "LICENSE_INACTIVE"; case OEMCrypto_ERROR_ENTRY_NEEDS_UPDATE: return "ENTRY_NEEDS_UPDATE"; case OEMCrypto_ERROR_ENTRY_IN_USE: return "ENTRY_IN_USE"; case OEMCrypto_ERROR_USAGE_TABLE_UNRECOVERABLE: return "USAGE_TABLE_UNRECOVERABLE"; case OEMCrypto_KEY_NOT_LOADED: return "OEMCrypto_KEY_NOT_LOADED"; case OEMCrypto_KEY_NOT_ENTITLED: return "OEMCrypto_KEY_NOT_ENTITLED"; case OEMCrypto_ERROR_BAD_HASH: return "BAD_HASH"; case OEMCrypto_ERROR_OUTPUT_TOO_LARGE: return "OUTPUT_TOO_LARGE"; case OEMCrypto_ERROR_SESSION_LOST_STATE: return "SESSION_LOST_STATE"; case OEMCrypto_ERROR_SYSTEM_INVALIDATED: return "SYSTEM_INVALIDATED"; case OEMCrypto_ERROR_LICENSE_RELOAD: return "LICENSE_RELOAD"; case OEMCrypto_ERROR_MULTIPLE_USAGE_ENTRIES: return "MULTIPLE_USAGE_ENTRIES"; case OEMCrypto_WARNING_MIXED_OUTPUT_PROTECTION: return "MIXED_OUTPUT_PROTECTION"; case OEMCrypto_ERROR_INVALID_ENTITLED_KEY_SESSION: return "INVALID_ENTITLED_KEY_SESSION"; case OEMCrypto_ERROR_NEEDS_KEYBOX_PROVISIONING: return "NEEDS_KEYBOX_PROVISIONING"; case OEMCrypto_ERROR_UNSUPPORTED_CIPHER: return "OEMCrypto_ERROR_UNSUPPORTED_CIPHER"; case OEMCrypto_ERROR_DVR_FORBIDDEN: return "OEMCrypto_ERROR_DVR_FORBIDDEN"; case OEMCrypto_ERROR_INSUFFICIENT_PRIVILEGE: return "OEMCrypto_ERROR_INSUFFICIENT_PRIVILEGE"; case OEMCrypto_ERROR_INVALID_KEY: return "INVALID_KEY"; // ODK Values. case ODK_ERROR_CORE_MESSAGE: return "CORE_MESSAGE"; case ODK_SET_TIMER: return "SET_TIMER"; case ODK_DISABLE_TIMER: return "DISABLE_TIMER"; case ODK_TIMER_EXPIRED: return "TIMER_EXPIRED"; case ODK_UNSUPPORTED_API: return "UNSUPPORTED_API"; case ODK_STALE_RENEWAL: return "STALE_RENEWAL"; // OPK Values. case OPK_ERROR_INCOMPATIBLE_VERSION: return "INCOMPATIBLE_VERSION"; case OPK_ERROR_REMOTE_CALL: return "REMOTE_CALL"; case OPK_ERROR_NO_PERSISTENT_DATA: return "NO_PERSISTENT_DATA"; default: return "Invalid OEMCrypto error."; } } } // namespace wvutil