MetricsGroup split into 3 groups, session, engine, and crypto. MetricsFrontEnd and Report removed. This is a merge from wvgerrit/28420 Bug: 36217927 Test: Added unit tests to cover modified code. Change-Id: I2f39f99ce88cc2229d6d1aa9459c67c5b86ccef4
66 lines
2.2 KiB
C++
66 lines
2.2 KiB
C++
// Copyright 2013 Google Inc. All Rights Reserved.
|
|
|
|
#ifndef WVCDM_CORE_CERTIFICATE_PROVISIONING_H_
|
|
#define WVCDM_CORE_CERTIFICATE_PROVISIONING_H_
|
|
|
|
#include <string>
|
|
|
|
#include "crypto_session.h"
|
|
#include "metrics_collections.h"
|
|
#include "oemcrypto_adapter.h"
|
|
#include "service_certificate.h"
|
|
#include "wv_cdm_types.h"
|
|
|
|
namespace wvcdm {
|
|
|
|
class CdmSession;
|
|
class FileSystem;
|
|
|
|
class CertificateProvisioning {
|
|
public:
|
|
CertificateProvisioning(metrics::CryptoMetrics* metrics) :
|
|
crypto_session_(metrics),
|
|
cert_type_(kCertificateWidevine),
|
|
service_certificate_(NULL) {};
|
|
~CertificateProvisioning() {};
|
|
|
|
// Provisioning related methods
|
|
CdmResponseType GetProvisioningRequest(SecurityLevel requested_security_level,
|
|
CdmCertificateType cert_type,
|
|
const std::string& cert_authority,
|
|
const std::string& origin,
|
|
const std::string& spoid,
|
|
CdmProvisioningRequest* request,
|
|
std::string* default_url);
|
|
CdmResponseType HandleProvisioningResponse(
|
|
FileSystem* file_system,
|
|
const CdmProvisioningResponse& response,
|
|
std::string* cert,
|
|
std::string* wrapped_key);
|
|
|
|
private:
|
|
bool GetProvisioningTokenType(
|
|
video_widevine::ClientIdentification::TokenType* token_type);
|
|
|
|
bool FillStableIdField(const std::string& origin, const std::string& spoid,
|
|
video_widevine::ProvisioningRequest* request);
|
|
|
|
video_widevine::SignedProvisioningMessage::ProtocolVersion
|
|
GetProtocolVersion();
|
|
|
|
void ComposeJsonRequestAsQueryString(const std::string& message,
|
|
CdmProvisioningRequest* request);
|
|
bool ParseJsonResponse(const CdmProvisioningResponse& json_str,
|
|
const std::string& start_substr,
|
|
const std::string& end_substr, std::string* result);
|
|
CryptoSession crypto_session_;
|
|
CdmCertificateType cert_type_;
|
|
ServiceCertificate* service_certificate_;
|
|
|
|
CORE_DISALLOW_COPY_AND_ASSIGN(CertificateProvisioning);
|
|
};
|
|
|
|
} // namespace wvcdm
|
|
|
|
#endif // WVCDM_CORE_CERTIFICATE_PROVISIONING_H_
|