Add recoverable errors
[ Merge of http://go/wvgerrit/71326 ] Nonce flood, frame size, session and system invalidation errors will now bubble up to the app. OEMCrypto v15 returns OEMCrypto_ERROR_BUFFER_TOO_LARGE, OEMCrypto_ERROR_SESSION_LOST_STATE, OEMCrypto_ERROR_SYSTEM_INVALIDATED and a variety of nonce errors. These will be reported to HIDL as OUTPUT_TOO_LARGE_ERROR, ERROR_DRM_SESSION_LOST_STATE, ERROR_DRM_INVALID_STATE and ERROR_DRM_RESOURCE_CONTENTION. Bug: 120572706 Test: Unit/Integration tests Change-Id: Ida177300046327ce81592a273028ef6c3a0d9fd9
This commit is contained in:
@@ -145,11 +145,12 @@ class CryptoMetrics {
|
||||
EventMetric<kErrorCodeFieldNumber, CdmResponseType, kLengthFieldNumber,
|
||||
Pow2Bucket, kSigningAlgorithmFieldNumber, CdmSigningAlgorithm>
|
||||
crypto_session_generic_verify_;
|
||||
CounterMetric<kErrorCodeBoolFieldNumber, bool>
|
||||
CounterMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
crypto_session_get_device_unique_id_;
|
||||
CounterMetric<kErrorCodeBoolFieldNumber, bool> crypto_session_get_token_;
|
||||
CounterMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
crypto_session_get_token_;
|
||||
ValueMetric<double> crypto_session_life_span_;
|
||||
EventMetric<kErrorCodeBoolFieldNumber, bool>
|
||||
EventMetric<kErrorCodeFieldNumber, CdmResponseType>
|
||||
crypto_session_load_certificate_private_key_;
|
||||
// This uses the requested security level.
|
||||
EventMetric<kErrorCodeFieldNumber, CdmResponseType, kSecurityLevelFieldNumber,
|
||||
|
||||
@@ -97,7 +97,7 @@ TEST_F(EngineMetricsTest, EngineAndCryptoMetrics) {
|
||||
engine_metrics.cdm_engine_close_session_.Increment(UNKNOWN_ERROR);
|
||||
CryptoMetrics* crypto_metrics = engine_metrics.GetCryptoMetrics();
|
||||
|
||||
crypto_metrics->crypto_session_get_device_unique_id_.Increment(true);
|
||||
crypto_metrics->crypto_session_get_device_unique_id_.Increment(NO_ERROR);
|
||||
crypto_metrics->crypto_session_generic_decrypt_
|
||||
.Record(2.0, NO_ERROR, Pow2Bucket(1025), kEncryptionAlgorithmAesCbc128);
|
||||
|
||||
@@ -123,9 +123,9 @@ TEST_F(EngineMetricsTest, EngineAndCryptoMetrics) {
|
||||
EXPECT_EQ(1, actual_metrics.engine_metrics().crypto_metrics()
|
||||
.crypto_session_get_device_unique_id(0)
|
||||
.count());
|
||||
EXPECT_EQ(true, actual_metrics.engine_metrics().crypto_metrics()
|
||||
.crypto_session_get_device_unique_id(0)
|
||||
.attributes().error_code_bool());
|
||||
EXPECT_EQ(NO_ERROR, actual_metrics.engine_metrics().crypto_metrics()
|
||||
.crypto_session_get_device_unique_id(0)
|
||||
.attributes().error_code());
|
||||
ASSERT_EQ(1, actual_metrics.engine_metrics().crypto_metrics()
|
||||
.crypto_session_generic_decrypt_time_us_size());
|
||||
EXPECT_EQ(2.0, actual_metrics.engine_metrics().crypto_metrics()
|
||||
@@ -153,7 +153,7 @@ TEST_F(EngineMetricsTest, EngineMetricsWithSessions) {
|
||||
// Set a values in an engine metric and in a crypto metric.
|
||||
engine_metrics.cdm_engine_add_key_.Record(1.0, KEY_ADDED, kLicenseTypeRelease);
|
||||
engine_metrics.GetCryptoMetrics()
|
||||
->crypto_session_load_certificate_private_key_.Record(2.0, true);
|
||||
->crypto_session_load_certificate_private_key_.Record(2.0, NO_ERROR);
|
||||
|
||||
// Create two sessions and record some metrics.
|
||||
SessionMetrics* session_metrics_1 = engine_metrics.AddSession();
|
||||
@@ -297,11 +297,11 @@ TEST_F(CryptoMetricsTest, AllCryptoMetrics) {
|
||||
.Record(2.0, NO_ERROR, Pow2Bucket(1025), kSigningAlgorithmHmacSha256);
|
||||
crypto_metrics.crypto_session_generic_verify_
|
||||
.Record(2.0, NO_ERROR, Pow2Bucket(1025), kSigningAlgorithmHmacSha256);
|
||||
crypto_metrics.crypto_session_get_device_unique_id_.Increment(true);
|
||||
crypto_metrics.crypto_session_get_token_.Increment(true);
|
||||
crypto_metrics.crypto_session_get_device_unique_id_.Increment(NO_ERROR);
|
||||
crypto_metrics.crypto_session_get_token_.Increment(NO_ERROR);
|
||||
crypto_metrics.crypto_session_life_span_.Record(1.0);
|
||||
crypto_metrics.crypto_session_load_certificate_private_key_
|
||||
.Record(1.0, true);
|
||||
.Record(1.0, NO_ERROR);
|
||||
crypto_metrics.crypto_session_open_.Record(1.0, NO_ERROR, kLevelDefault);
|
||||
crypto_metrics.crypto_session_update_usage_information_
|
||||
.Record(1.0, NO_ERROR);
|
||||
|
||||
Reference in New Issue
Block a user