/** * Signs the input and forwards license request to Widevine license server * @param $requestParams - original parameters * @param $overrideParamsStr - additional parameters passed on KS * @param $isAdmin - true/false, identifies if called with admin KS * @return byte sequence */ public static function sendLicenseRequest($requestParams, $overrideParamsStr = null, $isAdmin = false) { self::validateRequest($requestParams); $ptime = time(); $signInput = $requestParams[self::ASSETID] . $requestParams[self::CLIENTID] . $requestParams[self::MK] . $requestParams[self::MD] . $ptime; $dbDrmProfile = DrmProfilePeer::retrieveByProvider(WidevinePlugin::getWidevineProviderCoreValue()); if ($dbDrmProfile) { $key = $dbDrmProfile->getKey(); $iv = $dbDrmProfile->getIv(); $baseUrl = $dbDrmProfile->getLicenseServerUrl(); $portal = $dbDrmProfile->getPortal(); } else { $key = WidevinePlugin::getWidevineConfigParam('key'); $iv = WidevinePlugin::getWidevineConfigParam('iv'); $baseUrl = WidevinePlugin::getWidevineConfigParam('license_server_url'); $portal = WidevinePlugin::getWidevineConfigParam('portal'); } KalturaLog::info("sign input: " . $signInput); $sign = self::createRequestSignature($signInput, $key, $iv); $requestParams[self::PTIME] = $ptime; $requestParams[self::SIGN] = $sign; $overrideParams = self::getLicenseOverrideParams($overrideParamsStr, $isAdmin); $requestParams = array_merge($requestParams, $overrideParams); if (!$baseUrl) { throw new KalturaWidevineLicenseProxyException(KalturaWidevineErrorCodes::LICENSE_SERVER_URL_NOT_SET); } if (!$portal) { $portal = WidevinePlugin::KALTURA_PROVIDER; } $requestParams[self::PORTAL] = $portal; $baseUrl .= '/' . $portal; return self::doCurl($baseUrl, $requestParams); }
private function getPartnerKeySeed() { $partnerId = kCurrentContext::$partner_id ? kCurrentContext::$partner_id : kCurrentContext::$ks_partner_id; $profile = DrmProfilePeer::retrieveByProvider(PlayReadyPlugin::getPlayReadyProviderCoreValue()); if (!$profile) { throw new KalturaAPIException(KalturaPlayReadyErrors::PLAYREADY_PROFILE_NOT_FOUND); } return $profile->getKeySeed(); }
/** * Retrieve a KalturaDrmProfile object by provider, if no specific profile defined return default profile * * @action getByProvider * @param KalturaDrmProviderType $provider * @return KalturaDrmProfile */ public function getByProviderAction($provider) { $drmProfile = KalturaDrmProfile::getInstanceByType($provider); $drmProfile->provider = $provider; $tmpDbProfile = $drmProfile->toObject(); $dbDrmProfile = DrmProfilePeer::retrieveByProvider($tmpDbProfile->getProvider()); if (!$dbDrmProfile) { if ($provider == KalturaDrmProviderType::CENC) { $dbDrmProfile = new DrmProfile(); } else { $dbDrmProfile = KalturaPluginManager::loadObject('DrmProfile', $tmpDbProfile->getProvider()); } $dbDrmProfile->setName('default'); $dbDrmProfile->setProvider($tmpDbProfile->getProvider()); } $drmProfile->fromObject($dbDrmProfile, $this->getResponseProfile()); return $drmProfile; }