These are a set of CLs merged from the wv cdm repo to the android repo. * Correct error logging Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/40000 ] In tests, we set the cipher list to avoid using insecure ciphers when connecting to the provisioning/license service. The result of setting the cipher list was being incorrectly validated. Bug: 64847919 * Move mips cache headers to clear_cache_function.h Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/39700 ] Since the clear_cache function has been moved away from the dynamic adapter, we need these conditional includes to be migrated as well for MIPS. * Comment out Level 3 debug call until merge Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/39761 ] This call was introduced in go/wvgerrit/34260/. Since the haystack tool in google3 still needs this merge, this should be commented out so the tool can still build until the merge has finished. * Add logging for MAC keys to mock Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/39740 ] Bug: 70637842 * Move external interfaces into level3.h + refactor Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/39673 ] As part of b/70523618, this CL moves interfaces that partners are responsible for in Level 3 to level3.h so they can be visible as part of the CDM release process. It also cleans up some of the names of the files and adds documentation. * Corrected close session logging level Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/39676 ] Bug: 69460963 * Remove Security Level Path Backward Compatibility Support Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/39505 ] From the android K release onwards certificates were stored in security level specific directories. If upgrading from previous releases persistent information needed to be moved to those directories. Since no device is likely to upgrade from J to Pi, comptibility support can be removed. Bug: 70160032 * Rename privacy_crypto_openssl To privacy_crypto_boringssl Author: John W. Bruce <juce@google.com> [ Merge of http://go/wvgerrit/37122 ] Now that we no longer support OpenSSL in the Shared Source CDM, the name of this file can be updated. Bug: 67907873 Test: build.py x86-64 Test: wv_ce_cdm_unittest Test: jenkins/linux_unit_tests * Remove Conditional Compilation from OpenSSL/BoringSSL Author: John W. Bruce <juce@google.com> [ Merge of http://go/wvgerrit/39460 ] This change removes the usages of conditional compilation to support both BoringSSL and OpenSSL, as well as to support multiple versions of the OpenSSL API. All code is now compiled against one of the two versions of BoringSSL in third_party/. Note that in some cases, the kit/ and legacy_kit/ versions of BoringSSL had different APIs, so when removing the OpenSSL version compatibility conditional compilation, sometimes the older branch was kept and sometimes the newer branch was kept. Bug: 67907873 Test: build.py x86-64 Test: wv_ce_cdm_unittest Test: jenkins/linux_unit_tests * Build CE & Jenkins CDMs With BoringSSL from third_party/ Author: John W. Bruce <juce@google.com> [ Merge of http://go/wvgerrit/37120 ] Up until now, integrators have been responsible for providing a compatible crypto library for use by the CE CDM. (either OpenSSL or BoringSSL) After this change, this decision will no longer be in their hands. The CE CDM build will always use the copy of BoringSSL in third_party/, which will be statically linked with our library with hidden visibility. This allows us to better control what crypto library we use and will prevent continuing problems with trying to support both OpenSSL and BoringSSL. Unfortunately, BoringSSL began using C++11 in mid-2017, and we can't support C++11 right now. Until we can, we need to use a C++11-free version of BoringSSL for libssl. The CDM itself will continue to use a recent BoringSSL, as it only needs libcrypto. But the unit tests that need libssl have to use the legacy version. Bug: 67907873 Test: build.py x86-64 Test: wv_ce_cdm_unittest Test: jenkins/linux_unit_tests * Modified RNG for Level3 to use more entropy Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/39220 ] Bug: 65165076 Modified seed generation to use an xor of clock_gettime and client-implemented code to supply random seeds to the RNG. Modified the RNG as well to use xoroshiro128+ instead of xorshift, since it uses more than one seed/state (which are 64-bit) and has higher "statistical quality". The default implementations for the seed generation use /dev/urandom. * Configure base path for Level3FileSystem Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/39506 ] This is in response to b/70354006. This change makes the Android Level3FileSystem use the existing properties method GetDevicesFilesBasePath for binderization. The same is done for the Linux implementation. * Add legacy_kit/ to BoringSSL Directory Author: John W. Bruce <juce@google.com> [ Merge of http://go/wvgerrit/38861 ] This adds a second copy of BoringSSL to the third_party/boringssl/ directory. This second copy is pinned to the last revision of BoringSSL not to require C++11 and is not updated by the UPDATE_BORINGSSL.sh script. This second copy will be used to provide libssl to the tests on devices that do not support C++11. Once we support C++11 in the CDM again, this weight should be removed and all targets should use the copy of BoringSSL in the kit/ directory. Bug: 67907873 * Use Shared Libraries for Unit Tests Author: John W. Bruce <juce@google.com> [ Merge of http://go/wvgerrit/38860 ] Some unit tests were using a statically-linked CDM instead of a dynamically-linked one. (Or, in one case, trying to link both ways into the same binary.) For now, we need to only link dynamically, so that the unit tests and the CDM can use different versions of BoringSSL. Long-term, we would like to test both kinds of linkage. (See b/69548115 for that.) Some unit tests were also using a dynamicaly-linked CDM that was named such that it appeared to be statically-linked. This patch renames some targets to make the linkage clearer. Bug: 67907873 * Change CDM_Backwards_Compatiblity_Tests to dedicated brances Author: Fred Gylys-Colwell <fredgc@google.com> [ Merge of http://go/wvgerrit/39003 ] The build scripts used by CDM_Backwards_Compatiblity_Tests now pull old versions of oemcrypto from the dedicated branches oemcrypto-v*, which [will eventually] contain old oemcrypto versions, that build with the current build system with a current boringssl version. bug: 67907873 * Fix spacing on level3 header Author: Srujan Gaddam <srujzs@google.com> [ Merge of http://go/wvgerrit/38760 ] * Correct Query status calls Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/38640 ] Bug: 70160032 * Refactoring to allow encryption of client ID Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/37460 ] The code has been restructured to allow encryption of client identification in provisioning requests. This will be enabled when server side changes have been made (b/69427217). * Additional information is included in the Client Identification portion of the provisioning request. * Client identification will be encrypted with a service certificate provided by the app/client. Platform changes to enable passing this to core are needed. If a service certificate is not provided, a default one associated with the production Keysmith will be used. * Switched APIs in CdmEngine to take a service certificate for provisioning rather than licensing. Service certificates for licensing are session based and passed as properties from platform code. Bug: 30737060 * Allow some CDM errors to be reported from multiple locations Author: Rahul Frias <rfrias@google.com> [ Merge of http://go/wvgerrit/38360 ] This creates some CdmResponseType errors which may be reused PARAMETER_NULL, NOT_INITIALIZED_ERROR, REINIT_ERROR. I have made changes to a few classes to report these errors. Will work on additional classes in a separate CL. Bug: 69864404 BUG: 71650075 Test: WV Unit/integration tests Change-Id: Icc048770d424ac537d11ff327cda2cb142da802d
622 lines
24 KiB
C++
622 lines
24 KiB
C++
// Copyright 2013 Google Inc. All Rights Reserved.
|
|
// 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;
|
|
case KEY_ADDED: *os << "KEY_ADDED";
|
|
break;
|
|
case KEY_ERROR: *os << "KEY_ERROR";
|
|
break;
|
|
case KEY_MESSAGE: *os << "KEY_MESSAGE";
|
|
break;
|
|
case NEED_KEY: *os << "NEED_KEY";
|
|
break;
|
|
case KEY_CANCELED: *os << "KEY_CANCELED";
|
|
break;
|
|
case NEED_PROVISIONING: *os << "NEED_PROVISIONING";
|
|
break;
|
|
case DEVICE_REVOKED: *os << "DEVICE_REVOKED";
|
|
break;
|
|
case INSUFFICIENT_CRYPTO_RESOURCES: *os << "INSUFFICIENT_CRYPTO_RESOURCES";
|
|
break;
|
|
case ADD_KEY_ERROR: *os << "ADD_KEY_ERROR";
|
|
break;
|
|
case CERT_PROVISIONING_GET_KEYBOX_ERROR_1:
|
|
*os << "CERT_PROVISIONING_GET_KEYBOX_ERROR_1";
|
|
break;
|
|
case CERT_PROVISIONING_GET_KEYBOX_ERROR_2:
|
|
*os << "CERT_PROVISIONING_GET_KEYBOX_ERROR_2";
|
|
break;
|
|
case CERT_PROVISIONING_INVALID_CERT_TYPE:
|
|
*os << "CERT_PROVISIONING_INVALID_CERT_TYPE";
|
|
break;
|
|
case CERT_PROVISIONING_REQUEST_ERROR_1:
|
|
*os << "CERT_PROVISIONING_REQUEST_ERROR_1";
|
|
break;
|
|
case CERT_PROVISIONING_NONCE_GENERATION_ERROR:
|
|
*os << "CERT_PROVISIONING_NONCE_GENERATION_ERROR";
|
|
break;
|
|
case CERT_PROVISIONING_REQUEST_ERROR_3:
|
|
*os << "CERT_PROVISIONING_REQUEST_ERROR_3";
|
|
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_5:
|
|
*os << "CERT_PROVISIONING_RESPONSE_ERROR_5";
|
|
break;
|
|
case CERT_PROVISIONING_RESPONSE_ERROR_6:
|
|
*os << "CERT_PROVISIONING_RESPONSE_ERROR_6";
|
|
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 DECRYPT_NOT_READY: *os << "DECRYPT_NOT_READY";
|
|
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 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_RESPONSE_1: *os << "EMPTY_LICENSE_RESPONSE_1";
|
|
break;
|
|
case EMPTY_LICENSE_RESPONSE_2: *os << "EMPTY_LICENSE_RESPONSE_2";
|
|
break;
|
|
case EMPTY_PROVISIONING_CERTIFICATE_1:
|
|
*os << "EMPTY_PROVISIONING_CERTIFICATE_1";
|
|
break;
|
|
case EMPTY_PROVISIONING_RESPONSE: *os << "EMPTY_PROVISIONING_RESPONSE";
|
|
break;
|
|
case EMPTY_SESSION_ID: *os << "EMPTY_SESSION_ID";
|
|
break;
|
|
case GENERATE_DERIVED_KEYS_ERROR: *os << "GENERATE_DERIVED_KEYS_ERROR";
|
|
break;
|
|
case LICENSE_RENEWAL_NONCE_GENERATION_ERROR:
|
|
*os << "LICENSE_RENEWAL_NONCE_GENERATION_ERROR";
|
|
break;
|
|
case GENERATE_USAGE_REPORT_ERROR: *os << "GENERATE_USAGE_REPORT_ERROR";
|
|
break;
|
|
case GET_LICENSE_ERROR: *os << "GET_LICENSE_ERROR";
|
|
break;
|
|
case GET_RELEASED_LICENSE_ERROR: *os << "GET_RELEASED_LICENSE_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 INIT_DATA_NOT_FOUND: *os << "INIT_DATA_NOT_FOUND";
|
|
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_KEY_SYSTEM: *os << "INVALID_KEY_SYSTEM";
|
|
break;
|
|
case INVALID_LICENSE_RESPONSE: *os << "INVALID_LICENSE_RESPONSE";
|
|
break;
|
|
case INVALID_LICENSE_TYPE: *os << "INVALID_LICENSE_TYPE";
|
|
break;
|
|
case PARAMETER_NULL: *os << "PARAMETER_NULL";
|
|
break;
|
|
case NOT_INITIALIZED_ERROR: *os << "NOT_INITIALIZED_ERROR";
|
|
break;
|
|
case REINIT_ERROR: *os << "REINIT_ERROR";
|
|
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_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_ID: *os << "INVALID_SESSION_ID";
|
|
break;
|
|
case KEY_REQUEST_ERROR_1: *os << "KEY_REQUEST_ERROR_1";
|
|
break;
|
|
case KEY_SIZE_ERROR: *os << "KEY_SIZE_ERROR";
|
|
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 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_RESPONSE_NOT_SIGNED: *os << "LICENSE_RESPONSE_NOT_SIGNED";
|
|
break;
|
|
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 LOAD_KEY_ERROR: *os << "LOAD_KEY_ERROR";
|
|
break;
|
|
case NO_CONTENT_KEY: *os << "NO_CONTENT_KEY";
|
|
break;
|
|
case REFRESH_KEYS_ERROR: *os << "REFRESH_KEYS_ERROR";
|
|
break;
|
|
case RELEASE_ALL_USAGE_INFO_ERROR_1:
|
|
*os << "RELEASE_ALL_USAGE_INFO_ERROR_1";
|
|
break;
|
|
case RELEASE_ALL_USAGE_INFO_ERROR_2:
|
|
*os << "RELEASE_ALL_USAGE_INFO_ERROR_2";
|
|
break;
|
|
case RELEASE_ALL_USAGE_INFO_ERROR_4:
|
|
*os << "RELEASE_ALL_USAGE_INFO_ERROR_4";
|
|
break;
|
|
case RELEASE_ALL_USAGE_INFO_ERROR_5:
|
|
*os << "RELEASE_ALL_USAGE_INFO_ERROR_5";
|
|
break;
|
|
case RELEASE_ALL_USAGE_INFO_ERROR_6:
|
|
*os << "RELEASE_ALL_USAGE_INFO_ERROR_6";
|
|
break;
|
|
case RELEASE_ALL_USAGE_INFO_ERROR_7:
|
|
*os << "RELEASE_ALL_USAGE_INFO_ERROR_7";
|
|
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 RENEW_KEY_ERROR_1: *os << "RENEW_KEY_ERROR_1";
|
|
break;
|
|
case RENEW_KEY_ERROR_2: *os << "RENEW_KEY_ERROR_2";
|
|
break;
|
|
case LICENSE_RENEWAL_SIGNING_ERROR: *os << "LICENSE_RENEWAL_SIGNING_ERROR";
|
|
break;
|
|
case RESTORE_OFFLINE_LICENSE_ERROR_2:
|
|
*os << "RESTORE_OFFLINE_LICENSE_ERROR_2";
|
|
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_FOR_DECRYPT: *os << "SESSION_NOT_FOUND_FOR_DECRYPT";
|
|
break;
|
|
case SESSION_KEYS_NOT_FOUND: *os << "SESSION_KEYS_NOT_FOUND";
|
|
break;
|
|
case SIGNATURE_NOT_FOUND: *os << "SIGNATURE_NOT_FOUND";
|
|
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 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 USAGE_INFO_NOT_FOUND: *os << "USAGE_INFO_NOT_FOUND";
|
|
break;
|
|
case EMPTY_PROVISIONING_CERTIFICATE_2:
|
|
*os << "EMPTY_PROVISIONING_CERTIFICATE_2";
|
|
break;
|
|
case PARSE_SERVICE_CERTIFICATE_ERROR:
|
|
*os << "PARSE_SERVICE_CERTIFICATE_ERROR";
|
|
break;
|
|
case CLIENT_ID_GENERATE_RANDOM_ERROR:
|
|
*os << "CLIENT_ID_GENERATE_RANDOM_ERROR";
|
|
break;
|
|
case CLIENT_ID_AES_INIT_ERROR: *os << "CLIENT_ID_AES_INIT_ERROR";
|
|
break;
|
|
case CLIENT_ID_AES_ENCRYPT_ERROR: *os << "CLIENT_ID_AES_ENCRYPT_ERROR";
|
|
break;
|
|
case CLIENT_ID_RSA_INIT_ERROR: *os << "CLIENT_ID_RSA_INIT_ERROR";
|
|
break;
|
|
case CLIENT_ID_RSA_ENCRYPT_ERROR: *os << "CLIENT_ID_RSA_ENCRYPT_ERROR";
|
|
break;
|
|
case INVALID_QUERY_STATUS: *os << "INVALID_QUERY_STATUS";
|
|
break;
|
|
case LICENSE_PARSER_NOT_INITIALIZED_4:
|
|
*os << "LICENSE_PARSER_NOT_INITIALIZED_4";
|
|
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 CENC_INIT_DATA_UNAVAILABLE: *os << "CENC_INIT_DATA_UNAVAILABLE";
|
|
break;
|
|
case PREPARE_CENC_CONTENT_ID_FAILED:
|
|
*os << "PREPARE_CENC_CONTENT_ID_FAILED";
|
|
break;
|
|
case WEBM_INIT_DATA_UNAVAILABLE: *os << "WEBM_INIT_DATA_UNAVAILABLE";
|
|
break;
|
|
case PREPARE_WEBM_CONTENT_ID_FAILED:
|
|
*os << "PREPARE_WEBM_CONTENT_ID_FAILED";
|
|
break;
|
|
case UNSUPPORTED_INIT_DATA_FORMAT: *os << "UNSUPPORTED_INIT_DATA_FORMAT";
|
|
break;
|
|
case LICENSE_REQUEST_NONCE_GENERATION_ERROR:
|
|
*os << "LICENSE_REQUEST_NONCE_GENERATION_ERROR";
|
|
break;
|
|
case LICENSE_REQUEST_SIGNING_ERROR: *os << "LICENSE_REQUEST_SIGNING_ERROR";
|
|
break;
|
|
case EMPTY_LICENSE_REQUEST: *os << "EMPTY_LICENSE_REQUEST";
|
|
break;
|
|
case DUPLICATE_SESSION_ID_SPECIFIED:
|
|
*os << "DUPLICATE_SESSION_ID_SPECIFIED";
|
|
break;
|
|
case LICENSE_RENEWAL_PROHIBITED: *os << "LICENSE_RENEWAL_PROHIBITED";
|
|
break;
|
|
case SESSION_FILE_HANDLE_INIT_ERROR:
|
|
*os << "SESSION_FILE_HANDLE_INIT_ERROR";
|
|
break;
|
|
case INCORRECT_CRYPTO_MODE: *os << "INCORRECT_CRYPTO_MODE";
|
|
break;
|
|
case INVALID_PARAMETERS_ENG_5: *os << "INVALID_PARAMETERS_ENG_5";
|
|
break;
|
|
case DECRYPT_ERROR: *os << "DECRYPT_ERROR";
|
|
break;
|
|
case INSUFFICIENT_OUTPUT_PROTECTION:
|
|
*os << "INSUFFICIENT_OUTPUT_PROTECTION";
|
|
break;
|
|
case SESSION_NOT_FOUND_12: *os << "SESSION_NOT_FOUND_12";
|
|
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_CONFLICT_1: *os << "KEY_CONFLICT_1";
|
|
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 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 INVALID_SESSION_1: *os << "INVALID_SESSION_1";
|
|
break;
|
|
case NO_DEVICE_KEY_1: *os << "NO_DEVICE_KEY_1";
|
|
break;
|
|
case NO_CONTENT_KEY_2: *os << "NO_CONTENT_KEY_2";
|
|
break;
|
|
case INSUFFICIENT_CRYPTO_RESOURCES_2:
|
|
*os << "INSUFFICIENT_CRYPTO_RESOURCES_2";
|
|
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_17: *os << "INVALID_PARAMETERS_ENG_17";
|
|
break;
|
|
case INVALID_PARAMETERS_ENG_18: *os << "INVALID_PARAMETERS_ENG_18";
|
|
break;
|
|
case INVALID_PARAMETERS_ENG_19: *os << "INVALID_PARAMETERS_ENG_19";
|
|
break;
|
|
case CLIENT_IDENTIFICATION_TOKEN_ERROR_1:
|
|
*os << "CLIENT_IDENTIFICATION_TOKEN_ERROR_1";
|
|
break;
|
|
case CLIENT_IDENTIFICATION_TOKEN_ERROR_2:
|
|
*os << "CLIENT_IDENTIFICATION_TOKEN_ERROR_2";
|
|
break;
|
|
case ANALOG_OUTPUT_ERROR: *os << "ANALOG_OUTPUT_ERROR";
|
|
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 CREATE_USAGE_TABLE_ERROR: *os << "CREATE_USAGE_TABLE_ERROR";
|
|
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_BAD_MAGIC: *os << "LOAD_USAGE_HEADER_BAD_MAGIC";
|
|
break;
|
|
case LOAD_USAGE_HEADER_UNKNOWN_ERROR:
|
|
*os << "LOAD_USAGE_HEADER_UNKNOWN_ERROR";
|
|
break;
|
|
case INSUFFICIENT_CRYPTO_RESOURCES_3:
|
|
*os << "INSUFFICIENT_CRYPTO_RESOURCES_3";
|
|
break;
|
|
case CREATE_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
*os << "CREATE_USAGE_ENTRY_UNKNOWN_ERROR";
|
|
break;
|
|
case LOAD_USAGE_ENTRY_GENERATION_SKEW:
|
|
*os << "LOAD_USAGE_ENTRY_GENERATION_SKEW";
|
|
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 INVALID_PARAMETERS_ENG_20: *os << "INVALID_PARAMETERS_ENG_20";
|
|
break;
|
|
case UPDATE_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
*os << "UPDATE_USAGE_ENTRY_UNKNOWN_ERROR";
|
|
break;
|
|
case INVALID_PARAMETERS_ENG_21: *os << "INVALID_PARAMETERS_ENG_21";
|
|
break;
|
|
case INVALID_PARAMETERS_ENG_22: *os << "INVALID_PARAMETERS_ENG_22";
|
|
break;
|
|
case SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR:
|
|
*os << "SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR";
|
|
break;
|
|
case MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
*os << "MOVE_USAGE_ENTRY_UNKNOWN_ERROR";
|
|
break;
|
|
case COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR:
|
|
*os << "COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR";
|
|
break;
|
|
case INVALID_PARAMETERS_ENG_23: *os << "INVALID_PARAMETERS_ENG_23";
|
|
break;
|
|
case INVALID_PARAMETERS_ENG_24: *os << "INVALID_PARAMETERS_ENG_24";
|
|
break;
|
|
case USAGE_INFORMATION_SUPPORT_FAILED:
|
|
*os << "USAGE_INFORMATION_SUPPORT_FAILED";
|
|
break;
|
|
case USAGE_SUPPORT_GET_API_FAILED:
|
|
*os << "USAGE_SUPPORT_GET_API_FAILED";
|
|
break;
|
|
case UNEXPECTED_EMPTY_USAGE_ENTRY:
|
|
*os << "UNEXPECTED_EMPTY_USAGE_ENTRY";
|
|
break;
|
|
case INVALID_USAGE_ENTRY_NUMBER_MODIFICATION:
|
|
*os << "INVALID_USAGE_ENTRY_NUMBER_MODIFICATION";
|
|
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_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_GET_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
|
|
*os << "USAGE_GET_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE";
|
|
break;
|
|
case USAGE_ENTRY_NUMBER_MISMATCH: *os << "USAGE_ENTRY_NUMBER_MISMATCH";
|
|
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_INVALID_LOAD_ENTRY: *os << "USAGE_INVALID_LOAD_ENTRY";
|
|
break;
|
|
case RELEASE_USAGE_INFO_FAILED: *os << "RELEASE_USAGE_INFO_FAILED";
|
|
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 KEY_PROHIBITED_FOR_SECURITY_LEVEL:
|
|
*os << "KEY_PROHIBITED_FOR_SECURITY_LEVEL";
|
|
break;
|
|
case KEY_NOT_FOUND_IN_SESSION:
|
|
*os << "KEY_NOT_FOUND_IN_SESSION";
|
|
break;
|
|
case NO_USAGE_ENTRIES: *os << "NO_USAGE_ENTRIES";
|
|
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 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 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 EMPTY_RESPONSE_ERROR_1: *os << "EMPTY_RESPONSE_ERROR_1";
|
|
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 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_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE:
|
|
*os << "USAGE_STORE_ENTRY_RETRIEVE_INVALID_STORAGE_TYPE";
|
|
break;
|
|
case LICENSE_REQUEST_INVALID_SUBLICENSE:
|
|
*os << "LICENSE_REQUEST_INVALID_SUBLICENSE";
|
|
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;
|
|
}
|
|
};
|
|
|
|
} // namespace wvcdm
|