//////////////////////////////////////////////////////////////////////////////// // Copyright 2018 Google LLC. // // This software is licensed under the terms defined in the Widevine Master // License Agreement. For a copy of this agreement, please contact // widevine-licensing@google.com. //////////////////////////////////////////////////////////////////////////////// #include "common/certificate_util.h" #include "common/drm_root_certificate.h" #include "common/drm_service_certificate.h" #include "common/verified_media_pipeline.h" #include "common/vmp_checker.h" #include "license_server_sdk/internal/client_cert.h" #include "license_server_sdk/internal/device_status_list.h" namespace widevine { util::Status SetCertificateStatusList( CertificateType cert_type, const std::string& signed_certificate_status_list, uint32_t expiration_period_seconds, bool allow_unknown_devices) { util::Status status = VmpChecker::Instance()->SelectDrmCertificateType(cert_type); if (!status.ok()) return status; std::unique_ptr root_cert; status = DrmRootCertificate::CreateByType(cert_type, &root_cert); if (!status.ok()) { return status; } status = CertificateClientCert::SetDrmRootCertificatePublicKey( root_cert->public_key()); if (!status.ok()) { return status; } DeviceStatusList::Instance()->set_allow_unknown_devices( allow_unknown_devices); return DeviceStatusList::Instance()->UpdateStatusList( root_cert->public_key(), signed_certificate_status_list, expiration_period_seconds); } util::Status AddDrmServiceCertificate( CertificateType cert_type, const std::string& service_certificate, const std::string& service_private_key, const std::string& service_private_key_passphrase) { util::Status status = VmpChecker::Instance()->SelectDrmCertificateType(cert_type); if (!status.ok()) return status; return DrmServiceCertificate::AddDrmServiceCertificate( cert_type, service_certificate, service_private_key, service_private_key_passphrase); } } // namespace widevine