69 lines
2.8 KiB
C++
69 lines
2.8 KiB
C++
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine License
|
|
// Agreement.
|
|
#ifndef WVCDM_CORE_CLIENT_IDENTIFICATION_H_
|
|
#define WVCDM_CORE_CLIENT_IDENTIFICATION_H_
|
|
|
|
#include <string>
|
|
|
|
#include "license_protocol.pb.h"
|
|
#include "wv_cdm_types.h"
|
|
#include "wv_class_utils.h"
|
|
|
|
namespace wvcdm {
|
|
class CryptoSession;
|
|
|
|
// ClientIdentification fills in the ClientIdentification portion
|
|
// of the License or Provisioning request messages.
|
|
class ClientIdentification {
|
|
public:
|
|
ClientIdentification() {}
|
|
WVCDM_DISALLOW_COPY_AND_MOVE(ClientIdentification);
|
|
virtual ~ClientIdentification() {}
|
|
|
|
// Call this method when used with provisioning requests. |client_token| may
|
|
// be empty and the token will be retrieved from OEMCrypto. In case of the
|
|
// second stage of provisioning 4, an OEM cert must be provided via
|
|
// |client_token|. |crypto_session| must not be nullptr.
|
|
CdmResponseType InitForProvisioningRequest(const std::string& client_token,
|
|
CryptoSession* crypto_session);
|
|
|
|
// Use in conjunction with license requests
|
|
// |client_token| must be provided
|
|
// |crypto_session| input parameter, mandatory
|
|
CdmResponseType InitForLicenseRequest(const std::string& client_token,
|
|
CryptoSession* crypto_session);
|
|
|
|
CdmResponseType InitForOtaKeyboxProvisioning(CryptoSession* crypto_session);
|
|
|
|
// Fill the ClientIdentification portion of the license, DRM cert
|
|
// provisioning or OTA keybox provisioning request.
|
|
// |app_parameters| parameters provided by client/app to be included in
|
|
// provisioning/license request. optional, only used
|
|
// if |is_license_request| is true
|
|
// |provider_client_token| optional parameter specified by the content
|
|
// and included in the license. Only used if
|
|
// specified and if |is_license_request| is true
|
|
// |client_id| Portion of license/provisioning request that needs to be
|
|
// populated.
|
|
virtual CdmResponseType Prepare(
|
|
const CdmAppParameterMap& app_parameters,
|
|
const std::string& provider_client_token,
|
|
video_widevine::ClientIdentification* client_id);
|
|
|
|
private:
|
|
bool GetProvisioningTokenType(
|
|
video_widevine::ClientIdentification::TokenType* token_type);
|
|
bool GetProvisioning40TokenSignatureType(
|
|
video_widevine::ClientIdentification::ClientCredentials::CredentialType*
|
|
token_signature_type);
|
|
|
|
bool is_license_request_ = false;
|
|
bool is_okp_request_ = false;
|
|
std::string client_token_;
|
|
std::string device_id_;
|
|
CryptoSession* crypto_session_ = nullptr;
|
|
}; // class ClientIdentification
|
|
} // namespace wvcdm
|
|
#endif // WVCDM_CORE_CLIENT_IDENTIFICATION_H_
|