Поделиться через


Новые возможности PlayReady версии 4.5

Эта страница содержит обзор наиболее значительных изменений между PlayReady версии 4.4 и PlayReady версии 4.5.

Общие изменения в PlayReady версии 4.5

Вызов шифрования с помощью сертификата развертывания сервера PlayReady

В предыдущих версиях PlayReady приобретение лицензий и другие проблемы клиента всегда шифруются с помощью фиксированного открытого ключа. Начиная с PlayReady 4.5, клиент, закодированный для взаимодействия только с вспомогательным сервером, может вместо этого шифровать проблемы с сертификатом развертывания сервера PlayReady, выданным лицензией корпорации Майкрософт. Затем пакет SDK для сервера PlayReady расшифровывает запрос с соответствующим закрытым ключом, переданным в него приложением пакета SDK для сервера PlayReady, а не с фиксированным закрытым ключом.

Время сервера лицензирования

В предыдущих версиях PlayReady использование функции безопасного времени обычно требовало от клиентского приложения взаимодействовать с отдельным сервером безопасного времени, чтобы получить время, используемое для установки локальных часов. Начиная с PlayReady 4.5, клиент, закодированный для взаимодействия только с вспомогательным сервером, может использовать время, предоставленное пакетом SDK для сервера PlayReady во время приобретения лицензии. Дополнительные сведения см. в разделе "Доверенные часы PlayReady".

Exchange ключей

Используя протокол приобретения лицензий, клиент PlayReady и сервер теперь могут обмениваться произвольными ключами, которые можно использовать для шифрования, расшифровки, подписывания и проверки произвольных данных, предоставляемых приложением, где сами ключи защищены с помощью PlayReady. Если клиент имеет значение SL3000, сами ключи защищены доверенной средой выполнения. Дополнительные сведения см. в разделе Exchange ключа PlayReady.

Политика подложки

Добавлены функциональные возможности, которые упрощают использование ограничения явного цифрового вывода видео, определенного правилами соответствия PlayReady.

Изменения в пакете SDK для сервера PlayReady версии 4.5

Общие изменения сервера

Ключи Exchange лицензии можно использовать для предоставления произвольных ключей клиенту во время приобретения лицензии.

При предоставлении клиентом поддерживаемых технологий подложки предоставляются приложению пакета SDK для сервера PlayReady Server. Это упрощает использование ограничения явного цифрового вывода видео с водяными знаками в соответствии с правилами соответствия PlayReady.

Изменения документации по API сервера

Новая документация по API сервера для .NET стандартной версии пакета SDK для сервера PlayReady была создана и опубликована. Корпорация Майкрософт рекомендует перейти на пакет SDK для .NET ценовой категории "Стандартный".

Документация по API сервера в файле PlayReady.chm, включенная в пакет документации PlayReady, применяется только к устаревшей версии пакета SDK для сервера PlayReady платформа .NET Framework. Эта документация теперь считается нерекомендуемой, не была обновлена с момента playReady 4.0 и не будет получать будущие обновления.

Большинство API в двух пакетах SDK идентичны, поэтому для большинства целей должна быть достаточно .NET стандартная документация. Однако существует несколько существенных различий, в которых различаются классы, интерфейсы и методы.

Ниже приведены общие различия между двумя пакетами SDK.

  1. Пакет SDK .NET уровня "Стандартный" использует интерфейсы во многих местах, где пакет SDK платформа .NET Framework использует классы.

  2. Интерфейсы обработчика пакета SDK .NET уровня "Стандартный", реализованные приложением, используют асинхронные методы, в которых пакет SDK платформа .NET Framework использует синхронные методы. Поэтому имена API интерфейса API обработчика пакета SDK для .Net Standard заканчиваются словом "Async" и возвращают класс Task<вместо простого класса> (где класс зависит от метода интерфейса обработчика).

  3. Пакет SDK для .NET уровня "Стандартный" не зависит от транспорта. Таким образом, никакой контекст HTTP не предоставляется приложению напрямую. При использовании ASP.NET Core обратитесь к документации по ASP.NET Core, особенно интерфейсу IHttpContextAccessor.

  4. Пакет SDK для .NET уровня "Стандартный" не поддерживает протокол упаковки содержимого (например, IPackagingDataAcquisitionHandler не существует). Эта функция будет восстановлена в PlayReady 4.6.

Ниже приведен полный список конкретных различий по состоянию на PlayReady 4.5. Этот список не включает функции, которые существуют только в пакете SDK .NET standard, и не перечисляют все удаленные классы упаковки, которые будут восстановлены.

 

платформа .NET Framework класс или интерфейс эквивалент .NET Standard Различия
Класс ProtocolChallengeContext Интерфейс IProtocolChallengeContext Свойство HttpRequest Request существует только в пакете SDK для платформа .NET Framework, как описано выше.
Класс ProtocolChallenge Интерфейс IProtocolChallenge Нет.
Интерфейс IDeleteLicenseHandler Аналогично ProcessDeleteLicenseDataAsync является синхронным в пакете SDK платформа .NET Framework, как описано выше.
Класс DeleteLicenseDataChallenge Интерфейс IDeleteLicenseDataChallenge Нет.
Интерфейс IDomainHandler Аналогично HandleJoinDomainAsync и HandleLeaveDomainAsync синхронны в пакете SDK платформа .NET Framework, как описано выше.
Класс JoinDomainChallenge Интерфейсы IDomainChallenge и IJoinDomainChallenge Статический метод JoinDomainChallenge.GenerateDomainKeyPair не существует в пакете SDK .NET standard. Потеря этой функции — это ошибка, которая будет исправлена в PlayReady 4.6 путем добавления его в качестве статического метода в DomainCertificateBuilder.
Класс LeaveDomainChallenge Интерфейс ILeaveDomainChallenge Нет.
Интерфейс ILicenseAcknowledgementHandler Аналогично HandleLicenseAcknowledgementAsync является синхронным в пакете SDK платформа .NET Framework, как описано выше.
Класс LicenseAcknowledgementChallenge Интерфейс ILicenseAcknowledgementChallenge Нет.
Интерфейс ILicenseAcquisitionHandler Аналогично HandleLicenseAcquisitionAsync является синхронным в пакете SDK платформа .NET Framework, как описано выше.
Класс LicenseChallenge Интерфейс ILicenseChallenge Нет.
Интерфейс IMeteringHandler Аналогично GetMeteringCertificateAsync и ProcessMeteringDataAsync синхронны в пакете SDK для платформа .NET Framework, как описано выше.
Класс MeteringCertificateChallenge Интерфейс IMeteringCertificateChallenge Нет.
Класс ProcessMeteringDataChallenge Интерфейс IProcessMeteringDataChallenge Нет.
Интерфейс ISecureStopHandler Аналогично ProcessSecureStopDataAsync является синхронным в пакете SDK платформа .NET Framework, как описано выше.
Класс SecureStopDataChallenge Интерфейс ISecureStopDataChallenge Перегрузка метода GetSecureStopData, принимающую ISecureStop2Handler, существует только в пакете SDK для платформа .NET Framework. Вместо этого пакет SDK .NET уровня "Стандартный" загружает этот обработчик, как и любой другой.
Интерфейс ISecureStopHandler2 Аналогично GetSecureStop2AESKeyAsync является синхронным в пакете SDK платформа .NET Framework, как описано выше.
Класс PlayReadyServerAuthorization Аналогично Методы класса являются статическими в пакете SDK платформа .NET Framework и экземпляре в пакете SDK .NET standard.

Изменения API сервера

Это просто обзор. Дополнительные сведения см. в документации по API сервера .

Метод LicenseResponse.GetLicenses теперь возвращает пустой массив вместо null, если лицензии не были добавлены.

Добавлены следующие классы и перечисления.

  • Класс AdvancedLicense (абстрактный, наследуется от лицензии) — подмножество существующих свойств и методов из MediaLicense было перемещено в этот класс, а MediaLicense теперь наследует от AbstractLicense. Для использования MediaLicense изменения приложения не требуются.
  • Класс KeyExchangeLicense (наследуется от AdvancedLicense) используется для создания лицензий, предоставляющих клиенту произвольные ключи во время приобретения лицензии.
  • Класс KeyExchangeRight (наследуется от Right) — используется для указания ключа и разрешенного использования лицензии KeyExchange.
  • Перечисление KeyExchangeAlgorithm используется для указания допустимого использования ключа в лицензии KeyExchange.
  • Класс WatermarkVendor используется для предоставления приложению поддерживаемых технологий подложки клиента.
  • Класс LicenseServerTimeCertificate используется для хранения сертификата для подписи времени сервера лицензирования, возвращенного в ответе на получение лицензии.

В отдельные классы были добавлены следующие элементы.

  • Класс PlayReadyHeader показывает, указывает ли заголовок поддержку ключей для каждого потока и явно запрашивает лицензию.
  • Перечисление ContentKeyType добавляет значение KeyExchange.
  • Класс Certificate добавляет свойства массива байтов, предоставляющие дайджест и открытый ключ издателя сертификата.
  • Класс License добавляет свойство GUID, предоставляющее уникальный идентификатор лицензии и свойство IEnumerable<Right> для возврата прав, добавленных в лицензию.
  • Перечисление LicenseChallengeTeeAPIs добавляет значения для всех новых API TEE PK 4.5.
  • Перечисление LicenseChallengeReeFeatures добавляет значения для LicenseServerTime и KeyExchange.
  • Класс LicenseChallenge добавляет список KeyExchangeAlgorithms, поддерживаемый клиентом, WatermarkVendors, поддерживает PK-версии TEE и REE клиента (которые могут быть одинаковыми) и требует ли клиент текущего LicenseServerTime.
  • Класс LicenseResponse добавляет свойство LicenseServerTimeCertificate для задания сертификата, используемого для подписи времени сервера лицензирования, возвращенного в ответе на получение лицензии.
  • Класс ExplicitOutputRestrictionsConstants добавляет константы для watermark и InternalScreenOnly. Дополнительные сведения об этих guid см. в правилах соответствия PlayReady.

Изменения в комплекте переноса устройств PlayReady версии 4.5

Общие изменения в комплекте для переноса устройств

  • Весь комплект переноса устройств PlayReady обновлен до языка заметки исходного кода (SAL) 2.0 (Майкрософт).
  • Некоторые неподдерживаемые пути к коду, используемые только во внутренних реализациях Майкрософт, были удалены для устранения путаницы и сокращения времени компиляции и двоичных размеров. Ожидается, что в будущие выпуски будут включены дополнительные улучшения в этой области.
  • Если поддерживается базовой архитектурой компилятора и компьютера, собственные 128-разрядные целочисленные типы теперь можно использовать для ускорения реализации ECC256 по умолчанию.
  • Добавлена реализация алгоритма HMAC SHA256 по умолчанию.

Изменения API пакета переноса устройств

Это просто обзор. Дополнительные сведения см. в документации по API, предоставленной в связанных комментариях к коду в комплекте переноса устройств PlayReady .

DRM_CDMI_SetServercertificate теперь разрешено вызывать с помощью сертификата развертывания сервера PlayReady для получения лицензии на шифрование конфиденциальности и других проблем клиента. Функция перенаправит Drm_AppContext_SetProperty в этом сценарии. Существующее использование остается неизменным.

Добавлены следующие общедоступные функции:

  • Drm_AppContext_SetProperty
  • Drm_KeyExchange_Prepare
  • Drm_KeyExchange_Perform
  • Drm_KeyExchange_Close

Добавлены следующие структуры:

  • DRM_DGP_REE_FEATURE_LIST_4_5
  • DRM_DGP_TEE_API_LIST_4_5

Добавлены следующие API TEE:

  • DRM_TEE_BASE_GetSystemTime2
  • DRM_TEE_LICPREP_PackageKey2
  • DRM_TEE_LICENSESERVERTIME_ProcessResponseData
  • DRM_TEE_DECRYPT_PrepareToDecrypt2
  • DRM_TEE_LICGEN_CompleteLicense2
  • DRM_TEE_KEYEXCHANGE_Prepare
  • DRM_TEE_KEYEXCHANGE_Perform

Добавлены следующие API TEE OEM:

  • OEM_TEE_BASE_ECC256_SetKey
  • OEM_TEE_CRYPTO_SHA256_HMAC_VerifyMAC
  • OEM_TEE_CRYPTO_SHA256_HMAC_CreateMAC
  • OEM_TEE_PERSISTENTSTORAGE_Read
  • OEM_TEE_PERSISTENTSTORAGE_Write
  • OEM_TEE_GetSupportedWatermarkVendors

Следующие API TEE OEM были переименованы без функциональных изменений:

Старое имя Новое имя
OEM_TEE_DECRYPT_UnshuffleScalableContentKeys OEM_TEE_BASE_UnshuffleScalableContentKeys
OEM_TEE_DECRYPT_CalculateContentKeyPrimeWithAES128Key OEM_TEE_BASE_CalculateContentKeyPrimeWithAES128Key
OEM_TEE_DECRYPT_DeriveScalableKeyWithAES128Key OEM_TEE_BASE_DeriveScalableKeyWithAES128Key
OEM_TEE_DECRYPT_InitUplinkXKey OEM_TEE_BASE_InitUplinkXKey
OEM_TEE_DECRYPT_UpdateUplinkXKey OEM_TEE_BASE_UpdateUplinkXKey
OEM_TEE_DECRYPT_DecryptContentKeysWithDerivedKeys OEM_TEE_BASE_DecryptContentKeysWithDerivedKeys
OEM_TEE_DECRYPT_EnforcePolicy OEM_TEE_POLICY_Enforce