@svta/cml-drm 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +15 -0
  2. package/dist/index.d.ts +777 -69
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +921 -71
  5. package/dist/index.js.map +1 -1
  6. package/package.json +7 -26
  7. package/dist/cenc/findCencContentProtection.d.ts +0 -14
  8. package/dist/cenc/findCencContentProtection.d.ts.map +0 -1
  9. package/dist/cenc/findCencContentProtection.js +0 -30
  10. package/dist/cenc/findCencContentProtection.js.map +0 -1
  11. package/dist/cenc/getLicenseServerUrlFromContentProtection.d.ts +0 -15
  12. package/dist/cenc/getLicenseServerUrlFromContentProtection.d.ts.map +0 -1
  13. package/dist/cenc/getLicenseServerUrlFromContentProtection.js +0 -17
  14. package/dist/cenc/getLicenseServerUrlFromContentProtection.js.map +0 -1
  15. package/dist/cenc/getPsshData.d.ts +0 -13
  16. package/dist/cenc/getPsshData.d.ts.map +0 -1
  17. package/dist/cenc/getPsshData.js +0 -24
  18. package/dist/cenc/getPsshData.js.map +0 -1
  19. package/dist/cenc/getPsshForKeySystem.d.ts +0 -15
  20. package/dist/cenc/getPsshForKeySystem.d.ts.map +0 -1
  21. package/dist/cenc/getPsshForKeySystem.js +0 -22
  22. package/dist/cenc/getPsshForKeySystem.js.map +0 -1
  23. package/dist/cenc/parseInitDataFromContentProtection.d.ts +0 -18
  24. package/dist/cenc/parseInitDataFromContentProtection.d.ts.map +0 -1
  25. package/dist/cenc/parseInitDataFromContentProtection.js +0 -21
  26. package/dist/cenc/parseInitDataFromContentProtection.js.map +0 -1
  27. package/dist/cenc/parsePsshList.d.ts +0 -16
  28. package/dist/cenc/parsePsshList.d.ts.map +0 -1
  29. package/dist/cenc/parsePsshList.js +0 -87
  30. package/dist/cenc/parsePsshList.js.map +0 -1
  31. package/dist/common/CBCS.d.ts +0 -8
  32. package/dist/common/CBCS.d.ts.map +0 -1
  33. package/dist/common/CBCS.js +0 -8
  34. package/dist/common/CBCS.js.map +0 -1
  35. package/dist/common/CENC.d.ts +0 -8
  36. package/dist/common/CENC.d.ts.map +0 -1
  37. package/dist/common/CENC.js +0 -8
  38. package/dist/common/CENC.js.map +0 -1
  39. package/dist/common/CHALLENGE.d.ts +0 -8
  40. package/dist/common/CHALLENGE.d.ts.map +0 -1
  41. package/dist/common/CHALLENGE.js +0 -8
  42. package/dist/common/CHALLENGE.js.map +0 -1
  43. package/dist/common/CLEAR_KEY_SYSTEM.d.ts +0 -8
  44. package/dist/common/CLEAR_KEY_SYSTEM.d.ts.map +0 -1
  45. package/dist/common/CLEAR_KEY_SYSTEM.js +0 -8
  46. package/dist/common/CLEAR_KEY_SYSTEM.js.map +0 -1
  47. package/dist/common/CLEAR_KEY_UUID.d.ts +0 -8
  48. package/dist/common/CLEAR_KEY_UUID.d.ts.map +0 -1
  49. package/dist/common/CLEAR_KEY_UUID.js +0 -8
  50. package/dist/common/CLEAR_KEY_UUID.js.map +0 -1
  51. package/dist/common/CONTENT_TYPE.d.ts +0 -8
  52. package/dist/common/CONTENT_TYPE.d.ts.map +0 -1
  53. package/dist/common/CONTENT_TYPE.js +0 -8
  54. package/dist/common/CONTENT_TYPE.js.map +0 -1
  55. package/dist/common/ContentProtection.d.ts +0 -12
  56. package/dist/common/ContentProtection.d.ts.map +0 -1
  57. package/dist/common/ContentProtection.js +0 -2
  58. package/dist/common/ContentProtection.js.map +0 -1
  59. package/dist/common/EXPIRED.d.ts +0 -8
  60. package/dist/common/EXPIRED.d.ts.map +0 -1
  61. package/dist/common/EXPIRED.js +0 -8
  62. package/dist/common/EXPIRED.js.map +0 -1
  63. package/dist/common/EncryptionScheme.d.ts +0 -21
  64. package/dist/common/EncryptionScheme.d.ts.map +0 -1
  65. package/dist/common/EncryptionScheme.js +0 -13
  66. package/dist/common/EncryptionScheme.js.map +0 -1
  67. package/dist/common/FAIRPLAY_KEY_SYSTEM.d.ts +0 -8
  68. package/dist/common/FAIRPLAY_KEY_SYSTEM.d.ts.map +0 -1
  69. package/dist/common/FAIRPLAY_KEY_SYSTEM.js +0 -8
  70. package/dist/common/FAIRPLAY_KEY_SYSTEM.js.map +0 -1
  71. package/dist/common/FAIRPLAY_UUID.d.ts +0 -8
  72. package/dist/common/FAIRPLAY_UUID.d.ts.map +0 -1
  73. package/dist/common/FAIRPLAY_UUID.js +0 -8
  74. package/dist/common/FAIRPLAY_UUID.js.map +0 -1
  75. package/dist/common/HTTP_HEADERS.d.ts +0 -8
  76. package/dist/common/HTTP_HEADERS.d.ts.map +0 -1
  77. package/dist/common/HTTP_HEADERS.js +0 -8
  78. package/dist/common/HTTP_HEADERS.js.map +0 -1
  79. package/dist/common/HW_SECURE_ALL.d.ts +0 -8
  80. package/dist/common/HW_SECURE_ALL.d.ts.map +0 -1
  81. package/dist/common/HW_SECURE_ALL.js +0 -8
  82. package/dist/common/HW_SECURE_ALL.js.map +0 -1
  83. package/dist/common/HW_SECURE_CRYPTO.d.ts +0 -8
  84. package/dist/common/HW_SECURE_CRYPTO.d.ts.map +0 -1
  85. package/dist/common/HW_SECURE_CRYPTO.js +0 -8
  86. package/dist/common/HW_SECURE_CRYPTO.js.map +0 -1
  87. package/dist/common/HW_SECURE_DECODE.d.ts +0 -8
  88. package/dist/common/HW_SECURE_DECODE.d.ts.map +0 -1
  89. package/dist/common/HW_SECURE_DECODE.js +0 -8
  90. package/dist/common/HW_SECURE_DECODE.js.map +0 -1
  91. package/dist/common/INDIVIDUALIZATION_REQUEST.d.ts +0 -8
  92. package/dist/common/INDIVIDUALIZATION_REQUEST.d.ts.map +0 -1
  93. package/dist/common/INDIVIDUALIZATION_REQUEST.js +0 -8
  94. package/dist/common/INDIVIDUALIZATION_REQUEST.js.map +0 -1
  95. package/dist/common/INTERNAL_ERROR.d.ts +0 -8
  96. package/dist/common/INTERNAL_ERROR.d.ts.map +0 -1
  97. package/dist/common/INTERNAL_ERROR.js +0 -8
  98. package/dist/common/INTERNAL_ERROR.js.map +0 -1
  99. package/dist/common/InitializationDataType.d.ts +0 -25
  100. package/dist/common/InitializationDataType.d.ts.map +0 -1
  101. package/dist/common/InitializationDataType.js +0 -17
  102. package/dist/common/InitializationDataType.js.map +0 -1
  103. package/dist/common/KEYIDS.d.ts +0 -8
  104. package/dist/common/KEYIDS.d.ts.map +0 -1
  105. package/dist/common/KEYIDS.js +0 -8
  106. package/dist/common/KEYIDS.js.map +0 -1
  107. package/dist/common/LICENSE_ACQUISITION.d.ts +0 -8
  108. package/dist/common/LICENSE_ACQUISITION.d.ts.map +0 -1
  109. package/dist/common/LICENSE_ACQUISITION.js +0 -8
  110. package/dist/common/LICENSE_ACQUISITION.js.map +0 -1
  111. package/dist/common/LICENSE_RELEASE.d.ts +0 -8
  112. package/dist/common/LICENSE_RELEASE.d.ts.map +0 -1
  113. package/dist/common/LICENSE_RELEASE.js +0 -8
  114. package/dist/common/LICENSE_RELEASE.js.map +0 -1
  115. package/dist/common/LICENSE_RENEWAL.d.ts +0 -8
  116. package/dist/common/LICENSE_RENEWAL.d.ts.map +0 -1
  117. package/dist/common/LICENSE_RENEWAL.js +0 -8
  118. package/dist/common/LICENSE_RENEWAL.js.map +0 -1
  119. package/dist/common/LICENSE_REQUEST.d.ts +0 -8
  120. package/dist/common/LICENSE_REQUEST.d.ts.map +0 -1
  121. package/dist/common/LICENSE_REQUEST.js +0 -8
  122. package/dist/common/LICENSE_REQUEST.js.map +0 -1
  123. package/dist/common/LicenseRequest.d.ts +0 -45
  124. package/dist/common/LicenseRequest.d.ts.map +0 -1
  125. package/dist/common/LicenseRequest.js +0 -2
  126. package/dist/common/LicenseRequest.js.map +0 -1
  127. package/dist/common/MP4_PROTECTION_SCHEME.d.ts +0 -7
  128. package/dist/common/MP4_PROTECTION_SCHEME.d.ts.map +0 -1
  129. package/dist/common/MP4_PROTECTION_SCHEME.js +0 -7
  130. package/dist/common/MP4_PROTECTION_SCHEME.js.map +0 -1
  131. package/dist/common/MediaKeyMessageType.d.ts +0 -25
  132. package/dist/common/MediaKeyMessageType.d.ts.map +0 -1
  133. package/dist/common/MediaKeyMessageType.js +0 -17
  134. package/dist/common/MediaKeyMessageType.js.map +0 -1
  135. package/dist/common/MediaKeyStatus.d.ts +0 -31
  136. package/dist/common/MediaKeyStatus.d.ts.map +0 -1
  137. package/dist/common/MediaKeyStatus.js +0 -23
  138. package/dist/common/MediaKeyStatus.js.map +0 -1
  139. package/dist/common/MediaKeySystemAccessRequest.d.ts +0 -11
  140. package/dist/common/MediaKeySystemAccessRequest.d.ts.map +0 -1
  141. package/dist/common/MediaKeySystemAccessRequest.js +0 -2
  142. package/dist/common/MediaKeySystemAccessRequest.js.map +0 -1
  143. package/dist/common/OUTPUT_DOWNSCALED.d.ts +0 -8
  144. package/dist/common/OUTPUT_DOWNSCALED.d.ts.map +0 -1
  145. package/dist/common/OUTPUT_DOWNSCALED.js +0 -8
  146. package/dist/common/OUTPUT_DOWNSCALED.js.map +0 -1
  147. package/dist/common/OUTPUT_RESTRICTED.d.ts +0 -8
  148. package/dist/common/OUTPUT_RESTRICTED.d.ts.map +0 -1
  149. package/dist/common/OUTPUT_RESTRICTED.js +0 -8
  150. package/dist/common/OUTPUT_RESTRICTED.js.map +0 -1
  151. package/dist/common/PLAYREADY_KEY_MESSAGE.d.ts +0 -8
  152. package/dist/common/PLAYREADY_KEY_MESSAGE.d.ts.map +0 -1
  153. package/dist/common/PLAYREADY_KEY_MESSAGE.js +0 -8
  154. package/dist/common/PLAYREADY_KEY_MESSAGE.js.map +0 -1
  155. package/dist/common/PLAYREADY_KEY_SYSTEM.d.ts +0 -8
  156. package/dist/common/PLAYREADY_KEY_SYSTEM.d.ts.map +0 -1
  157. package/dist/common/PLAYREADY_KEY_SYSTEM.js +0 -8
  158. package/dist/common/PLAYREADY_KEY_SYSTEM.js.map +0 -1
  159. package/dist/common/PLAYREADY_RECOMMENDATION_KEY_SYSTEM.d.ts +0 -8
  160. package/dist/common/PLAYREADY_RECOMMENDATION_KEY_SYSTEM.d.ts.map +0 -1
  161. package/dist/common/PLAYREADY_RECOMMENDATION_KEY_SYSTEM.js +0 -8
  162. package/dist/common/PLAYREADY_RECOMMENDATION_KEY_SYSTEM.js.map +0 -1
  163. package/dist/common/PLAYREADY_UUID.d.ts +0 -8
  164. package/dist/common/PLAYREADY_UUID.d.ts.map +0 -1
  165. package/dist/common/PLAYREADY_UUID.js +0 -8
  166. package/dist/common/PLAYREADY_UUID.js.map +0 -1
  167. package/dist/common/RELEASED.d.ts +0 -8
  168. package/dist/common/RELEASED.d.ts.map +0 -1
  169. package/dist/common/RELEASED.js +0 -8
  170. package/dist/common/RELEASED.js.map +0 -1
  171. package/dist/common/STATUS_PENDING.d.ts +0 -8
  172. package/dist/common/STATUS_PENDING.d.ts.map +0 -1
  173. package/dist/common/STATUS_PENDING.js +0 -8
  174. package/dist/common/STATUS_PENDING.js.map +0 -1
  175. package/dist/common/SW_SECURE_CRYPTO.d.ts +0 -8
  176. package/dist/common/SW_SECURE_CRYPTO.d.ts.map +0 -1
  177. package/dist/common/SW_SECURE_CRYPTO.js +0 -8
  178. package/dist/common/SW_SECURE_CRYPTO.js.map +0 -1
  179. package/dist/common/SW_SECURE_DECODE.d.ts +0 -8
  180. package/dist/common/SW_SECURE_DECODE.d.ts.map +0 -1
  181. package/dist/common/SW_SECURE_DECODE.js +0 -8
  182. package/dist/common/SW_SECURE_DECODE.js.map +0 -1
  183. package/dist/common/TEXT_XML_UTF8.d.ts +0 -8
  184. package/dist/common/TEXT_XML_UTF8.d.ts.map +0 -1
  185. package/dist/common/TEXT_XML_UTF8.js +0 -8
  186. package/dist/common/TEXT_XML_UTF8.js.map +0 -1
  187. package/dist/common/USABLE.d.ts +0 -8
  188. package/dist/common/USABLE.d.ts.map +0 -1
  189. package/dist/common/USABLE.js +0 -8
  190. package/dist/common/USABLE.js.map +0 -1
  191. package/dist/common/W3C_CLEAR_KEY_UUID.d.ts +0 -8
  192. package/dist/common/W3C_CLEAR_KEY_UUID.d.ts.map +0 -1
  193. package/dist/common/W3C_CLEAR_KEY_UUID.js +0 -8
  194. package/dist/common/W3C_CLEAR_KEY_UUID.js.map +0 -1
  195. package/dist/common/WEBM.d.ts +0 -8
  196. package/dist/common/WEBM.d.ts.map +0 -1
  197. package/dist/common/WEBM.js +0 -8
  198. package/dist/common/WEBM.js.map +0 -1
  199. package/dist/common/WIDEVINE_KEY_SYSTEM.d.ts +0 -8
  200. package/dist/common/WIDEVINE_KEY_SYSTEM.d.ts.map +0 -1
  201. package/dist/common/WIDEVINE_KEY_SYSTEM.js +0 -8
  202. package/dist/common/WIDEVINE_KEY_SYSTEM.js.map +0 -1
  203. package/dist/common/WIDEVINE_UUID.d.ts +0 -8
  204. package/dist/common/WIDEVINE_UUID.d.ts.map +0 -1
  205. package/dist/common/WIDEVINE_UUID.js +0 -8
  206. package/dist/common/WIDEVINE_UUID.js.map +0 -1
  207. package/dist/common/WidevineRobustness.d.ts +0 -27
  208. package/dist/common/WidevineRobustness.d.ts.map +0 -1
  209. package/dist/common/WidevineRobustness.js +0 -19
  210. package/dist/common/WidevineRobustness.js.map +0 -1
  211. package/dist/fairplay/concatInitDataIdAndCertificate.d.ts +0 -15
  212. package/dist/fairplay/concatInitDataIdAndCertificate.d.ts.map +0 -1
  213. package/dist/fairplay/concatInitDataIdAndCertificate.js +0 -33
  214. package/dist/fairplay/concatInitDataIdAndCertificate.js.map +0 -1
  215. package/dist/fairplay/decodeFairPlayLicense.d.ts +0 -13
  216. package/dist/fairplay/decodeFairPlayLicense.d.ts.map +0 -1
  217. package/dist/fairplay/decodeFairPlayLicense.js +0 -18
  218. package/dist/fairplay/decodeFairPlayLicense.js.map +0 -1
  219. package/dist/fairplay/extractContentId.d.ts +0 -14
  220. package/dist/fairplay/extractContentId.d.ts.map +0 -1
  221. package/dist/fairplay/extractContentId.js +0 -19
  222. package/dist/fairplay/extractContentId.js.map +0 -1
  223. package/dist/fairplay/getId.d.ts +0 -15
  224. package/dist/fairplay/getId.d.ts.map +0 -1
  225. package/dist/fairplay/getId.js +0 -27
  226. package/dist/fairplay/getId.js.map +0 -1
  227. package/dist/fairplay/getLicenseServerUrl.d.ts +0 -13
  228. package/dist/fairplay/getLicenseServerUrl.d.ts.map +0 -1
  229. package/dist/fairplay/getLicenseServerUrl.js +0 -22
  230. package/dist/fairplay/getLicenseServerUrl.js.map +0 -1
  231. package/dist/keysystem/createMediaKeySystemConfiguration.d.ts +0 -14
  232. package/dist/keysystem/createMediaKeySystemConfiguration.d.ts.map +0 -1
  233. package/dist/keysystem/createMediaKeySystemConfiguration.js +0 -27
  234. package/dist/keysystem/createMediaKeySystemConfiguration.js.map +0 -1
  235. package/dist/keysystem/getKeySystemAccess.d.ts +0 -11
  236. package/dist/keysystem/getKeySystemAccess.d.ts.map +0 -1
  237. package/dist/keysystem/getKeySystemAccess.js +0 -20
  238. package/dist/keysystem/getKeySystemAccess.js.map +0 -1
  239. package/dist/keysystem/getLegacyKeySystemAccess.d.ts +0 -11
  240. package/dist/keysystem/getLegacyKeySystemAccess.d.ts.map +0 -1
  241. package/dist/keysystem/getLegacyKeySystemAccess.js +0 -24
  242. package/dist/keysystem/getLegacyKeySystemAccess.js.map +0 -1
  243. package/dist/keysystem/getSupportedKeySystemConfiguration.d.ts +0 -14
  244. package/dist/keysystem/getSupportedKeySystemConfiguration.d.ts.map +0 -1
  245. package/dist/keysystem/getSupportedKeySystemConfiguration.js +0 -28
  246. package/dist/keysystem/getSupportedKeySystemConfiguration.js.map +0 -1
  247. package/dist/playready/getLicenseRequestFromMessage.d.ts +0 -15
  248. package/dist/playready/getLicenseRequestFromMessage.d.ts.map +0 -1
  249. package/dist/playready/getLicenseRequestFromMessage.js +0 -41
  250. package/dist/playready/getLicenseRequestFromMessage.js.map +0 -1
  251. package/dist/playready/getRequestHeadersFromMessage.d.ts +0 -16
  252. package/dist/playready/getRequestHeadersFromMessage.d.ts.map +0 -1
  253. package/dist/playready/getRequestHeadersFromMessage.js +0 -52
  254. package/dist/playready/getRequestHeadersFromMessage.js.map +0 -1
  255. package/dist/playready/toBigEndianKeyId.d.ts +0 -13
  256. package/dist/playready/toBigEndianKeyId.d.ts.map +0 -1
  257. package/dist/playready/toBigEndianKeyId.js +0 -23
  258. package/dist/playready/toBigEndianKeyId.js.map +0 -1
  259. package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/index.js CHANGED
@@ -1,73 +1,923 @@
1
+ import { UTF_16, decodeBase64, decodeText, stringToUint16 } from "@svta/cml-utils";
2
+ import { getElementsByName, parseXml } from "@svta/cml-xml";
3
+
4
+ //#region src/common/CBCS.ts
1
5
  /**
2
- * A collection of tools for working with DRM.
3
- *
4
- * @packageDocumentation
5
- *
6
- * @beta
7
- */
8
- // common utils
9
- export * from './cenc/findCencContentProtection.js';
10
- export * from './cenc/getLicenseServerUrlFromContentProtection.js';
11
- export * from './cenc/getPsshData.js';
12
- export * from './cenc/getPsshForKeySystem.js';
13
- export * from './cenc/parseInitDataFromContentProtection.js';
14
- export * from './cenc/parsePsshList.js';
15
- // key system utils
16
- export * from './keysystem/createMediaKeySystemConfiguration.js';
17
- export * from './keysystem/getKeySystemAccess.js';
18
- export * from './keysystem/getLegacyKeySystemAccess.js';
19
- export * from './keysystem/getSupportedKeySystemConfiguration.js';
20
- // fairplay utilities
21
- export * from './fairplay/concatInitDataIdAndCertificate.js';
22
- export * from './fairplay/decodeFairPlayLicense.js';
23
- export * from './fairplay/extractContentId.js';
24
- export * from './fairplay/getId.js';
25
- export * from './fairplay/getLicenseServerUrl.js';
26
- // playready utilities
27
- export * from './playready/getLicenseRequestFromMessage.js';
28
- export * from './playready/getRequestHeadersFromMessage.js';
29
- export * from './playready/toBigEndianKeyId.js';
30
- // drm constants
31
- export * from './common/CBCS.js';
32
- export * from './common/CENC.js';
33
- export * from './common/CHALLENGE.js';
34
- export * from './common/CLEAR_KEY_SYSTEM.js';
35
- export * from './common/CLEAR_KEY_UUID.js';
36
- export * from './common/CONTENT_TYPE.js';
37
- export * from './common/EncryptionScheme.js';
38
- export * from './common/EXPIRED.js';
39
- export * from './common/FAIRPLAY_KEY_SYSTEM.js';
40
- export * from './common/FAIRPLAY_UUID.js';
41
- export * from './common/HTTP_HEADERS.js';
42
- export * from './common/HW_SECURE_ALL.js';
43
- export * from './common/HW_SECURE_CRYPTO.js';
44
- export * from './common/HW_SECURE_DECODE.js';
45
- export * from './common/INDIVIDUALIZATION_REQUEST.js';
46
- export * from './common/InitializationDataType.js';
47
- export * from './common/INTERNAL_ERROR.js';
48
- export * from './common/KEYIDS.js';
49
- export * from './common/LICENSE_ACQUISITION.js';
50
- export * from './common/LICENSE_RELEASE.js';
51
- export * from './common/LICENSE_RENEWAL.js';
52
- export * from './common/LICENSE_REQUEST.js';
53
- export * from './common/MediaKeyMessageType.js';
54
- export * from './common/MediaKeyStatus.js';
55
- export * from './common/MP4_PROTECTION_SCHEME.js';
56
- export * from './common/OUTPUT_DOWNSCALED.js';
57
- export * from './common/OUTPUT_RESTRICTED.js';
58
- export * from './common/PLAYREADY_KEY_MESSAGE.js';
59
- export * from './common/PLAYREADY_KEY_SYSTEM.js';
60
- export * from './common/PLAYREADY_RECOMMENDATION_KEY_SYSTEM.js';
61
- export * from './common/PLAYREADY_UUID.js';
62
- export * from './common/RELEASED.js';
63
- export * from './common/STATUS_PENDING.js';
64
- export * from './common/SW_SECURE_CRYPTO.js';
65
- export * from './common/SW_SECURE_DECODE.js';
66
- export * from './common/TEXT_XML_UTF8.js';
67
- export * from './common/USABLE.js';
68
- export * from './common/W3C_CLEAR_KEY_UUID.js';
69
- export * from './common/WEBM.js';
70
- export * from './common/WIDEVINE_KEY_SYSTEM.js';
71
- export * from './common/WIDEVINE_UUID.js';
72
- export * from './common/WidevineRobustness.js';
6
+ * Cipher Block Chaining Sample encryption scheme.
7
+ *
8
+ *
9
+ * @beta
10
+ */
11
+ const CBCS = "cbcs";
12
+
13
+ //#endregion
14
+ //#region src/common/CENC.ts
15
+ /**
16
+ * Common Encryption scheme.
17
+ *
18
+ *
19
+ * @beta
20
+ */
21
+ const CENC = "cenc";
22
+
23
+ //#endregion
24
+ //#region src/common/MP4_PROTECTION_SCHEME.ts
25
+ /**
26
+ * The DASH MP4 Protection Scheme schemeIdUri.
27
+ *
28
+ * @beta
29
+ */
30
+ const MP4_PROTECTION_SCHEME = "urn:mpeg:dash:mp4protection:2011";
31
+
32
+ //#endregion
33
+ //#region src/cenc/findCencContentProtection.ts
34
+ /**
35
+ * Finds and returns the ContentProtection element for MP4 Common Encryption.
36
+ *
37
+ * @param cpArray - Array of ContentProtection elements.
38
+ * @returns The Common Encryption content protection element, or null if not found.
39
+ *
40
+ * @beta
41
+ *
42
+ * @example
43
+ * {@includeCode ../../test/cenc/findCencContentProtection.test.ts#example}
44
+ */
45
+ function findCencContentProtection(cpArray) {
46
+ if (!cpArray) return null;
47
+ for (const cp of cpArray) if (cp.schemeIdUri?.toLowerCase() === MP4_PROTECTION_SCHEME && cp.value && (cp.value.toLowerCase() === CENC || cp.value.toLowerCase() === CBCS)) return cp;
48
+ return null;
49
+ }
50
+
51
+ //#endregion
52
+ //#region src/cenc/getLicenseServerUrlFromContentProtection.ts
53
+ /**
54
+ * Extracts a license server URL from an array of ContentProtection elements.
55
+ *
56
+ * @param contentProtectionElements - Array of ContentProtection nodes from the manifest.
57
+ * @param schemeIdUri - schemeIdUri we are searching for.
58
+ * @returns The license server URL, and if not found then null.
59
+ *
60
+ * @beta
61
+ *
62
+ * @example
63
+ * {@includeCode ../../test/cenc/getLicenseServerUrlFromContentProtection.test.ts#example}
64
+ */
65
+ function getLicenseServerUrlFromContentProtection(contentProtectionElements, schemeIdUri) {
66
+ return contentProtectionElements.find((cp) => cp.schemeIdUri === schemeIdUri)?.laUrl || null;
67
+ }
68
+
69
+ //#endregion
70
+ //#region src/cenc/getPsshData.ts
71
+ /**
72
+ * Returns the data portion of a single PSSH box.
73
+ *
74
+ * @param pssh - The PSSH ArrayBuffer.
75
+ * @returns The data portion of the PSSH.
76
+ *
77
+ * @beta
78
+ *
79
+ * @example
80
+ * {@includeCode ../../test/cenc/getPsshData.test.ts#example}
81
+ */
82
+ function getPsshData(pssh) {
83
+ const offset = 8;
84
+ const view = new DataView(pssh);
85
+ const version = view.getUint8(offset);
86
+ let dataOffset = offset + 20;
87
+ if (version > 0) {
88
+ const kidCount = view.getUint32(dataOffset);
89
+ dataOffset += 4 + 16 * kidCount;
90
+ }
91
+ dataOffset += 4;
92
+ return pssh.slice(dataOffset);
93
+ }
94
+
95
+ //#endregion
96
+ //#region src/cenc/parsePsshList.ts
97
+ /**
98
+ * Parses a list of PSSH boxes into keysystem-specific PSSH data.
99
+ *
100
+ * @param data - The concatenated list of PSSH boxes as provided by
101
+ * the CDM as initialization data when CommonEncryption content is detected
102
+ * @returns An object that has a property named according to each of
103
+ * the detected key system UUIDs (e.g. 00000000-0000-0000-0000-0000000000)
104
+ * and a ArrayBuffer (the entire PSSH box) as the property value
105
+ *
106
+ * @beta
107
+ *
108
+ * @example
109
+ * {@includeCode ../../test/cenc/parsePsshList.test.ts#example}
110
+ */
111
+ function parsePsshList(data) {
112
+ if (!data) return {};
113
+ const dv = new DataView(data instanceof ArrayBuffer ? data : data.buffer);
114
+ const pssh = {};
115
+ let byteCursor = 0;
116
+ while (true) {
117
+ if (byteCursor >= dv.byteLength) break;
118
+ const boxStart = byteCursor;
119
+ const size = dv.getUint32(byteCursor);
120
+ const nextBox = byteCursor + size;
121
+ byteCursor += 4;
122
+ if (dv.getUint32(byteCursor) !== 1886614376) {
123
+ byteCursor = nextBox;
124
+ continue;
125
+ }
126
+ byteCursor += 4;
127
+ const version = dv.getUint8(byteCursor);
128
+ if (version !== 0 && version !== 1) {
129
+ byteCursor = nextBox;
130
+ continue;
131
+ }
132
+ byteCursor += 1;
133
+ byteCursor += 3;
134
+ let systemID = "";
135
+ let val;
136
+ for (let i = 0; i < 4; i++) {
137
+ val = dv.getUint8(byteCursor + i).toString(16);
138
+ systemID += val.length === 1 ? "0" + val : val;
139
+ }
140
+ byteCursor += 4;
141
+ systemID += "-";
142
+ for (let i = 0; i < 2; i++) {
143
+ val = dv.getUint8(byteCursor + i).toString(16);
144
+ systemID += val.length === 1 ? "0" + val : val;
145
+ }
146
+ byteCursor += 2;
147
+ systemID += "-";
148
+ for (let i = 0; i < 2; i++) {
149
+ val = dv.getUint8(byteCursor + i).toString(16);
150
+ systemID += val.length === 1 ? "0" + val : val;
151
+ }
152
+ byteCursor += 2;
153
+ systemID += "-";
154
+ for (let i = 0; i < 2; i++) {
155
+ val = dv.getUint8(byteCursor + i).toString(16);
156
+ systemID += val.length === 1 ? "0" + val : val;
157
+ }
158
+ byteCursor += 2;
159
+ systemID += "-";
160
+ for (let i = 0; i < 6; i++) {
161
+ val = dv.getUint8(byteCursor + i).toString(16);
162
+ systemID += val.length === 1 ? "0" + val : val;
163
+ }
164
+ byteCursor += 6;
165
+ systemID = systemID.toLowerCase();
166
+ byteCursor += 4;
167
+ pssh[systemID] = data.slice(boxStart, nextBox);
168
+ byteCursor = nextBox;
169
+ }
170
+ return pssh;
171
+ }
172
+
173
+ //#endregion
174
+ //#region src/cenc/getPsshForKeySystem.ts
175
+ /**
176
+ * Returns the PSSH box associated with the given key system from the concatenated
177
+ * list of PSSH boxes in the provided initData.
178
+ *
179
+ * @param uuid - The desired key system UUID
180
+ * @param initData - 'cenc' initialization data. Concatenated list of PSSH boxes.
181
+ * @returns The PSSH box ArrayBuffer corresponding to the given key system, or null if not found.
182
+ *
183
+ * @beta
184
+ *
185
+ * @example
186
+ * {@includeCode ../../test/cenc/getPsshForKeySystem.test.ts#example}
187
+ */
188
+ function getPsshForKeySystem(uuid, initData) {
189
+ if (!initData || !uuid) return null;
190
+ return parsePsshList(initData)[uuid.toLowerCase()] || null;
191
+ }
192
+
193
+ //#endregion
194
+ //#region src/cenc/parseInitDataFromContentProtection.ts
195
+ /**
196
+ * Parse a standard common encryption PSSH which contains a simple
197
+ * base64-encoding of the init data
198
+ *
199
+ * @param cpData - The ContentProtection element that may contain PSSH data.
200
+ * @param BASE64 - The BASE64 reference.
201
+ * @returns init data as an ArrayBuffer, or null if not found.
202
+ *
203
+ * @beta
204
+ *
205
+ * @example
206
+ * {@includeCode ../../test/cenc/parseInitDataFromContentProtection.test.ts#example}
207
+ */
208
+ function parseInitDataFromContentProtection(cpData, BASE64) {
209
+ if (cpData?.pssh && cpData.pssh) {
210
+ const cleanedText = cpData.pssh.replace(/\r?\n|\r/g, "").replace(/\s+/g, "");
211
+ return BASE64.decodeArray(cleanedText).buffer;
212
+ }
213
+ return null;
214
+ }
215
+
216
+ //#endregion
217
+ //#region src/keysystem/createMediaKeySystemConfiguration.ts
218
+ /**
219
+ * Creates a valid KeySystemConfiguration from supported audio and video capabilities.
220
+ *
221
+ * @param supportedAudio - supported audio capabilities.
222
+ * @param supportedVideo - supported video capabilities.
223
+ * @returns KeySystemConfiguration object.
224
+ *
225
+ * @beta
226
+ *
227
+ * @example
228
+ * {@includeCode ../../test/keysystem/createMediaKeySystemConfiguration.test.ts#example}
229
+ */
230
+ function createMediaKeySystemConfiguration(supportedAudio, supportedVideo) {
231
+ const config = {};
232
+ if (supportedAudio && supportedAudio.length > 0) config.audioCapabilities = supportedAudio;
233
+ if (supportedVideo && supportedVideo.length > 0) config.videoCapabilities = supportedVideo;
234
+ config.distinctiveIdentifier = "optional";
235
+ config.persistentState = "optional";
236
+ config.sessionTypes = ["temporary"];
237
+ return config;
238
+ }
239
+
240
+ //#endregion
241
+ //#region src/keysystem/getKeySystemAccess.ts
242
+ /**
243
+ * Attempts to get key system access using requestMediaKeySystemAccess from EME.
244
+ *
245
+ * @param requests - An array of key system access requests.
246
+ * @returns MediaKeySystemAccess object if successful, or null if no system is supported.
247
+ *
248
+ * @beta
249
+ */
250
+ async function getKeySystemAccess(requests) {
251
+ for (const { keySystem, configurations } of requests) try {
252
+ return await navigator.requestMediaKeySystemAccess(keySystem, configurations);
253
+ } catch {}
254
+ return null;
255
+ }
256
+
257
+ //#endregion
258
+ //#region src/keysystem/getSupportedKeySystemConfiguration.ts
259
+ const isTypeSupported = typeof MediaKeys !== "undefined" && typeof MediaKeys.isTypeSupported === "function" ? MediaKeys.isTypeSupported : void 0;
260
+ /**
261
+ * Filters and returns the supported key system configuration for a given system string.
262
+ *
263
+ * @param keySystem - Key system string such as 'com.widevine.alpha'
264
+ * @param configs - An array of key system configurations.
265
+ * @returns The first supported configuration or null if none are supported.
266
+ *
267
+ * @beta
268
+ */
269
+ function getSupportedKeySystemConfiguration(keySystem, configs) {
270
+ if (!configs || typeof isTypeSupported === "undefined") return {
271
+ supportedAudio: [],
272
+ supportedVideo: []
273
+ };
274
+ for (const config of configs) {
275
+ const audios = config.audioCapabilities || [];
276
+ const videos = config.videoCapabilities || [];
277
+ const supportedAudio = audios.filter((audio) => isTypeSupported(keySystem, audio.contentType ?? ""));
278
+ const supportedVideo = videos.filter((video) => isTypeSupported(keySystem, video.contentType ?? ""));
279
+ const hasAudio = supportedAudio.length > 0;
280
+ const hasVideo = supportedVideo.length > 0;
281
+ if (hasAudio || hasVideo) return {
282
+ supportedAudio,
283
+ supportedVideo
284
+ };
285
+ }
286
+ return {
287
+ supportedAudio: [],
288
+ supportedVideo: []
289
+ };
290
+ }
291
+
292
+ //#endregion
293
+ //#region src/keysystem/getLegacyKeySystemAccess.ts
294
+ /**
295
+ * Fallback method to get key system access using legacy MediaKeys.isTypeSupported().
296
+ *
297
+ * @param requests - An array of key system access requests.
298
+ * @returns A KeySystemAccess object if successful, or null if no system is supported.
299
+ *
300
+ * @beta
301
+ */
302
+ function getLegacyKeySystemAccess(requests) {
303
+ for (const { keySystem, configurations } of requests) {
304
+ const supportedConfig = getSupportedKeySystemConfiguration(keySystem, configurations);
305
+ if (supportedConfig) return {
306
+ keySystem,
307
+ configurations: [createMediaKeySystemConfiguration(supportedConfig.supportedAudio, supportedConfig.supportedVideo)]
308
+ };
309
+ }
310
+ return null;
311
+ }
312
+
313
+ //#endregion
314
+ //#region src/fairplay/concatInitDataIdAndCertificate.ts
315
+ /**
316
+ * Concatenates InitData, ID, and Certificate for FairPlay DRM.
317
+ *
318
+ * @param initData - The initialization data (PSSH box)
319
+ * @param id - The content ID (string or Uint16Array)
320
+ * @param cert - The application certificate (Uint8Array)
321
+ * @returns A Uint8Array containing the concatenated data
322
+ *
323
+ * @beta
324
+ *
325
+ * @example
326
+ * {@includeCode ../../test/fairplay/concatInitDataIdAndCertificate.test.ts#example}
327
+ */
328
+ function concatInitDataIdAndCertificate(initData, id, cert) {
329
+ if (typeof id === "string") id = stringToUint16(id);
330
+ const buffer = new ArrayBuffer(initData.byteLength + 4 + id.byteLength + 4 + cert.byteLength);
331
+ const dataView = new DataView(buffer);
332
+ let offset = 0;
333
+ new Uint8Array(buffer, offset, initData.byteLength).set(initData);
334
+ offset += initData.byteLength;
335
+ dataView.setUint32(offset, id.byteLength, true);
336
+ offset += 4;
337
+ new Uint16Array(buffer, offset, id.length).set(id);
338
+ offset += id.byteLength;
339
+ dataView.setUint32(offset, cert.byteLength, true);
340
+ offset += 4;
341
+ new Uint8Array(buffer, offset, cert.byteLength).set(cert);
342
+ return new Uint8Array(buffer);
343
+ }
344
+
345
+ //#endregion
346
+ //#region src/fairplay/decodeFairPlayLicense.ts
347
+ /**
348
+ * Decodes a FairPlay DRM license response.
349
+ *
350
+ * @param response - The license response, either a base64 string or ArrayBuffer
351
+ * @returns A Uint8Array containing the decoded license
352
+ *
353
+ * @beta
354
+ *
355
+ * @example
356
+ * {@includeCode ../../test/fairplay/decodeFairPlayLicense.test.ts#example}
357
+ */
358
+ function decodeFairPlayLicense(response) {
359
+ return typeof response === "string" ? decodeBase64(response) : new Uint8Array(response);
360
+ }
361
+
362
+ //#endregion
363
+ //#region src/fairplay/extractContentId.ts
364
+ /**
365
+ * Extracts the content ID from InitData using skd:// URI or query parameters.
366
+ *
367
+ * @param initData - The initialization data (PSSH box)
368
+ * @returns The extracted content ID
369
+ *
370
+ * @beta
371
+ *
372
+ * @example
373
+ * {@includeCode ../../test/fairplay/extractContentId.test.ts#example}
374
+ */
375
+ function extractContentId(initData, encoding = UTF_16) {
376
+ return decodeText(initData, { encoding }).split("skd://")[1] || "";
377
+ }
378
+
379
+ //#endregion
380
+ //#region src/fairplay/getId.ts
381
+ /**
382
+ * Extracts the content ID from the license server URL or InitData.
383
+ *
384
+ * @param licenseServerUrl - The license server URL
385
+ * @param initData - The initialization data (PSSH box)
386
+ * @param queryParam - The query parameter key to extract (default: 'ContentId')
387
+ * @returns The extracted content ID as a string or null if not found
388
+ *
389
+ * @beta
390
+ *
391
+ * @example
392
+ * {@includeCode ../../test/fairplay/getId.test.ts#example}
393
+ */
394
+ function getId(licenseServerUrl, initData, queryParam = "ContentId") {
395
+ try {
396
+ const url = new URL(licenseServerUrl);
397
+ return new URLSearchParams(url.search).get(queryParam) || extractContentId(initData);
398
+ } catch {
399
+ return extractContentId(initData);
400
+ }
401
+ }
402
+
403
+ //#endregion
404
+ //#region src/fairplay/getLicenseServerUrl.ts
405
+ /**
406
+ * Retrieves the FairPlay license server URL from InitData.
407
+ *
408
+ * @param initData - The initialization data (PSSH box)
409
+ * @returns The license server URL as a string
410
+ *
411
+ * @beta
412
+ *
413
+ * @example
414
+ * {@includeCode ../../test/fairplay/getLicenseServerUrl.test.ts#example}
415
+ */
416
+ function getLicenseServerUrl(initData) {
417
+ let initDataString = "";
418
+ for (let i = 0; i < initData.length; i++) if (initData[i] !== 0) initDataString += String.fromCharCode(initData[i]);
419
+ const match = initDataString.match(/skd:\/\/([^"\s]+)/);
420
+ return match ? `https://${match[1]}` : "";
421
+ }
422
+
423
+ //#endregion
424
+ //#region src/common/CHALLENGE.ts
425
+ /**
426
+ * License Challenge.
427
+ *
428
+ *
429
+ * @beta
430
+ */
431
+ const CHALLENGE = "Challenge";
432
+
433
+ //#endregion
434
+ //#region src/common/PLAYREADY_KEY_MESSAGE.ts
435
+ /**
436
+ * Playready Key Message.
437
+ *
438
+ *
439
+ * @beta
440
+ */
441
+ const PLAYREADY_KEY_MESSAGE = "PlayReadyKeyMessage";
442
+
443
+ //#endregion
444
+ //#region src/playready/getLicenseRequestFromMessage.ts
445
+ /**
446
+ * Gets the PlayReady license request from the MediaKeyMessageEvent.
447
+ *
448
+ * @param message - An ArrayBuffer from the content decryption module.
449
+ * @param encoding - The message encoding type. Default is UTF-16.
450
+ * @returns The license request as an ArrayBuffer.
451
+ *
452
+ * @beta
453
+ *
454
+ * @example
455
+ * {@includeCode ../../test/playready/getLicenseRequestFromMessage.test.ts#example}
456
+ */
457
+ function getLicenseRequestFromMessage(message, encoding = UTF_16) {
458
+ if (encoding === UTF_16 && message?.byteLength % 2 === 1) return message;
459
+ const playReadyKeyMessage = getElementsByName(parseXml(decodeText(message, { encoding })), PLAYREADY_KEY_MESSAGE)[0];
460
+ if (!playReadyKeyMessage) return message;
461
+ const challengeValue = getElementsByName(playReadyKeyMessage, CHALLENGE)[0]?.childNodes[0]?.nodeValue;
462
+ if (challengeValue) return decodeBase64(challengeValue).buffer;
463
+ return message;
464
+ }
465
+
466
+ //#endregion
467
+ //#region src/common/CONTENT_TYPE.ts
468
+ /**
469
+ * Content-Type header.
470
+ *
471
+ *
472
+ * @beta
473
+ */
474
+ const CONTENT_TYPE = "Content-Type";
475
+
476
+ //#endregion
477
+ //#region src/common/HTTP_HEADERS.ts
478
+ /**
479
+ * Playready HTTP Headers.
480
+ *
481
+ *
482
+ * @beta
483
+ */
484
+ const HTTP_HEADERS = "HttpHeaders";
485
+
486
+ //#endregion
487
+ //#region src/common/TEXT_XML_UTF8.ts
488
+ /**
489
+ * XML formatted, UTF-8 encoded, text header.
490
+ *
491
+ *
492
+ * @beta
493
+ */
494
+ const TEXT_XML_UTF8 = "text/xml; charset=utf-8";
495
+
496
+ //#endregion
497
+ //#region src/playready/getRequestHeadersFromMessage.ts
498
+ /**
499
+ * Gets the PlayReady license request headers from the MediaKeyMessageEvent.
500
+ *
501
+ * @param message - An ArrayBuffer from the content decryption module.
502
+ * @param encoding - The message encoding type. Default is UTF-16.
503
+ * @returns Request headers.
504
+ *
505
+ * @beta
506
+ *
507
+ * @example
508
+ * {@includeCode ../../test/playready/getRequestHeadersFromMessage.test.ts#example}
509
+ */
510
+ function getRequestHeadersFromMessage(message, encoding = UTF_16) {
511
+ const headers = {};
512
+ if (encoding === UTF_16 && message && message.byteLength % 2 === 1) {
513
+ headers[CONTENT_TYPE] = TEXT_XML_UTF8;
514
+ return headers;
515
+ }
516
+ const httpHeaders = getElementsByName(parseXml(decodeText(message, { encoding })), HTTP_HEADERS)[0]?.childNodes;
517
+ if (!httpHeaders) return headers;
518
+ for (const header of httpHeaders) {
519
+ const name = getElementsByName(header, "name")[0]?.childNodes[0]?.nodeValue;
520
+ const value = getElementsByName(header, "value")[0]?.childNodes[0]?.nodeValue;
521
+ if (name && value) headers[name] = value;
522
+ }
523
+ if (headers.hasOwnProperty("Content")) {
524
+ headers[CONTENT_TYPE] = headers["Content"];
525
+ delete headers["Content"];
526
+ }
527
+ if (!headers.hasOwnProperty(CONTENT_TYPE)) headers[CONTENT_TYPE] = TEXT_XML_UTF8;
528
+ return headers;
529
+ }
530
+
531
+ //#endregion
532
+ //#region src/playready/toBigEndianKeyId.ts
533
+ /**
534
+ * Converts a 16-byte key ID from little-endian to big-endian format.
535
+ *
536
+ * @param keyId - The little-endian key ID to convert.
537
+ * @returns The big-endian representation of the key ID.
538
+ *
539
+ * @beta
540
+ *
541
+ * @example
542
+ * {@includeCode ../../test/playready/toBigEndianKeyId.test.ts#example}
543
+ */
544
+ function toBigEndianKeyId(keyId) {
545
+ if (keyId.byteLength !== 16) return keyId;
546
+ const buffer = keyId.slice(0);
547
+ const dataView = new DataView(buffer);
548
+ dataView.setUint32(0, dataView.getUint32(0, true), false);
549
+ dataView.setUint16(4, dataView.getUint16(4, true), false);
550
+ dataView.setUint16(6, dataView.getUint16(6, true), false);
551
+ return buffer;
552
+ }
553
+
554
+ //#endregion
555
+ //#region src/common/CLEAR_KEY_SYSTEM.ts
556
+ /**
557
+ * Clear Key System.
558
+ *
559
+ *
560
+ * @beta
561
+ */
562
+ const CLEAR_KEY_SYSTEM = "org.w3.clearkey";
563
+
564
+ //#endregion
565
+ //#region src/common/CLEAR_KEY_UUID.ts
566
+ /**
567
+ * Clear Key UUID.
568
+ *
569
+ *
570
+ * @beta
571
+ */
572
+ const CLEAR_KEY_UUID = "e2719d58-a985-b3c9-781a-b030af78d30e";
573
+
574
+ //#endregion
575
+ //#region src/common/EncryptionScheme.ts
576
+ /**
577
+ * Encryption schemes.
578
+ *
579
+ *
580
+ * @beta
581
+ */
582
+ const EncryptionScheme = {
583
+ CENC,
584
+ CBCS
585
+ };
586
+
587
+ //#endregion
588
+ //#region src/common/EXPIRED.ts
589
+ /**
590
+ * Expired Media Key Status.
591
+ *
592
+ *
593
+ * @beta
594
+ */
595
+ const EXPIRED = "expired";
596
+
597
+ //#endregion
598
+ //#region src/common/FAIRPLAY_KEY_SYSTEM.ts
599
+ /**
600
+ * FairPlay Key System.
601
+ *
602
+ *
603
+ * @beta
604
+ */
605
+ const FAIRPLAY_KEY_SYSTEM = "com.apple.fps.1_0";
606
+
607
+ //#endregion
608
+ //#region src/common/FAIRPLAY_UUID.ts
609
+ /**
610
+ * FairPlay UUID.
611
+ *
612
+ *
613
+ * @beta
614
+ */
615
+ const FAIRPLAY_UUID = "29701fe4-3cc7-4a34-8c5b-ae90c7439a47";
616
+
617
+ //#endregion
618
+ //#region src/common/HW_SECURE_ALL.ts
619
+ /**
620
+ * Hardware Secure All Robustness.
621
+ *
622
+ *
623
+ * @beta
624
+ */
625
+ const HW_SECURE_ALL = "HW_SECURE_ALL";
626
+
627
+ //#endregion
628
+ //#region src/common/HW_SECURE_CRYPTO.ts
629
+ /**
630
+ * Hardware Secure Crypto Robustness.
631
+ *
632
+ *
633
+ * @beta
634
+ */
635
+ const HW_SECURE_CRYPTO = "HW_SECURE_CRYPTO";
636
+
637
+ //#endregion
638
+ //#region src/common/HW_SECURE_DECODE.ts
639
+ /**
640
+ * Hardware Secure Decode Robustness.
641
+ *
642
+ *
643
+ * @beta
644
+ */
645
+ const HW_SECURE_DECODE = "HW_SECURE_DECODE";
646
+
647
+ //#endregion
648
+ //#region src/common/INDIVIDUALIZATION_REQUEST.ts
649
+ /**
650
+ * Individualization Request.
651
+ *
652
+ *
653
+ * @beta
654
+ */
655
+ const INDIVIDUALIZATION_REQUEST = "individualization-request";
656
+
657
+ //#endregion
658
+ //#region src/common/KEYIDS.ts
659
+ /**
660
+ * Key IDs.
661
+ *
662
+ *
663
+ * @beta
664
+ */
665
+ const KEYIDS = "keyids";
666
+
667
+ //#endregion
668
+ //#region src/common/WEBM.ts
669
+ /**
670
+ * WEBM.
671
+ *
672
+ *
673
+ * @beta
674
+ */
675
+ const WEBM = "webm";
676
+
677
+ //#endregion
678
+ //#region src/common/InitializationDataType.ts
679
+ /**
680
+ * Initialization Data Type.
681
+ *
682
+ *
683
+ * @beta
684
+ */
685
+ const InitializationDataType = {
686
+ CENC,
687
+ CBCS,
688
+ KEYIDS,
689
+ WEBM
690
+ };
691
+
692
+ //#endregion
693
+ //#region src/common/INTERNAL_ERROR.ts
694
+ /**
695
+ * Internal Error Media Key Status.
696
+ *
697
+ *
698
+ * @beta
699
+ */
700
+ const INTERNAL_ERROR = "internal-error";
701
+
702
+ //#endregion
703
+ //#region src/common/LICENSE_ACQUISITION.ts
704
+ /**
705
+ * License Acquisition.
706
+ *
707
+ *
708
+ * @beta
709
+ */
710
+ const LICENSE_ACQUISITION = "LicenseAcquisition";
711
+
712
+ //#endregion
713
+ //#region src/common/LICENSE_RELEASE.ts
714
+ /**
715
+ * License Release.
716
+ *
717
+ *
718
+ * @beta
719
+ */
720
+ const LICENSE_RELEASE = "license-release";
721
+
722
+ //#endregion
723
+ //#region src/common/LICENSE_RENEWAL.ts
724
+ /**
725
+ * License Renewal.
726
+ *
727
+ *
728
+ * @beta
729
+ */
730
+ const LICENSE_RENEWAL = "license-renewal";
731
+
732
+ //#endregion
733
+ //#region src/common/LICENSE_REQUEST.ts
734
+ /**
735
+ * License Request.
736
+ *
737
+ *
738
+ * @beta
739
+ */
740
+ const LICENSE_REQUEST = "license-request";
741
+
742
+ //#endregion
743
+ //#region src/common/MediaKeyMessageType.ts
744
+ /**
745
+ * Media Key Message Types.
746
+ *
747
+ *
748
+ * @beta
749
+ */
750
+ const MediaKeyMessageType = {
751
+ LICENSE_REQUEST,
752
+ LICENSE_RENEWAL,
753
+ LICENSE_RELEASE,
754
+ INDIVIDUALIZATION_REQUEST
755
+ };
756
+
757
+ //#endregion
758
+ //#region src/common/OUTPUT_DOWNSCALED.ts
759
+ /**
760
+ * Output Downscaled Media Key Status.
761
+ *
762
+ *
763
+ * @beta
764
+ */
765
+ const OUTPUT_DOWNSCALED = "output-downscaled";
766
+
767
+ //#endregion
768
+ //#region src/common/OUTPUT_RESTRICTED.ts
769
+ /**
770
+ * Output Restricted Media Key Status.
771
+ *
772
+ *
773
+ * @beta
774
+ */
775
+ const OUTPUT_RESTRICTED = "output-restricted";
776
+
777
+ //#endregion
778
+ //#region src/common/RELEASED.ts
779
+ /**
780
+ * Released Media Key Status.
781
+ *
782
+ *
783
+ * @beta
784
+ */
785
+ const RELEASED = "released";
786
+
787
+ //#endregion
788
+ //#region src/common/STATUS_PENDING.ts
789
+ /**
790
+ * Status Pending Media Key Status.
791
+ *
792
+ *
793
+ * @beta
794
+ */
795
+ const STATUS_PENDING = "status-pending";
796
+
797
+ //#endregion
798
+ //#region src/common/USABLE.ts
799
+ /**
800
+ * Usable Media Key Status.
801
+ *
802
+ *
803
+ * @beta
804
+ */
805
+ const USABLE = "usable";
806
+
807
+ //#endregion
808
+ //#region src/common/MediaKeyStatus.ts
809
+ /**
810
+ * Media Key Statuses.
811
+ *
812
+ *
813
+ * @beta
814
+ */
815
+ const MediaKeyStatus = {
816
+ USABLE,
817
+ EXPIRED,
818
+ RELEASED,
819
+ OUTPUT_RESTRICTED,
820
+ OUTPUT_DOWNSCALED,
821
+ STATUS_PENDING,
822
+ INTERNAL_ERROR
823
+ };
824
+
825
+ //#endregion
826
+ //#region src/common/PLAYREADY_KEY_SYSTEM.ts
827
+ /**
828
+ * Playready Key System.
829
+ *
830
+ *
831
+ * @beta
832
+ */
833
+ const PLAYREADY_KEY_SYSTEM = "com.microsoft.playready";
834
+
835
+ //#endregion
836
+ //#region src/common/PLAYREADY_RECOMMENDATION_KEY_SYSTEM.ts
837
+ /**
838
+ * Playready Recommendation Key System.
839
+ *
840
+ *
841
+ * @beta
842
+ */
843
+ const PLAYREADY_RECOMMENDATION_KEY_SYSTEM = "com.microsoft.playready.recommendation";
844
+
845
+ //#endregion
846
+ //#region src/common/PLAYREADY_UUID.ts
847
+ /**
848
+ * Playready UUID.
849
+ *
850
+ *
851
+ * @beta
852
+ */
853
+ const PLAYREADY_UUID = "9a04f079-9840-4286-ab92-e65be0885f95";
854
+
855
+ //#endregion
856
+ //#region src/common/SW_SECURE_CRYPTO.ts
857
+ /**
858
+ * Software Secure Crypto Robustness.
859
+ *
860
+ *
861
+ * @beta
862
+ */
863
+ const SW_SECURE_CRYPTO = "SW_SECURE_CRYPTO";
864
+
865
+ //#endregion
866
+ //#region src/common/SW_SECURE_DECODE.ts
867
+ /**
868
+ * Software Secure Decode Robustness.
869
+ *
870
+ *
871
+ * @beta
872
+ */
873
+ const SW_SECURE_DECODE = "SW_SECURE_DECODE";
874
+
875
+ //#endregion
876
+ //#region src/common/W3C_CLEAR_KEY_UUID.ts
877
+ /**
878
+ * W3C Clear Key UUID.
879
+ *
880
+ *
881
+ * @beta
882
+ */
883
+ const W3C_CLEAR_KEY_UUID = "1077efec-c0b2-4d02-ace3-3c1e52e2fb4b";
884
+
885
+ //#endregion
886
+ //#region src/common/WIDEVINE_KEY_SYSTEM.ts
887
+ /**
888
+ * Widevine Key System.
889
+ *
890
+ *
891
+ * @beta
892
+ */
893
+ const WIDEVINE_KEY_SYSTEM = "com.widevine.alpha";
894
+
895
+ //#endregion
896
+ //#region src/common/WIDEVINE_UUID.ts
897
+ /**
898
+ * Widevine UUID.
899
+ *
900
+ *
901
+ * @beta
902
+ */
903
+ const WIDEVINE_UUID = "edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";
904
+
905
+ //#endregion
906
+ //#region src/common/WidevineRobustness.ts
907
+ /**
908
+ * Widevine Robustness.
909
+ *
910
+ *
911
+ * @beta
912
+ */
913
+ const WidevineRobustness = {
914
+ SW_SECURE_CRYPTO,
915
+ SW_SECURE_DECODE,
916
+ HW_SECURE_CRYPTO,
917
+ HW_SECURE_DECODE,
918
+ HW_SECURE_ALL
919
+ };
920
+
921
+ //#endregion
922
+ export { CBCS, CENC, CHALLENGE, CLEAR_KEY_SYSTEM, CLEAR_KEY_UUID, CONTENT_TYPE, EXPIRED, EncryptionScheme, FAIRPLAY_KEY_SYSTEM, FAIRPLAY_UUID, HTTP_HEADERS, HW_SECURE_ALL, HW_SECURE_CRYPTO, HW_SECURE_DECODE, INDIVIDUALIZATION_REQUEST, INTERNAL_ERROR, InitializationDataType, KEYIDS, LICENSE_ACQUISITION, LICENSE_RELEASE, LICENSE_RENEWAL, LICENSE_REQUEST, MP4_PROTECTION_SCHEME, MediaKeyMessageType, MediaKeyStatus, OUTPUT_DOWNSCALED, OUTPUT_RESTRICTED, PLAYREADY_KEY_MESSAGE, PLAYREADY_KEY_SYSTEM, PLAYREADY_RECOMMENDATION_KEY_SYSTEM, PLAYREADY_UUID, RELEASED, STATUS_PENDING, SW_SECURE_CRYPTO, SW_SECURE_DECODE, TEXT_XML_UTF8, USABLE, W3C_CLEAR_KEY_UUID, WEBM, WIDEVINE_KEY_SYSTEM, WIDEVINE_UUID, WidevineRobustness, concatInitDataIdAndCertificate, createMediaKeySystemConfiguration, decodeFairPlayLicense, extractContentId, findCencContentProtection, getId, getKeySystemAccess, getLegacyKeySystemAccess, getLicenseRequestFromMessage, getLicenseServerUrl, getLicenseServerUrlFromContentProtection, getPsshData, getPsshForKeySystem, getRequestHeadersFromMessage, getSupportedKeySystemConfiguration, parseInitDataFromContentProtection, parsePsshList, toBigEndianKeyId };
73
923
  //# sourceMappingURL=index.js.map