[ Merge of http://go/wvgerrit/22900 ] Add GetClientToken(), GetProvisioningToken(), GetPreProvisionTokenType() to CryptoSession. They return the correct token bytes and token type for preparing the ClientIdentification message for provisioning and license server transactions. Also refactor service certificate handling. OEM certs are introduced in Provisioning 3.0 b/30811184 * Address build breaks [ Merge of http://go/wvgerrit/23162 ] This addresses issues introduced by http://go/wvgerrit/22900 b/30811184 * When http://go/wvgerrit/18012 was merged (ag/1446934) some changes were not merged for mapErrors-inl.h. These changes are included in this CL. * When ag/1678104 was reverse merged to http//go/wvgerrit/21981/ a variable was renamed and some comments were added to add clarity in cdm_engine.cpp. These changes are included in this CL. Test: All unittests other than some oemcrypto, request_license_test passed. Those tests failed with or without this CL. Change-Id: Ie0215509f2f985f2a610f5a4c865db47edec8662
60 lines
1.9 KiB
C++
60 lines
1.9 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 "oemcrypto_adapter.h"
|
|
#include "service_certificate.h"
|
|
#include "wv_cdm_types.h"
|
|
|
|
namespace wvcdm {
|
|
|
|
class CdmSession;
|
|
class FileSystem;
|
|
|
|
class CertificateProvisioning {
|
|
public:
|
|
CertificateProvisioning() :
|
|
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,
|
|
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);
|
|
|
|
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_
|