Moved OEMCryptoResult string converter. am: de779e7545

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/22520102

Change-Id: Ic2cc0826602fdb1f53f2b8cf4185ecb3cd459048
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Alex Dale
2023-04-12 02:27:42 +00:00
committed by Automerger Merge Worker
8 changed files with 172 additions and 192 deletions

View File

@@ -195,7 +195,6 @@ cc_library_static {
"cdm/src/timer.cpp",
"cdm/util/src/cdm_random.cpp",
"cdm/util/src/clock.cpp",
"cdm/util/src/error_string_util.cpp",
"cdm/util/src/file_store.cpp",
"cdm/util/src/file_utils.cpp",
"cdm/util/src/log.cpp",

View File

@@ -944,6 +944,9 @@ const char* IdToString(const std::string& id);
// Some CDM API function allow for optional string parameters to be
// provided as string pointers.
const char* IdPtrToString(const std::string* id);
// Logging utilities for OEMCrypto types.
const char* OemCryptoResultToString(OEMCryptoResult result);
} // namespace wvcdm
#endif // WVCDM_CORE_WV_CDM_TYPES_H_

View File

@@ -42,9 +42,8 @@ bool CdmResponseType::operator==(const CdmResponseType& other) const {
std::string CdmResponseType::ToString() const {
std::string result = CdmResponseEnumToString(code_);
if (!HasOemcResult()) return result;
// TODO(sigquit): Consider using a string representation of OEMCryptoResult.
result.append(" (oemc_result = ");
result.append(std::to_string(oemc_result_));
result.append(OemCryptoResultToString(oemc_result_));
if (HasCryptoSessionMethod()) {
result.append(", method = ");
result.append(crypto_session_method_);
@@ -867,7 +866,7 @@ const char* CdmResponseEnumToString(CdmResponseEnum cdm_response_enum) {
case STORE_ATSC_LICENSE_ERROR:
return "STORE_ATSC_LICENSE_ERROR";
}
return UnknownEnumValueToString(cdm_response_enum);
return UnknownValueRep(cdm_response_enum);
}
const char* UnknownEnumValueToString(int value) {
@@ -884,4 +883,168 @@ const char* IdPtrToString(const std::string* id) {
if (id == nullptr) return kNullIdRep;
return id->empty() ? kEmptyIdRep : id->c_str();
}
const char* OemCryptoResultToString(OEMCryptoResult result) {
switch (result) {
/* OEMCrypto return values */
case OEMCrypto_SUCCESS:
return "SUCCESS";
case OEMCrypto_ERROR_INIT_FAILED:
return "ERROR_INIT_FAILED";
case OEMCrypto_ERROR_TERMINATE_FAILED:
return "ERROR_TERMINATE_FAILED";
case OEMCrypto_ERROR_OPEN_FAILURE:
return "ERROR_OPEN_FAILURE";
case OEMCrypto_ERROR_CLOSE_FAILURE:
return "ERROR_CLOSE_FAILURE";
case OEMCrypto_ERROR_ENTER_SECURE_PLAYBACK_FAILED:
return "ERROR_ENTER_SECURE_PLAYBACK_FAILED";
case OEMCrypto_ERROR_EXIT_SECURE_PLAYBACK_FAILED:
return "ERROR_EXIT_SECURE_PLAYBACK_FAILED";
case OEMCrypto_ERROR_SHORT_BUFFER:
return "ERROR_SHORT_BUFFER";
case OEMCrypto_ERROR_NO_DEVICE_KEY:
return "ERROR_NO_DEVICE_KEY";
case OEMCrypto_ERROR_NO_ASSET_KEY:
return "ERROR_NO_ASSET_KEY";
case OEMCrypto_ERROR_KEYBOX_INVALID:
return "ERROR_KEYBOX_INVALID";
case OEMCrypto_ERROR_NO_KEYDATA:
return "ERROR_NO_KEYDATA";
case OEMCrypto_ERROR_NO_CW:
return "ERROR_NO_CW";
case OEMCrypto_ERROR_DECRYPT_FAILED:
return "ERROR_DECRYPT_FAILED";
case OEMCrypto_ERROR_WRITE_KEYBOX:
return "ERROR_WRITE_KEYBOX";
case OEMCrypto_ERROR_WRAP_KEYBOX:
return "ERROR_WRAP_KEYBOX";
case OEMCrypto_ERROR_BAD_MAGIC:
return "ERROR_BAD_MAGIC";
case OEMCrypto_ERROR_BAD_CRC:
return "ERROR_BAD_CRC";
case OEMCrypto_ERROR_NO_DEVICEID:
return "ERROR_NO_DEVICEID";
case OEMCrypto_ERROR_RNG_FAILED:
return "ERROR_RNG_FAILED";
case OEMCrypto_ERROR_RNG_NOT_SUPPORTED:
return "ERROR_RNG_NOT_SUPPORTED";
case OEMCrypto_ERROR_SETUP:
return "ERROR_SETUP";
case OEMCrypto_ERROR_OPEN_SESSION_FAILED:
return "ERROR_OPEN_SESSION_FAILED";
case OEMCrypto_ERROR_CLOSE_SESSION_FAILED:
return "ERROR_CLOSE_SESSION_FAILED";
case OEMCrypto_ERROR_INVALID_SESSION:
return "ERROR_INVALID_SESSION";
case OEMCrypto_ERROR_NOT_IMPLEMENTED:
return "ERROR_NOT_IMPLEMENTED";
case OEMCrypto_ERROR_NO_CONTENT_KEY:
return "ERROR_NO_CONTENT_KEY";
case OEMCrypto_ERROR_CONTROL_INVALID:
return "ERROR_CONTROL_INVALID";
case OEMCrypto_ERROR_UNKNOWN_FAILURE:
return "ERROR_UNKNOWN_FAILURE";
case OEMCrypto_ERROR_INVALID_CONTEXT:
return "ERROR_INVALID_CONTEXT";
case OEMCrypto_ERROR_SIGNATURE_FAILURE:
return "ERROR_SIGNATURE_FAILURE";
case OEMCrypto_ERROR_TOO_MANY_SESSIONS:
return "ERROR_TOO_MANY_SESSIONS";
case OEMCrypto_ERROR_INVALID_NONCE:
return "ERROR_INVALID_NONCE";
case OEMCrypto_ERROR_TOO_MANY_KEYS:
return "ERROR_TOO_MANY_KEYS";
case OEMCrypto_ERROR_DEVICE_NOT_RSA_PROVISIONED:
return "ERROR_DEVICE_NOT_RSA_PROVISIONED";
case OEMCrypto_ERROR_INVALID_RSA_KEY:
return "ERROR_INVALID_RSA_KEY";
case OEMCrypto_ERROR_KEY_EXPIRED:
return "ERROR_KEY_EXPIRED";
case OEMCrypto_ERROR_INSUFFICIENT_RESOURCES:
return "ERROR_INSUFFICIENT_RESOURCES";
case OEMCrypto_ERROR_INSUFFICIENT_HDCP:
return "ERROR_INSUFFICIENT_HDCP";
case OEMCrypto_ERROR_BUFFER_TOO_LARGE:
return "ERROR_BUFFER_TOO_LARGE";
case OEMCrypto_WARNING_GENERATION_SKEW:
return "WARNING_GENERATION_SKEW";
case OEMCrypto_ERROR_GENERATION_SKEW:
return "ERROR_GENERATION_SKEW";
case OEMCrypto_LOCAL_DISPLAY_ONLY:
return "LOCAL_DISPLAY_ONLY";
case OEMCrypto_ERROR_ANALOG_OUTPUT:
return "ERROR_ANALOG_OUTPUT";
case OEMCrypto_ERROR_WRONG_PST:
return "ERROR_WRONG_PST";
case OEMCrypto_ERROR_WRONG_KEYS:
return "ERROR_WRONG_KEYS";
case OEMCrypto_ERROR_MISSING_MASTER:
return "ERROR_MISSING_MASTER";
case OEMCrypto_ERROR_LICENSE_INACTIVE:
return "ERROR_LICENSE_INACTIVE";
case OEMCrypto_ERROR_ENTRY_NEEDS_UPDATE:
return "ERROR_ENTRY_NEEDS_UPDATE";
case OEMCrypto_ERROR_ENTRY_IN_USE:
return "ERROR_ENTRY_IN_USE";
case OEMCrypto_ERROR_USAGE_TABLE_UNRECOVERABLE:
return "ERROR_USAGE_TABLE_UNRECOVERABLE";
case OEMCrypto_KEY_NOT_LOADED:
return "KEY_NOT_LOADED";
case OEMCrypto_KEY_NOT_ENTITLED:
return "KEY_NOT_ENTITLED";
case OEMCrypto_ERROR_BAD_HASH:
return "ERROR_BAD_HASH";
case OEMCrypto_ERROR_OUTPUT_TOO_LARGE:
return "ERROR_OUTPUT_TOO_LARGE";
case OEMCrypto_ERROR_SESSION_LOST_STATE:
return "ERROR_SESSION_LOST_STATE";
case OEMCrypto_ERROR_SYSTEM_INVALIDATED:
return "ERROR_SYSTEM_INVALIDATED";
case OEMCrypto_ERROR_LICENSE_RELOAD:
return "ERROR_LICENSE_RELOAD";
case OEMCrypto_ERROR_MULTIPLE_USAGE_ENTRIES:
return "ERROR_MULTIPLE_USAGE_ENTRIES";
case OEMCrypto_WARNING_MIXED_OUTPUT_PROTECTION:
return "WARNING_MIXED_OUTPUT_PROTECTION";
case OEMCrypto_ERROR_INVALID_ENTITLED_KEY_SESSION:
return "ERROR_INVALID_ENTITLED_KEY_SESSION";
case OEMCrypto_ERROR_NEEDS_KEYBOX_PROVISIONING:
return "ERROR_NEEDS_KEYBOX_PROVISIONING";
case OEMCrypto_ERROR_UNSUPPORTED_CIPHER:
return "ERROR_UNSUPPORTED_CIPHER";
case OEMCrypto_ERROR_DVR_FORBIDDEN:
return "ERROR_DVR_FORBIDDEN";
case OEMCrypto_ERROR_INSUFFICIENT_PRIVILEGE:
return "ERROR_INSUFFICIENT_PRIVILEGE";
case OEMCrypto_ERROR_INVALID_KEY:
return "ERROR_INVALID_KEY";
/* ODK return values */
case ODK_ERROR_CORE_MESSAGE:
return "ERROR_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 return values */
case OPK_ERROR_REMOTE_CALL:
return "ERROR_REMOTE_CALL";
case OPK_ERROR_INCOMPATIBLE_VERSION:
return "ERROR_INCOMPATIBLE_VERSION";
case OPK_ERROR_NO_PERSISTENT_DATA:
return "ERROR_NO_PERSISTENT_DATA";
case OPK_ERROR_PREHOOK_FAILURE:
return "ERROR_PREHOOK_FAILURE";
case OPK_ERROR_POSTHOOK_FAILURE:
return "ERROR_POSTHOOK_FAILURE";
}
return UnknownValueRep(result);
}
} // namespace wvcdm

View File

@@ -6,8 +6,6 @@
#include "test_printers.h"
#include "error_string_util.h"
namespace wvcdm {
void PrintTo(CdmResponseEnum value, ::std::ostream* os) {
*os << CdmResponseEnumToString(value);
@@ -72,7 +70,7 @@ void PrintTo(const enum CdmCertificateType& value, ::std::ostream* os) {
}
void PrintTo(const enum OEMCryptoResult& value, ::std::ostream* os) {
*os << wvutil::OEMCryptoResultToString(value);
*os << OemCryptoResultToString(value);
}
namespace okp {

View File

@@ -1,11 +0,0 @@
#ifndef ERROR_STRING_UTIL_H_
#define ERROR_STRING_UTIL_H_
#include <string>
namespace wvutil {
const std::string OEMCryptoResultToString(int oemcrypto_result);
} // namespace wvutil
#endif // ERROR_STRING_UTIL_H_

View File

@@ -1,171 +0,0 @@
// 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

View File

@@ -23,7 +23,6 @@
#include "WVUUID.h"
#include "android-base/properties.h"
#include "cutils/properties.h"
#include "error_string_util.h"
#include "wv_cdm_constants.h"
#include "wv_content_decryption_module.h"
#include "wv_metrics.h"

View File

@@ -14,7 +14,6 @@
#include <aidl/android/hardware/drm/Status.h>
#include "OEMCryptoCENC.h"
#include "error_string_util.h"
#include "wv_cdm_types.h"
using namespace drm_metrics;
@@ -202,7 +201,8 @@ string FormatAttributes(const string& indent, const Attributes& attributes) {
result.append("oemcrypto_result:\n");
string next_indent = indent + kIndentSpaces;
result.append(next_indent + "name: ");
result.append(::wvutil::OEMCryptoResultToString(attributes.oem_crypto_result()));
result.append(::wvcdm::OemCryptoResultToString(
static_cast<OEMCryptoResult>(attributes.oem_crypto_result())));
result.append("\n" + next_indent + "value: ");
result.append(to_string(attributes.oem_crypto_result()));
}