// Copyright 2016 Google Inc. All Rights Reserved. #ifndef WVCDM_METRICS_METRICS_GROUP_H_ #define WVCDM_METRICS_METRICS_GROUP_H_ #include #include #include "OEMCryptoCENC.h" #include "event_metric.h" #include "metric_publisher.h" #include "wv_cdm_types.h" namespace wvcdm { namespace metrics { typedef enum OEMCryptoInitializationMode { OEMCrypto_INITIALIZED_USING_IN_APP = 0, OEMCrypto_INITIALIZED_FORCING_L3 = 1, OEMCrypto_INITIALIZED_USING_L3_NO_L1_LIBRARY_PATH = 2, OEMCrypto_INITIALIZED_USING_L3_L1_OPEN_FAILED = 3, OEMCrypto_INITIALIZED_USING_L3_L1_LOAD_FAILED = 4, OEMCrypto_INITIALIZED_USING_L3_COULD_NOT_INITIALIZE_L1 = 5, OEMCrypto_INITIALIZED_USING_L3_WRONG_L1_VERSION = 6, OEMCrypto_INITIALIZED_USING_L1_WITH_KEYBOX = 7, OEMCrypto_INITIALIZED_USING_L1_WITH_CERTIFICATE = 8, OEMCrypto_INITIALIZED_USING_L1_CERTIFICATE_MIX = 9, OEMCrypto_INITIALIZED_USING_L3_BAD_KEYBOX = 10, OEMCrypto_INITIALIZED_USING_L3_COULD_NOT_OPEN_FACTORY_KEYBOX = 11, OEMCrypto_INITIALIZED_USING_L3_COULD_NOT_INSTALL_KEYBOX = 12, OEMCrypto_INITIALIZED_USING_L1_INSTALLED_KEYBOX = 13, OEMCrypto_INITIALIZED_USING_L3_INVALID_L1 = 14, OEMCrypto_INITIALIZED_USING_L1_WITH_PROVISIONING_3_0 = 15 } OEMCryptoInitializationMode; /* * The metrics group is the group of all metrics that be be recorded. They * are kept together to allow calls to be correlated to one another. */ class MetricsGroup { public: /* CDM ENGINE */ EventMetric cdm_engine_add_key_; EventMetric cdm_engine_close_session_; EventMetric cdm_engine_decrypt_; EventMetric cdm_engine_find_session_for_key_; EventMetric cdm_engine_generate_key_request_; EventMetric cdm_engine_get_provisioning_request_; EventMetric cdm_engine_get_usage_info_; EventMetric cdm_engine_handle_provisioning_response_; EventMetric<> cdm_engine_life_span_; EventMetric cdm_engine_open_key_set_session_; EventMetric cdm_engine_open_session_; EventMetric cdm_engine_query_key_status_; EventMetric cdm_engine_release_all_usage_info_; EventMetric cdm_engine_release_usage_info_; EventMetric cdm_engine_remove_keys_; EventMetric cdm_engine_restore_key_; EventMetric cdm_engine_unprovision_; /* CDM SESSION */ EventMetric<> cdm_session_life_span_; EventMetric cdm_session_renew_key_; EventMetric cdm_session_restore_offline_session_; EventMetric cdm_session_restore_usage_session_; /* CRYPTO SESSION */ EventMetric crypto_session_delete_all_usage_reports_; EventMetric crypto_session_delete_multiple_usage_information_; EventMetric crypto_session_generic_decrypt_; EventMetric crypto_session_generic_encrypt_; EventMetric crypto_session_generic_sign_; EventMetric crypto_session_generic_verify_; EventMetric crypto_session_get_device_unique_id_; EventMetric crypto_session_get_security_level_; EventMetric crypto_session_get_system_id_; EventMetric crypto_session_get_token_; EventMetric<> crypto_session_life_span_; EventMetric crypto_session_load_certificate_private_key_; EventMetric crypto_session_open_; EventMetric crypto_session_update_usage_information_; EventMetric crypto_session_usage_information_support_; /* OEMCRYPTO */ EventMetric oemcrypto_api_version_; EventMetric oemcrypto_close_session_; EventMetric oemcrypto_copy_buffer_; EventMetric oemcrypto_deactivate_usage_entry_; EventMetric oemcrypto_decrypt_cenc_; EventMetric oemcrypto_delete_usage_entry_; EventMetric oemcrypto_delete_usage_table_; EventMetric oemcrypto_derive_keys_from_session_key_; EventMetric oemcrypto_force_delete_usage_entry_; EventMetric oemcrypto_generate_derived_keys_; EventMetric oemcrypto_generate_nonce_; EventMetric oemcrypto_generate_rsa_signature_; EventMetric oemcrypto_generate_signature_; EventMetric oemcrypto_generic_decrypt_; EventMetric oemcrypto_generic_encrypt_; EventMetric oemcrypto_generic_sign_; EventMetric oemcrypto_generic_verify_; EventMetric oemcrypto_get_device_id_; EventMetric oemcrypto_get_hdcp_capability_; EventMetric oemcrypto_get_key_data_; EventMetric oemcrypto_get_max_number_of_sessions_; EventMetric oemcrypto_get_number_of_open_sessions_; EventMetric oemcrypto_get_oem_public_certificate_; EventMetric oemcrypto_get_provisioning_method_; EventMetric oemcrypto_get_random_; EventMetric oemcrypto_initialize_; EventMetric oemcrypto_install_keybox_; EventMetric oemcrypto_is_anti_rollback_hw_present_; EventMetric oemcrypto_is_keybox_valid_; EventMetric oemcrypto_load_device_rsa_key_; EventMetric oemcrypto_load_keys_; EventMetric oemcrypto_load_test_keybox_; EventMetric oemcrypto_load_test_rsa_key_; EventMetric oemcrypto_open_session_; EventMetric oemcrypto_refresh_keys_; EventMetric oemcrypto_report_usage_; EventMetric oemcrypto_rewrap_device_rsa_key_; EventMetric oemcrypto_rewrap_device_rsa_key_30_; EventMetric oemcrypto_security_level_; EventMetric oemcrypto_security_patch_level_; EventMetric oemcrypto_select_key_; EventMetric oemcrypto_supports_usage_table_; EventMetric oemcrypto_update_usage_table_; EventMetric oemcrypto_wrap_keybox_; /* Internal OEMCrypto Metrics */ EventMetric oemcrypto_initialization_mode_; EventMetric oemcrypto_l1_api_version_; MetricsGroup(); ~MetricsGroup(); private: void Publish(MetricNotification* subscriber); }; } // namespace metrics } // namespace wvcdm #endif