// 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. // This file adds some print methods so that when unit tests fail, the // will print the name of an enumeration instead of the numeric value. #include "test_printers.h" namespace wvcdm { void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) { switch (value) { case NO_ERROR: *os << "NO_ERROR"; break; case UNKNOWN_ERROR: *os << "UNKNOWN_ERROR"; break; // Remaining codes are order alphabetically. case ADD_KEY_ERROR: *os << "ADD_KEY_ERROR"; break; case ANALOG_OUTPUT_ERROR: *os << "ANALOG_OUTPUT_ERROR"; break; case CANNOT_DECRYPT_ZERO_SAMPLES: *os << "CANNOT_DECRYPT_ZERO_SAMPLES"; break; case CANNOT_DECRYPT_ZERO_SUBSAMPLES: *os << "CANNOT_DECRYPT_ZERO_SUBSAMPLES"; break; case CENC_INIT_DATA_UNAVAILABLE: *os << "CENC_INIT_DATA_UNAVAILABLE"; break; case CERT_PROVISIONING_EMPTY_SERVICE_CERTIFICATE: *os << "CERT_PROVISIONING_EMPTY_SERVICE_CERTIFICATE"; break; case CERT_PROVISIONING_GET_KEYBOX_ERROR_1: *os << "CERT_PROVISIONING_GET_KEYBOX_ERROR_1"; break; case CERT_PROVISIONING_INVALID_CERT_TYPE: *os << "CERT_PROVISIONING_INVALID_CERT_TYPE"; break; case CERT_PROVISIONING_NONCE_GENERATION_ERROR: *os << "CERT_PROVISIONING_NONCE_GENERATION_ERROR"; break; case CERT_PROVISIONING_REQUEST_ERROR_1: *os << "CERT_PROVISIONING_REQUEST_ERROR_1"; break; case CERT_PROVISIONING_REQUEST_ERROR_4: *os << "CERT_PROVISIONING_REQUEST_ERROR_4"; break; case CERT_PROVISIONING_RESPONSE_ERROR_1: *os << "CERT_PROVISIONING_RESPONSE_ERROR_1"; break; case CERT_PROVISIONING_RESPONSE_ERROR_2: *os << "CERT_PROVISIONING_RESPONSE_ERROR_2"; break; case CERT_PROVISIONING_RESPONSE_ERROR_3: *os << "CERT_PROVISIONING_RESPONSE_ERROR_3"; break; case CERT_PROVISIONING_RESPONSE_ERROR_4: *os << "CERT_PROVISIONING_RESPONSE_ERROR_4"; break; case CERT_PROVISIONING_RESPONSE_ERROR_7: *os << "CERT_PROVISIONING_RESPONSE_ERROR_7"; break; case CERT_PROVISIONING_RESPONSE_ERROR_8: *os << "CERT_PROVISIONING_RESPONSE_ERROR_8"; break; case CLIENT_ID_AES_ENCRYPT_ERROR: *os << "CLIENT_ID_AES_ENCRYPT_ERROR"; break; case CLIENT_ID_AES_INIT_ERROR: *os << "CLIENT_ID_AES_INIT_ERROR"; break; case CLIENT_IDENTIFICATION_TOKEN_ERROR_1: *os << "CLIENT_IDENTIFICATION_TOKEN_ERROR_1"; break; case CLIENT_ID_GENERATE_RANDOM_ERROR: *os << "CLIENT_ID_GENERATE_RANDOM_ERROR"; break; case CLIENT_ID_RSA_ENCRYPT_ERROR: *os << "CLIENT_ID_RSA_ENCRYPT_ERROR"; break; case CLIENT_ID_RSA_INIT_ERROR: *os << "CLIENT_ID_RSA_INIT_ERROR"; break; case COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR: *os << "COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR"; break; case CORE_MESSAGE_NOT_FOUND: *os << "CORE_MESSAGE_NOT_FOUND"; break; case CREATE_USAGE_ENTRY_UNKNOWN_ERROR: *os << "CREATE_USAGE_ENTRY_UNKNOWN_ERROR"; break; case CREATE_USAGE_TABLE_ERROR: *os << "CREATE_USAGE_TABLE_ERROR"; break; case CRYPTO_SESSION_NOT_INITIALIZED: *os << "CRYPTO_SESSION_NOT_INITIALIZED"; break; case CRYPTO_SESSION_NOT_OPEN: *os << "CRYPTO_SESSION_NOT_OPEN"; break; case DEACTIVATE_USAGE_ENTRY_ERROR: *os << "DEACTIVATE_USAGE_ENTRY_ERROR"; break; case DECRYPT_ERROR: *os << "DECRYPT_ERROR"; break; case DECRYPT_NOT_READY: *os << "DECRYPT_NOT_READY"; break; case DELETE_USAGE_ERROR_1: *os << "DELETE_USAGE_ERROR_1"; break; case DELETE_USAGE_ERROR_2: *os << "DELETE_USAGE_ERROR_2"; break; case DELETE_USAGE_ERROR_3: *os << "DELETE_USAGE_ERROR_3"; break; case DEVICE_CANNOT_REPROVISION: *os << "DEVICE_CANNOT_REPROVISION"; break; case DEVICE_CERTIFICATE_ERROR_1: *os << "DEVICE_CERTIFICATE_ERROR_1"; break; case DEVICE_CERTIFICATE_ERROR_2: *os << "DEVICE_CERTIFICATE_ERROR_2"; break; case DEVICE_CERTIFICATE_ERROR_3: *os << "DEVICE_CERTIFICATE_ERROR_3"; break; case DEVICE_CERTIFICATE_ERROR_4: *os << "DEVICE_CERTIFICATE_ERROR_4"; break; case DEVICE_REVOKED: *os << "DEVICE_REVOKED"; break; case DUPLICATE_SESSION_ID_SPECIFIED: *os << "DUPLICATE_SESSION_ID_SPECIFIED"; break; case EMPTY_KEY_DATA_1: *os << "EMPTY_KEY_DATA_1"; break; case EMPTY_KEY_DATA_2: *os << "EMPTY_KEY_DATA_2"; break; case EMPTY_KEYSET_ID: *os << "EMPTY_KEYSET_ID"; break; case EMPTY_KEYSET_ID_ENG_1: *os << "EMPTY_KEYSET_ID_ENG_1"; break; case EMPTY_KEYSET_ID_ENG_2: *os << "EMPTY_KEYSET_ID_ENG_2"; break; case EMPTY_KEYSET_ID_ENG_3: *os << "EMPTY_KEYSET_ID_ENG_3"; break; case EMPTY_KEYSET_ID_ENG_4: *os << "EMPTY_KEYSET_ID_ENG_4"; break; case EMPTY_LICENSE_RENEWAL: *os << "EMPTY_LICENSE_RENEWAL"; break; case EMPTY_LICENSE_REQUEST: *os << "EMPTY_LICENSE_REQUEST"; break; case EMPTY_LICENSE_REQUEST_2: *os << "EMPTY_LICENSE_REQUEST_2"; break; case EMPTY_LICENSE_REQUEST_3: *os << "EMPTY_LICENSE_REQUEST_3"; break; case EMPTY_LICENSE_RESPONSE_1: *os << "EMPTY_LICENSE_RESPONSE_1"; break; case EMPTY_LICENSE_RESPONSE_2: *os << "EMPTY_LICENSE_RESPONSE_2"; break; case EMPTY_LICENSE_RESPONSE_3: *os << "EMPTY_LICENSE_RESPONSE_3"; break; case EMPTY_LICENSE_RESPONSE_4: *os << "EMPTY_LICENSE_RESPONSE_4"; break; case EMPTY_PROVISIONING_CERTIFICATE_1: *os << "EMPTY_PROVISIONING_CERTIFICATE_1"; break; case EMPTY_PROVISIONING_CERTIFICATE_2: *os << "EMPTY_PROVISIONING_CERTIFICATE_2"; break; case EMPTY_PROVISIONING_RESPONSE: *os << "EMPTY_PROVISIONING_RESPONSE"; break; case EMPTY_RESPONSE_ERROR_1: *os << "EMPTY_RESPONSE_ERROR_1"; break; case EMPTY_SESSION_ID: *os << "EMPTY_SESSION_ID"; break; case EXTRACT_SYSTEM_ID_FROM_OEM_CERT_ERROR: *os << "EXTRACT_SYSTEM_ID_FROM_OEM_CERT_ERROR"; break; case GENERATE_DERIVED_KEYS_ERROR: *os << "GENERATE_DERIVED_KEYS_ERROR"; break; case GENERATE_DERIVED_KEYS_ERROR_2: *os << "GENERATE_DERIVED_KEYS_ERROR_2"; break; case GENERATE_SIGNATURE_ERROR: *os << "GENERATE_SIGNATURE_ERROR"; break; case GENERATE_USAGE_REPORT_ERROR: *os << "GENERATE_USAGE_REPORT_ERROR"; break; case GET_DECRYPT_HASH_ERROR: *os << "GET_DECRYPT_HASH_ERROR"; break; case GET_DEVICE_ID_ERROR: *os << "GET_DEVICE_ID_ERROR"; break; case GET_HDCP_CAPABILITY_FAILED: *os << "GET_HDCP_CAPABILITY_FAILED"; break; case GET_LICENSE_ERROR: *os << "GET_LICENSE_ERROR"; break; case GET_MAX_NUMBER_OF_OPEN_SESSIONS_ERROR: *os << "GET_MAX_NUMBER_OF_OPEN_SESSIONS_ERROR"; break; case GET_NUMBER_OF_OPEN_SESSIONS_ERROR: *os << "GET_NUMBER_OF_OPEN_SESSIONS_ERROR"; break; case GET_OFFLINE_LICENSE_STATE_ERROR_1: *os << "GET_OFFLINE_LICENSE_STATE_ERROR_1"; break; case GET_OFFLINE_LICENSE_STATE_ERROR_2: *os << "GET_OFFLINE_LICENSE_STATE_ERROR_2"; break; case GET_PROVISIONING_METHOD_ERROR: *os << "GET_PROVISIONING_METHOD_ERROR"; break; case GET_RELEASED_LICENSE_ERROR: *os << "GET_RELEASED_LICENSE_ERROR"; break; case GET_SRM_VERSION_ERROR: *os << "GET_SRM_VERSION_ERROR"; break; case GET_TOKEN_FROM_KEYBOX_ERROR: *os << "GET_TOKEN_FROM_KEYBOX_ERROR"; break; case GET_TOKEN_FROM_OEM_CERT_ERROR: *os << "GET_TOKEN_FROM_OEM_CERT_ERROR"; break; case GET_USAGE_INFO_ERROR_1: *os << "GET_USAGE_INFO_ERROR_1"; break; case GET_USAGE_INFO_ERROR_2: *os << "GET_USAGE_INFO_ERROR_2"; break; case GET_USAGE_INFO_ERROR_3: *os << "GET_USAGE_INFO_ERROR_3"; break; case GET_USAGE_INFO_ERROR_4: *os << "GET_USAGE_INFO_ERROR_4"; break; case INCORRECT_CRYPTO_MODE: *os << "INCORRECT_CRYPTO_MODE"; break; case INCORRECT_USAGE_SUPPORT_TYPE_1: *os << "INCORRECT_USAGE_SUPPORT_TYPE_1"; break; case INCORRECT_USAGE_SUPPORT_TYPE_2: *os << "INCORRECT_USAGE_SUPPORT_TYPE_2"; break; case INIT_DATA_NOT_FOUND: *os << "INIT_DATA_NOT_FOUND"; break; case INSUFFICIENT_CRYPTO_RESOURCES: *os << "INSUFFICIENT_CRYPTO_RESOURCES"; break; case INSUFFICIENT_OUTPUT_PROTECTION: *os << "INSUFFICIENT_OUTPUT_PROTECTION"; break; case INVALID_DECRYPT_HASH_FORMAT: *os << "INVALID_DECRYPT_HASH_FORMAT"; break; case INVALID_DECRYPT_PARAMETERS_ENG_1: *os << "INVALID_DECRYPT_PARAMETERS_ENG_1"; break; case INVALID_DECRYPT_PARAMETERS_ENG_2: *os << "INVALID_DECRYPT_PARAMETERS_ENG_2"; break; case INVALID_DECRYPT_PARAMETERS_ENG_3: *os << "INVALID_DECRYPT_PARAMETERS_ENG_3"; break; case INVALID_DECRYPT_PARAMETERS_ENG_4: *os << "INVALID_DECRYPT_PARAMETERS_ENG_4"; break; case INVALID_DEVICE_CERTIFICATE_TYPE: *os << "INVALID_DEVICE_CERTIFICATE_TYPE"; break; case INVALID_IV_SIZE: *os << "INVALID_IV_SIZE"; break; case INVALID_KEY_SYSTEM: *os << "INVALID_KEY_SYSTEM"; break; case INVALID_LICENSE_REQUEST_TYPE_1: *os << "INVALID_LICENSE_REQUEST_TYPE_1"; break; case INVALID_LICENSE_REQUEST_TYPE_2: *os << "INVALID_LICENSE_REQUEST_TYPE_2"; break; case INVALID_LICENSE_RESPONSE: *os << "INVALID_LICENSE_RESPONSE"; break; case INVALID_LICENSE_TYPE: *os << "INVALID_LICENSE_TYPE"; break; case INVALID_LICENSE_TYPE_2: *os << "INVALID_LICENSE_TYPE_2"; break; case INVALID_PARAMETERS_ENG_5: *os << "INVALID_PARAMETERS_ENG_5"; break; case INVALID_PARAMETERS_ENG_13: *os << "INVALID_PARAMETERS_ENG_13"; break; case INVALID_PARAMETERS_ENG_14: *os << "INVALID_PARAMETERS_ENG_14"; break; case INVALID_PARAMETERS_ENG_15: *os << "INVALID_PARAMETERS_ENG_15"; break; case INVALID_PARAMETERS_ENG_16: *os << "INVALID_PARAMETERS_ENG_16"; break; case INVALID_PARAMETERS_ENG_22: *os << "INVALID_PARAMETERS_ENG_22"; break; case INVALID_PARAMETERS_ENG_23: *os << "INVALID_PARAMETERS_ENG_23"; break; case INVALID_PARAMETERS_ENG_24: *os << "INVALID_PARAMETERS_ENG_24"; break; case INVALID_PARAMETERS_LIC_1: *os << "INVALID_PARAMETERS_LIC_1"; break; case INVALID_PARAMETERS_LIC_2: *os << "INVALID_PARAMETERS_LIC_2"; break; case INVALID_PARAMETERS_LIC_3: *os << "INVALID_PARAMETERS_LIC_3"; break; case INVALID_PARAMETERS_LIC_4: *os << "INVALID_PARAMETERS_LIC_4"; break; case INVALID_PARAMETERS_LIC_6: *os << "INVALID_PARAMETERS_LIC_6"; break; case INVALID_PARAMETERS_LIC_7: *os << "INVALID_PARAMETERS_LIC_7"; break; case INVALID_PROVISIONING_PARAMETERS_1: *os << "INVALID_PROVISIONING_PARAMETERS_1"; break; case INVALID_PROVISIONING_PARAMETERS_2: *os << "INVALID_PROVISIONING_PARAMETERS_2"; break; case INVALID_PROVISIONING_REQUEST_PARAM_1: *os << "INVALID_PROVISIONING_REQUEST_PARAM_1"; break; case INVALID_PROVISIONING_REQUEST_PARAM_2: *os << "INVALID_PROVISIONING_REQUEST_PARAM_2"; break; case INVALID_QUERY_KEY: *os << "INVALID_QUERY_KEY"; break; case INVALID_SESSION_1: *os << "INVALID_SESSION_1"; break; case INVALID_SESSION_2: *os << "INVALID_SESSION_2"; break; case INVALID_SESSION_ID: *os << "INVALID_SESSION_ID"; break; case INVALID_SRM_LIST: *os << "INVALID_SRM_LIST"; break; case INVALID_USAGE_ENTRY_NUMBER_MODIFICATION: *os << "INVALID_USAGE_ENTRY_NUMBER_MODIFICATION"; break; case KEY_ADDED: *os << "KEY_ADDED"; break; case KEYBOX_TOKEN_TOO_SHORT: *os << "KEYBOX_TOKEN_TOO_SHORT"; break; case KEY_CANCELED: *os << "KEY_CANCELED"; break; case KEY_CONFLICT_1: *os << "KEY_CONFLICT_1"; break; case KEY_ERROR: *os << "KEY_ERROR"; break; case KEY_MESSAGE: *os << "KEY_MESSAGE"; break; case KEY_NOT_FOUND_1: *os << "KEY_NOT_FOUND_1"; break; case KEY_NOT_FOUND_2: *os << "KEY_NOT_FOUND_2"; break; case KEY_NOT_FOUND_3: *os << "KEY_NOT_FOUND_3"; break; case KEY_NOT_FOUND_4: *os << "KEY_NOT_FOUND_4"; break; case KEY_NOT_FOUND_5: *os << "KEY_NOT_FOUND_5"; break; case KEY_NOT_FOUND_6: *os << "KEY_NOT_FOUND_6"; break; case KEY_NOT_FOUND_IN_SESSION: *os << "KEY_NOT_FOUND_IN_SESSION"; break; case KEY_PROHIBITED_FOR_SECURITY_LEVEL: *os << "KEY_PROHIBITED_FOR_SECURITY_LEVEL"; break; case KEY_REQUEST_ERROR_1: *os << "KEY_REQUEST_ERROR_1"; break; case KEYSET_ID_NOT_FOUND_1: *os << "KEYSET_ID_NOT_FOUND_1"; break; case KEYSET_ID_NOT_FOUND_2: *os << "KEYSET_ID_NOT_FOUND_2"; break; case KEYSET_ID_NOT_FOUND_3: *os << "KEYSET_ID_NOT_FOUND_3"; break; case KEYSET_ID_NOT_FOUND_4: *os << "KEYSET_ID_NOT_FOUND_4"; break; case KEY_SIZE_ERROR_1: *os << "KEY_SIZE_ERROR_1"; break; case KEY_SIZE_ERROR_2: *os << "KEY_SIZE_ERROR_2"; break; case LICENSE_ID_NOT_FOUND: *os << "LICENSE_ID_NOT_FOUND"; break; case LICENSE_PARSER_INIT_ERROR: *os << "LICENSE_PARSER_INIT_ERROR"; break; case LICENSE_PARSER_NOT_INITIALIZED_1: *os << "LICENSE_PARSER_NOT_INITIALIZED_1"; break; case LICENSE_PARSER_NOT_INITIALIZED_2: *os << "LICENSE_PARSER_NOT_INITIALIZED_2"; break; case LICENSE_PARSER_NOT_INITIALIZED_3: *os << "LICENSE_PARSER_NOT_INITIALIZED_3"; break; case LICENSE_PARSER_NOT_INITIALIZED_4: *os << "LICENSE_PARSER_NOT_INITIALIZED_4"; break; case LICENSE_RENEWAL_NONCE_GENERATION_ERROR: *os << "LICENSE_RENEWAL_NONCE_GENERATION_ERROR"; break; case LICENSE_RENEWAL_PROHIBITED: *os << "LICENSE_RENEWAL_PROHIBITED"; break; case LICENSE_REQUEST_NONCE_GENERATION_ERROR: *os << "LICENSE_REQUEST_NONCE_GENERATION_ERROR"; break; case LICENSE_RESPONSE_NOT_SIGNED: *os << "LICENSE_RESPONSE_NOT_SIGNED"; break; case LICENSE_RESPONSE_PARSE_ERROR_1: *os << "LICENSE_RESPONSE_PARSE_ERROR_1"; break; case LICENSE_RESPONSE_PARSE_ERROR_2: *os << "LICENSE_RESPONSE_PARSE_ERROR_2"; break; case LICENSE_RESPONSE_PARSE_ERROR_3: *os << "LICENSE_RESPONSE_PARSE_ERROR_3"; break; case LICENSE_RESPONSE_PARSE_ERROR_4: *os << "LICENSE_RESPONSE_PARSE_ERROR_4"; break; case LICENSE_RESPONSE_PARSE_ERROR_5: *os << "LICENSE_RESPONSE_PARSE_ERROR_5"; break; case LICENSE_USAGE_ENTRY_MISSING: *os << "LICENSE_USAGE_ENTRY_MISSING"; break; case LIST_LICENSE_ERROR_1: *os << "LIST_LICENSE_ERROR_1"; break; case LIST_LICENSE_ERROR_2: *os << "LIST_LICENSE_ERROR_2"; break; case LIST_USAGE_ERROR_1: *os << "LIST_USAGE_ERROR_1"; break; case LIST_USAGE_ERROR_2: *os << "LIST_USAGE_ERROR_2"; break; case LOAD_DEVICE_RSA_KEY_ERROR: *os << "LOAD_DEVICE_RSA_KEY_ERROR"; break; case LOAD_ENTITLED_CONTENT_KEYS_ERROR: *os << "LOAD_ENTITLED_CONTENT_KEYS_ERROR"; break; case LOAD_KEY_ERROR: *os << "LOAD_KEY_ERROR"; break; case LOAD_LICENSE_ERROR: *os << "LOAD_LICENSE_ERROR"; break; case LOAD_PROVISIONING_ERROR: *os << "LOAD_PROVISIONING_ERROR"; break; case LOAD_RENEWAL_ERROR: *os << "LOAD_RENEWAL_ERROR"; break; case LOAD_SRM_ERROR: *os << "LOAD_SRM_ERROR"; break; case LOAD_SYSTEM_ID_ERROR: *os << "LOAD_SYSTEM_ID_ERROR"; break; case LOAD_USAGE_ENTRY_GENERATION_SKEW: *os << "LOAD_USAGE_ENTRY_GENERATION_SKEW"; break; case LOAD_USAGE_ENTRY_INVALID_SESSION: *os << "LOAD_USAGE_ENTRY_INVALID_SESSION"; break; case LOAD_USAGE_ENTRY_SIGNATURE_FAILURE: *os << "LOAD_USAGE_ENTRY_SIGNATURE_FAILURE"; break; case LOAD_USAGE_ENTRY_UNKNOWN_ERROR: *os << "LOAD_USAGE_ENTRY_UNKNOWN_ERROR"; break; case LOAD_USAGE_HEADER_BAD_MAGIC: *os << "LOAD_USAGE_HEADER_BAD_MAGIC"; break; case LOAD_USAGE_HEADER_GENERATION_SKEW: *os << "LOAD_USAGE_HEADER_GENERATION_SKEW"; break; case LOAD_USAGE_HEADER_SIGNATURE_FAILURE: *os << "LOAD_USAGE_HEADER_SIGNATURE_FAILURE"; break; case LOAD_USAGE_HEADER_UNKNOWN_ERROR: *os << "LOAD_USAGE_HEADER_UNKNOWN_ERROR"; break; case MOVE_USAGE_ENTRY_DESTINATION_IN_USE: *os << "MOVE_USAGE_ENTRY_DESTINATION_IN_USE"; break; case MOVE_USAGE_ENTRY_UNKNOWN_ERROR: *os << "MOVE_USAGE_ENTRY_UNKNOWN_ERROR"; break; case NEED_KEY: *os << "NEED_KEY"; break; case NEED_PROVISIONING: *os << "NEED_PROVISIONING"; break; case NO_CONTENT_KEY: *os << "NO_CONTENT_KEY"; break; case NO_CONTENT_KEY_2: *os << "NO_CONTENT_KEY_2"; break; case NO_CONTENT_KEY_3: *os << "NO_CONTENT_KEY_3"; break; case NO_DEVICE_KEY_1: *os << "NO_DEVICE_KEY_1"; break; case NO_MATCHING_ENTITLEMENT_KEY: *os << "NO_MATCHING_ENTITLEMENT_KEY"; break; case NONCE_GENERATION_ERROR: *os << "NONCE_GENERATION_ERROR"; break; case NOT_AN_ENTITLEMENT_SESSION: *os << "NOT_AN_ENTITLEMENT_SESSION"; break; case NOT_IMPLEMENTED_ERROR: *os << "NOT_IMPLEMENTED_ERROR"; break; case NOT_INITIALIZED_ERROR: *os << "NOT_INITIALIZED_ERROR"; break; case NO_USAGE_ENTRIES: *os << "NO_USAGE_ENTRIES"; break; case OPEN_CRYPTO_SESSION_ERROR: *os << "OPEN_CRYPTO_SESSION_ERROR"; break; case OUTPUT_TOO_LARGE_ERROR: *os << "OUTPUT_TOO_LARGE_ERROR"; break; case PARAMETER_NULL: *os << "PARAMETER_NULL"; break; case PARSE_REQUEST_ERROR_1: *os << "PARSE_REQUEST_ERROR_1"; break; case PARSE_REQUEST_ERROR_2: *os << "PARSE_REQUEST_ERROR_2"; break; case PARSE_RESPONSE_ERROR_1: *os << "PARSE_RESPONSE_ERROR_1"; break; case PARSE_RESPONSE_ERROR_2: *os << "PARSE_RESPONSE_ERROR_2"; break; case PARSE_RESPONSE_ERROR_3: *os << "PARSE_RESPONSE_ERROR_3"; break; case PARSE_RESPONSE_ERROR_4: *os << "PARSE_RESPONSE_ERROR_4"; break; case PARSE_SERVICE_CERTIFICATE_ERROR: *os << "PARSE_SERVICE_CERTIFICATE_ERROR"; break; case PREPARE_CENC_CONTENT_ID_FAILED: *os << "PREPARE_CENC_CONTENT_ID_FAILED"; break; case PREPARE_WEBM_CONTENT_ID_FAILED: *os << "PREPARE_WEBM_CONTENT_ID_FAILED"; break; case PRIVACY_MODE_ERROR_1: *os << "PRIVACY_MODE_ERROR_1"; break; case PRIVACY_MODE_ERROR_2: *os << "PRIVACY_MODE_ERROR_2"; break; case PRIVACY_MODE_ERROR_3: *os << "PRIVACY_MODE_ERROR_3"; break; case RANDOM_GENERATION_ERROR: *os << "RANDOM_GENERATION_ERROR"; break; case REFRESH_KEYS_ERROR: *os << "REFRESH_KEYS_ERROR"; break; case REINIT_ERROR: *os << "REINIT_ERROR"; break; case RELEASE_KEY_ERROR: *os << "RELEASE_KEY_ERROR"; break; case RELEASE_KEY_REQUEST_ERROR: *os << "RELEASE_KEY_REQUEST_ERROR"; break; case RELEASE_LICENSE_ERROR_1: *os << "RELEASE_LICENSE_ERROR_1"; break; case RELEASE_LICENSE_ERROR_2: *os << "RELEASE_LICENSE_ERROR_2"; break; case RELEASE_USAGE_INFO_ERROR: *os << "RELEASE_USAGE_INFO_ERROR"; break; case RELEASE_USAGE_INFO_FAILED: *os << "RELEASE_USAGE_INFO_FAILED"; break; case REMOVE_ALL_USAGE_INFO_ERROR_1: *os << "REMOVE_ALL_USAGE_INFO_ERROR_1"; break; case REMOVE_ALL_USAGE_INFO_ERROR_2: *os << "REMOVE_ALL_USAGE_INFO_ERROR_2"; break; case REMOVE_ALL_USAGE_INFO_ERROR_5: *os << "REMOVE_ALL_USAGE_INFO_ERROR_5"; break; case REMOVE_ALL_USAGE_INFO_ERROR_6: *os << "REMOVE_ALL_USAGE_INFO_ERROR_6"; break; case REMOVE_ALL_USAGE_INFO_ERROR_7: *os << "REMOVE_ALL_USAGE_INFO_ERROR_7"; break; case REMOVE_OFFLINE_LICENSE_ERROR_1: *os << "REMOVE_OFFLINE_LICENSE_ERROR_1"; break; case REMOVE_OFFLINE_LICENSE_ERROR_2: *os << "REMOVE_OFFLINE_LICENSE_ERROR_2"; break; case REMOVE_USAGE_INFO_ERROR_1: *os << "REMOVE_USAGE_INFO_ERROR_1"; break; case REMOVE_USAGE_INFO_ERROR_2: *os << "REMOVE_USAGE_INFO_ERROR_2"; break; case REMOVE_USAGE_INFO_ERROR_3: *os << "REMOVE_USAGE_INFO_ERROR_3"; break; case RENEW_KEY_ERROR_1: *os << "RENEW_KEY_ERROR_1"; break; case RENEW_KEY_ERROR_2: *os << "RENEW_KEY_ERROR_2"; break; case RESTORE_OFFLINE_LICENSE_ERROR_2: *os << "RESTORE_OFFLINE_LICENSE_ERROR_2"; break; case REWRAP_DEVICE_RSA_KEY_ERROR: *os << "REWRAP_DEVICE_RSA_KEY_ERROR"; break; case RSA_SIGNATURE_GENERATION_ERROR: *os << "RSA_SIGNATURE_GENERATION_ERROR"; break; case SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH: *os << "SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH"; break; case SERVICE_CERTIFICATE_PROVIDER_ID_EMPTY: *os << "SERVICE_CERTIFICATE_PROVIDER_ID_EMPTY"; break; case SESSION_FILE_HANDLE_INIT_ERROR: *os << "SESSION_FILE_HANDLE_INIT_ERROR"; break; case SESSION_KEYS_NOT_FOUND: *os << "SESSION_KEYS_NOT_FOUND"; break; case SESSION_KEYS_NOT_FOUND_2: *os << "SESSION_KEYS_NOT_FOUND_2"; break; case SESSION_LOST_STATE_ERROR: *os << "SESSION_LOST_STATE_ERROR"; break; case SESSION_NOT_FOUND_1: *os << "SESSION_NOT_FOUND_1"; break; case SESSION_NOT_FOUND_2: *os << "SESSION_NOT_FOUND_2"; break; case SESSION_NOT_FOUND_3: *os << "SESSION_NOT_FOUND_3"; break; case SESSION_NOT_FOUND_4: *os << "SESSION_NOT_FOUND_4"; break; case SESSION_NOT_FOUND_5: *os << "SESSION_NOT_FOUND_5"; break; case SESSION_NOT_FOUND_6: *os << "SESSION_NOT_FOUND_6"; break; case SESSION_NOT_FOUND_7: *os << "SESSION_NOT_FOUND_7"; break; case SESSION_NOT_FOUND_8: *os << "SESSION_NOT_FOUND_8"; break; case SESSION_NOT_FOUND_9: *os << "SESSION_NOT_FOUND_9"; break; case SESSION_NOT_FOUND_10: *os << "SESSION_NOT_FOUND_10"; break; case SESSION_NOT_FOUND_12: *os << "SESSION_NOT_FOUND_12"; break; case SESSION_NOT_FOUND_13: *os << "SESSION_NOT_FOUND_13"; break; case SESSION_NOT_FOUND_14: *os << "SESSION_NOT_FOUND_14"; break; case SESSION_NOT_FOUND_15: *os << "SESSION_NOT_FOUND_15"; break; case SESSION_NOT_FOUND_16: *os << "SESSION_NOT_FOUND_16"; break; case SESSION_NOT_FOUND_18: *os << "SESSION_NOT_FOUND_18"; break; case SESSION_NOT_FOUND_19: *os << "SESSION_NOT_FOUND_19"; break; case SESSION_NOT_FOUND_20: *os << "SESSION_NOT_FOUND_20"; break; case SESSION_NOT_FOUND_21: *os << "SESSION_NOT_FOUND_21"; break; case SESSION_NOT_FOUND_22: *os << "SESSION_NOT_FOUND_22"; break; case SESSION_NOT_FOUND_FOR_DECRYPT: *os << "SESSION_NOT_FOUND_FOR_DECRYPT"; break; case SET_DECRYPT_HASH_ERROR: *os << "SET_DECRYPT_HASH_ERROR"; break; case SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE: *os << "SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE"; break; case SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR: *os << "SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR"; break; case SIGNATURE_NOT_FOUND: *os << "SIGNATURE_NOT_FOUND"; break; case SIGNATURE_NOT_FOUND_2: *os << "SIGNATURE_NOT_FOUND_2"; break; case STORE_LICENSE_ERROR_1: *os << "STORE_LICENSE_ERROR_1"; break; case STORE_LICENSE_ERROR_2: *os << "STORE_LICENSE_ERROR_2"; break; case STORE_USAGE_INFO_ERROR: *os << "STORE_USAGE_INFO_ERROR"; break; case SYSTEM_INVALIDATED_ERROR: *os << "SYSTEM_INVALIDATED_ERROR"; break; case UNEXPECTED_EMPTY_USAGE_ENTRY: *os << "UNEXPECTED_EMPTY_USAGE_ENTRY"; break; case UNKNOWN_CLIENT_TOKEN_TYPE: *os << "UNKNOWN_CLIENT_TOKEN_TYPE"; break; case UNKNOWN_SELECT_KEY_ERROR_1: *os << "UNKNOWN_SELECT_KEY_ERROR_1"; break; case UNKNOWN_SELECT_KEY_ERROR_2: *os << "UNKNOWN_SELECT_KEY_ERROR_2"; break; case UNPROVISION_ERROR_1: *os << "UNPROVISION_ERROR_1"; break; case UNPROVISION_ERROR_2: *os << "UNPROVISION_ERROR_2"; break; case UNPROVISION_ERROR_3: *os << "UNPROVISION_ERROR_3"; break; case UNPROVISION_ERROR_4: *os << "UNPROVISION_ERROR_4"; break; case UNSUPPORTED_INIT_DATA: *os << "UNSUPPORTED_INIT_DATA"; break; case UNSUPPORTED_INIT_DATA_FORMAT: *os << "UNSUPPORTED_INIT_DATA_FORMAT"; break; case UPDATE_USAGE_ENTRY_UNKNOWN_ERROR: *os << "UPDATE_USAGE_ENTRY_UNKNOWN_ERROR"; break; case USAGE_ENTRY_NUMBER_MISMATCH: *os << "USAGE_ENTRY_NUMBER_MISMATCH"; break; case USAGE_GET_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE: *os << "USAGE_GET_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE"; break; case USAGE_GET_ENTRY_RETRIEVE_LICENSE_FAILED: *os << "USAGE_GET_ENTRY_RETRIEVE_LICENSE_FAILED"; break; case USAGE_GET_ENTRY_RETRIEVE_USAGE_INFO_FAILED: *os << "USAGE_GET_ENTRY_RETRIEVE_USAGE_INFO_FAILED"; break; case USAGE_INFO_NOT_FOUND: *os << "USAGE_INFO_NOT_FOUND"; break; case USAGE_INFORMATION_SUPPORT_FAILED: *os << "USAGE_INFORMATION_SUPPORT_FAILED"; break; case USAGE_INVALID_LOAD_ENTRY: *os << "USAGE_INVALID_LOAD_ENTRY"; break; case USAGE_INVALID_NEW_ENTRY: *os << "USAGE_INVALID_NEW_ENTRY"; break; case USAGE_INVALID_PARAMETERS_1: *os << "USAGE_INVALID_PARAMETERS_1"; break; case USAGE_INVALID_PARAMETERS_2: *os << "USAGE_INVALID_PARAMETERS_2"; break; case USAGE_STORE_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE: *os << "USAGE_STORE_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE"; break; case USAGE_STORE_ENTRY_RETRIEVE_LICENSE_FAILED: *os << "USAGE_STORE_ENTRY_RETRIEVE_LICENSE_FAILED"; break; case USAGE_STORE_ENTRY_RETRIEVE_USAGE_INFO_FAILED: *os << "USAGE_STORE_ENTRY_RETRIEVE_USAGE_INFO_FAILED"; break; case USAGE_STORE_LICENSE_FAILED: *os << "USAGE_STORE_LICENSE_FAILED"; break; case USAGE_STORE_USAGE_INFO_FAILED: *os << "USAGE_STORE_USAGE_INFO_FAILED"; break; case USAGE_SUPPORT_GET_API_FAILED: *os << "USAGE_SUPPORT_GET_API_FAILED"; break; case WEBM_INIT_DATA_UNAVAILABLE: *os << "WEBM_INIT_DATA_UNAVAILABLE"; break; case PROVISIONING_NOT_ALLOWED_FOR_ATSC: *os << "PROVISIONING_NOT_ALLOWED_FOR_ATSC"; break; default: *os << "Unknown CdmResponseType"; break; } } void PrintTo(const enum CdmLicenseType& value, ::std::ostream* os) { switch (value) { case kLicenseTypeOffline: *os << "kLicenseTypeOffline"; break; case kLicenseTypeStreaming: *os << "kLicenseTypeStreaming"; break; case kLicenseTypeRelease: *os << "kLicenseTypeRelease"; break; default: *os << "Unknown CdmLicenseType"; break; } } void PrintTo(const enum CdmSecurityLevel& value, ::std::ostream* os) { switch (value) { case kSecurityLevelUninitialized: *os << "kSecurityLevelUninitialized"; break; case kSecurityLevelL1: *os << "kSecurityLevelL1"; break; case kSecurityLevelL2: *os << "kSecurityLevelL2"; break; case kSecurityLevelL3: *os << "kSecurityLevelL3"; break; case kSecurityLevelUnknown: *os << "kSecurityLevelUnknown"; break; default: *os << "Unknown CdmSecurityLevel"; break; } } void PrintTo(const enum CdmCertificateType& value, ::std::ostream* os) { switch (value) { case kCertificateWidevine: *os << "kCertificateWidevine"; break; case kCertificateX509: *os << "kCertificateX509"; break; default: *os << "Unknown CdmCertificateType"; break; } } void PrintTo(const enum OEMCryptoResult& value, ::std::ostream* os) { switch (value) { case OEMCrypto_SUCCESS: *os << "SUCCESS"; break; case OEMCrypto_ERROR_INIT_FAILED: *os << "INIT_FAILED"; break; case OEMCrypto_ERROR_TERMINATE_FAILED: *os << "TERMINATE_FAILED"; break; case OEMCrypto_ERROR_OPEN_FAILURE: *os << "OPEN_FAILURE"; break; case OEMCrypto_ERROR_CLOSE_FAILURE: *os << "CLOSE_FAILURE"; break; case OEMCrypto_ERROR_ENTER_SECURE_PLAYBACK_FAILED: *os << "ENTER_SECURE_PLAYBACK_FAILED"; break; case OEMCrypto_ERROR_EXIT_SECURE_PLAYBACK_FAILED: *os << "EXIT_SECURE_PLAYBACK_FAILED"; break; case OEMCrypto_ERROR_SHORT_BUFFER: *os << "SHORT_BUFFER"; break; case OEMCrypto_ERROR_NO_DEVICE_KEY: *os << "NO_DEVICE_KEY"; break; case OEMCrypto_ERROR_NO_ASSET_KEY: *os << "NO_ASSET_KEY"; break; case OEMCrypto_ERROR_KEYBOX_INVALID: *os << "KEYBOX_INVALID"; break; case OEMCrypto_ERROR_NO_KEYDATA: *os << "NO_KEYDATA"; break; case OEMCrypto_ERROR_NO_CW: *os << "NO_CW"; break; case OEMCrypto_ERROR_DECRYPT_FAILED: *os << "DECRYPT_FAILED"; break; case OEMCrypto_ERROR_WRITE_KEYBOX: *os << "WRITE_KEYBOX"; break; case OEMCrypto_ERROR_WRAP_KEYBOX: *os << "WRAP_KEYBOX"; break; case OEMCrypto_ERROR_BAD_MAGIC: *os << "BAD_MAGIC"; break; case OEMCrypto_ERROR_BAD_CRC: *os << "BAD_CRC"; break; case OEMCrypto_ERROR_NO_DEVICEID: *os << "NO_DEVICEID"; break; case OEMCrypto_ERROR_RNG_FAILED: *os << "RNG_FAILED"; break; case OEMCrypto_ERROR_RNG_NOT_SUPPORTED: *os << "RNG_NOT_SUPPORTED"; break; case OEMCrypto_ERROR_SETUP: *os << "SETUP"; break; case OEMCrypto_ERROR_OPEN_SESSION_FAILED: *os << "OPEN_SESSION_FAILED"; break; case OEMCrypto_ERROR_CLOSE_SESSION_FAILED: *os << "CLOSE_SESSION_FAILED"; break; case OEMCrypto_ERROR_INVALID_SESSION: *os << "INVALID_SESSION"; break; case OEMCrypto_ERROR_NOT_IMPLEMENTED: *os << "NOT_IMPLEMENTED"; break; case OEMCrypto_ERROR_NO_CONTENT_KEY: *os << "NO_CONTENT_KEY"; break; case OEMCrypto_ERROR_CONTROL_INVALID: *os << "CONTROL_INVALID"; break; case OEMCrypto_ERROR_UNKNOWN_FAILURE: *os << "UNKNOWN_FAILURE"; break; case OEMCrypto_ERROR_INVALID_CONTEXT: *os << "INVALID_CONTEXT"; break; case OEMCrypto_ERROR_SIGNATURE_FAILURE: *os << "SIGNATURE_FAILURE"; break; case OEMCrypto_ERROR_TOO_MANY_SESSIONS: *os << "TOO_MANY_SESSIONS"; break; case OEMCrypto_ERROR_INVALID_NONCE: *os << "INVALID_NONCE"; break; case OEMCrypto_ERROR_TOO_MANY_KEYS: *os << "TOO_MANY_KEYS"; break; case OEMCrypto_ERROR_DEVICE_NOT_RSA_PROVISIONED: *os << "DEVICE_NOT_RSA_PROVISIONED"; break; case OEMCrypto_ERROR_INVALID_RSA_KEY: *os << "INVALID_RSA_KEY"; break; case OEMCrypto_ERROR_KEY_EXPIRED: *os << "KEY_EXPIRED"; break; case OEMCrypto_ERROR_INSUFFICIENT_RESOURCES: *os << "INSUFFICIENT_RESOURCES"; break; case OEMCrypto_ERROR_INSUFFICIENT_HDCP: *os << "INSUFFICIENT_HDCP"; break; case OEMCrypto_ERROR_BUFFER_TOO_LARGE: *os << "BUFFER_TOO_LARGE"; break; case OEMCrypto_WARNING_GENERATION_SKEW: *os << "OEMCrypto_WARNING_GENERATION_SKEW"; break; case OEMCrypto_ERROR_GENERATION_SKEW: *os << "GENERATION_SKEW"; break; case OEMCrypto_LOCAL_DISPLAY_ONLY: *os << "OEMCrypto_LOCAL_DISPLAY_ONLY"; break; case OEMCrypto_ERROR_ANALOG_OUTPUT: *os << "ANALOG_OUTPUT"; break; case OEMCrypto_ERROR_WRONG_PST: *os << "WRONG_PST"; break; case OEMCrypto_ERROR_WRONG_KEYS: *os << "WRONG_KEYS"; break; case OEMCrypto_ERROR_MISSING_MASTER: *os << "MISSING_MASTER"; break; case OEMCrypto_ERROR_LICENSE_INACTIVE: *os << "LICENSE_INACTIVE"; break; case OEMCrypto_ERROR_ENTRY_NEEDS_UPDATE: *os << "ENTRY_NEEDS_UPDATE"; break; case OEMCrypto_ERROR_ENTRY_IN_USE: *os << "ENTRY_IN_USE"; break; case OEMCrypto_ERROR_USAGE_TABLE_UNRECOVERABLE: *os << "USAGE_TABLE_UNRECOVERABLE"; break; case OEMCrypto_KEY_NOT_LOADED: *os << "OEMCrypto_KEY_NOT_LOADED"; break; case OEMCrypto_KEY_NOT_ENTITLED: *os << "OEMCrypto_KEY_NOT_ENTITLED"; break; case OEMCrypto_ERROR_BAD_HASH: *os << "BAD_HASH"; break; case OEMCrypto_ERROR_OUTPUT_TOO_LARGE: *os << "OUTPUT_TOO_LARGE"; break; case OEMCrypto_ERROR_SESSION_LOST_STATE: *os << "SESSION_LOST_STATE"; break; case OEMCrypto_ERROR_SYSTEM_INVALIDATED: *os << "SYSTEM_INVALIDATED"; break; case OEMCrypto_ERROR_LICENSE_RELOAD: *os << "LICENSE_RELOAD"; break; case OEMCrypto_ERROR_MULTIPLE_USAGE_ENTRIES: *os << "MULTIPLE_USAGE_ENTRIES"; break; case OEMCrypto_WARNING_MIXED_OUTPUT_PROTECTION: *os << "MIXED_OUTPUT_PROTECTION"; break; // ODK Values. case ODK_ERROR_CORE_MESSAGE: *os << "CORE_MESSAGE"; break; case ODK_SET_TIMER: *os << "SET_TIMER"; break; case ODK_DISABLE_TIMER: *os << "DISABLE_TIMER"; break; case ODK_TIMER_EXPIRED: *os << "TIMER_EXPIRED"; break; case ODK_UNSUPPORTED_API: *os << "UNSUPPORTED_API"; break; case ODK_STALE_RENEWAL: *os << "STALE_RENEWAL"; break; } } } // namespace wvcdm