1*6777b538SAndroid Build Coastguard Worker // Copyright 2022 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef CRYPTO_UNEXPORTABLE_KEY_METRICS_H_ 6*6777b538SAndroid Build Coastguard Worker #define CRYPTO_UNEXPORTABLE_KEY_METRICS_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "crypto/crypto_export.h" 9*6777b538SAndroid Build Coastguard Worker #include "crypto/unexportable_key.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker namespace crypto { 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker // Records UMA metrics of TPM availability, latency and successful usage. 14*6777b538SAndroid Build Coastguard Worker // Does the work on a new background task. 15*6777b538SAndroid Build Coastguard Worker CRYPTO_EXPORT void MaybeMeasureTpmOperations( 16*6777b538SAndroid Build Coastguard Worker UnexportableKeyProvider::Config config); 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker // internal namespace to be used by tests only 19*6777b538SAndroid Build Coastguard Worker namespace internal { 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker // Note that values here are used in a recorded histogram. Don't change 22*6777b538SAndroid Build Coastguard Worker // the values of existing members. 23*6777b538SAndroid Build Coastguard Worker enum class TPMSupport { 24*6777b538SAndroid Build Coastguard Worker kNone = 0, 25*6777b538SAndroid Build Coastguard Worker kRSA = 1, 26*6777b538SAndroid Build Coastguard Worker kECDSA = 2, 27*6777b538SAndroid Build Coastguard Worker kMaxValue = 2, 28*6777b538SAndroid Build Coastguard Worker }; 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker // Note that values here are used in a recorded histogram. Don't change 31*6777b538SAndroid Build Coastguard Worker // the values of existing members. 32*6777b538SAndroid Build Coastguard Worker enum class TPMType { 33*6777b538SAndroid Build Coastguard Worker kNone = 0, 34*6777b538SAndroid Build Coastguard Worker kHW = 1, 35*6777b538SAndroid Build Coastguard Worker kVirtual = 2, 36*6777b538SAndroid Build Coastguard Worker kBoth = 3, 37*6777b538SAndroid Build Coastguard Worker kMaxValue = 3, 38*6777b538SAndroid Build Coastguard Worker }; 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker // Exported for testing 41*6777b538SAndroid Build Coastguard Worker CRYPTO_EXPORT void MeasureTpmOperationsInternalForTesting(); 42*6777b538SAndroid Build Coastguard Worker } // namespace internal 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Worker } // namespace crypto 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker #endif // CRYPTO_UNEXPORTABLE_KEY_METRICS_H_ 47