// Copyright 2023 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_TEST_PROVISIONING_HOLDER_H_ #define WVCDM_CORE_TEST_PROVISIONING_HOLDER_H_ #include "test_base.h" #include namespace wvcdm { class ProvisioningHolder { public: ProvisioningHolder(TestCdmEngine* cdm_engine, const ConfigTestEnv& config) : cdm_engine_(cdm_engine), config_(config), provisioning_server_url_(config.provisioning_server()), provisioning_service_certificate_( config.provisioning_service_certificate()) {} void Provision(CdmCertificateType cert_type, bool binary_provisioning); void Provision(bool binary_provisioning) { Provision(kCertificateWidevine, binary_provisioning); } std::string response() const { return response_; } std::string certificate() const { return certificate_; } std::string wrapped_key() const { return wrapped_key_; } protected: TestCdmEngine* cdm_engine_; const ConfigTestEnv& config_; std::string provisioning_server_url_; std::string provisioning_service_certificate_; std::string response_; std::string certificate_; std::string wrapped_key_; // Locate the portion of the server's provisioning response message that is // between the strings jason_start_substr and json_end_substr. Returns the // string through *result. If the start substring match fails, assume the // entire string represents a serialized protobuf mesaage and return true with // the entire string. If the end_substring match fails, return false with an // empty *result. bool ExtractSignedMessage(const std::string& response, std::string* result); // Dump request and response information for use in a debug or failure log. std::string DumpProvAttempt(const std::string& request, const std::string& response, CdmCertificateType cert_type); }; } // namespace wvcdm #endif // WVCDM_CORE_TEST_PROVISIONING_HOLDER_H_