58 Commits

Author SHA1 Message Date
Lu Chen
c387750897 Add AES-ECB as a supported encryption mode in ECMG 2021-09-07 18:08:13 -07:00
Lu Chen
b3a5fff77d Entitlement rotation support
Updates also include:
- Add APIs to query current Simulcrypt channel & stream status;
- EMM format change (used only to carry fingerprinting and service
blocking info);
- Key fetcher example to use curl key fetcher.
2021-06-29 14:51:49 -07:00
Lu Chen
f04e15c48c Fix a build file 2021-03-04 15:46:32 -08:00
Lu Chen
62777d7d3b Support for group license
Content keys in ECM v3 can now additionally be encrypted by group
entitlement keys.
2021-03-04 14:35:08 -08:00
Lu Chen
79e39b482d Add support for Widevine ECM v3
Widevine ECM v3 is redesigned mainly based on protobuf, and supports new features including carrying fingerprinting and service blocking information. Existing clients must upgrade the Widevine CAS plugin to use the new ECM v3.
2020-12-14 09:49:52 -08:00
Lu Chen
ad81d517a5 Fix build to include ecmg example 2020-09-25 11:33:21 -07:00
Lu Chen
eb0b70b26b Fix build to include ecmg example 2020-09-25 10:48:59 -07:00
Lu Chen
90bbcb4b4d Add custom key fetcher callback to Simulcrypt ECMG 2020-09-18 18:34:38 -07:00
Lu Chen
02c1c8adf5 Minor fix 2020-09-16 11:31:34 -07:00
Lu Chen
28de00389b Add EMMG to carry fingerprinting and service blocking info 2020-09-15 10:15:51 -07:00
Lu Chen
06c81c67d2 Add EMMG to carry fingerprinting and service blocking info 2020-09-15 09:57:43 -07:00
Lu Chen
3707ffffee Add EMMG to carry fingerprinting and service blocking info 2020-09-15 09:48:33 -07:00
Lu Chen
1ce468e5ba Add EMMG to carry fingerprinting and service blocking info 2020-09-15 09:16:59 -07:00
Lu Chen
3d8f585313 Fix build 2020-07-24 19:46:36 -07:00
Lu Chen
785df31261 Update Simulcrypt ECMg 2020-07-24 18:17:12 -07:00
Lu Chen
ed5a1d5db1 Minor change 2020-02-25 13:16:44 -08:00
Lu Chen
d71d62d272 Update SimulCrypt ECMG on injecting entitlement keys 2020-02-14 15:46:03 -08:00
Lu Chen
688dd62dae Fix external build issue 2020-02-14 14:08:15 -08:00
Lu Chen
77b2fcc678 Decouple key fetcher; Update ECMG API 2020-02-11 18:08:06 -08:00
Lu Chen
ac564bb46f Update includes and BUILD 2020-02-05 11:21:51 -08:00
Lu Chen
5c42bf9b7f Replace hardcoded parameters 2020-01-27 16:05:15 -08:00
Fang Yu
cdd4d97e0f Change googletest_repo version back 2019-01-30 14:04:06 -08:00
Fang Yu
5d5c91c6e6 Revert googletest_repo version 2019-01-30 13:47:57 -08:00
Fang Yu
cec860dc52 IWYU tool
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=231629062
2019-01-30 13:25:05 -08:00
Fang Yu
f23c6a1760 Rename CasEcm and CasEcmGenerator classes to Ecm and EcmGenerator.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=230929673
2019-01-30 10:24:31 -08:00
Fang Yu
6a1fcfa108 1) Removes dependency of common/status.h from wv_cas_types.
2) Do not use glogs in example binary code.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=229984175
2019-01-18 13:32:11 -08:00
Fang Yu
c20687acf3 1) Do not use gflags in the example binary code.
2) Also surface wv_cas_key_fetcher_example to partner.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=229965302
2019-01-18 11:43:12 -08:00
Fang Yu
e7173c82cd 1) Change return type to WvCasStatus for functions in wv_cas_types.cc.
2) Add a binary wv_cas_types_example.
3) Surface wv_cas_key_fetcher *source code* to partner to serve as an example of how they would make a HTTP request to acquire an entitlement key from license server.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=229953562
2019-01-18 10:41:13 -08:00
Fang Yu
6e1f377329 Create some utility types/functions to help partners to create CasEncryptionRequest in JSON format and process CasEncryptionResponse in JSON format.
The idea is that partner can take the CasEncryptionRequest in JSON to construct a signed license request, send it to Widevine license service (using whatever tool they have); and once they have a response, they can use another utility here to parse and understand what is in the response JSON.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=229422648
2019-01-15 15:16:51 -08:00
Fang Yu
4f5c02fb39 Makes GeneratePrivateData() public
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=229239892
2019-01-14 13:26:23 -08:00
Fang Yu
e35ce1c32e Update hardcoded default content_id and provider to match the test CAS content we have setup in Staging and UAT.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=226935596
2018-12-26 15:22:36 -08:00
Fang Yu
bc68878bdf Minimal implementation of Widevine MediaCAS ECMG.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=226515998
2018-12-21 14:25:01 -08:00
Fang Yu
7487ce5aa8 Manually copy changes from output generated by 'moe test' 2018-12-07 17:03:39 -08:00
Fang Yu
ce7124219a third_party/curl -> "@curl_repo//:curl", 2018-12-07 16:57:15 -08:00
Fang Yu
ad530d0f9e util:status -> common:status 2018-12-07 16:54:25 -08:00
Fang Yu
9750711fbd util/status.h -> common/status.h 2018-12-07 16:52:30 -08:00
Fang Yu
f3be3be9dd util:status -> common:status 2018-12-07 16:45:21 -08:00
Fang Yu
121d554c20 Change order of loading certificates from pk7 cert
-------------
Add libcurl to media_cas_packager_sdk. libcurl will later be used by a key fetcher to retrieve entitlement key from License Server using a HTTP request.

-------------
Add a function named parsehelper to parse DCSL from the key smith response.

-------------
Move wv_cas_key_fetcher to media_cas_packager_sdk so partners can use it request entitlement keys from License Server.

-------------
Add pkcs7 write method to x509_cert.cc

-------------
Update boringssl_repo to latest in master-with-bazel

-------------
Add a TsPacket class to media_cas_packager_sdk to allow the construction of a ECM TS packet in the SDK.

-------------
Move InsertEcm() from our internal CAS directory to the media_cas_packager_sdk, to be used to build a ECM TS packet by the SDK.

-------------
Add METADATA in common folder

-------------
Refactoring of certificate verification into DrmRootCertificate.

-------------
Extend the default duration of leaf certificates.

-------------
Fix moe_test

-------------
Add a new method to WvCasEcm to allow partner to create a TS packet carrying the generated ECM.

-------------
Change from SHA1 to SHA256 for Cast certificates

-------------
Update crypto mode enumeration to match WV ECM document

-------------
Fix the way we set the validity dates

-------------
Move exported_root/util/status to common/ to prepare for util::Status migration

Also added constructor/operator to copy from/to util::Status.

-------------
Add GenerateDCSLrequest function to certificate_util.h.

-------------
Fix build break

-------------
Allow 'table_id' (in the section header) be specified by caller of SDK method WvCasEcm::GenerateTsPacket().

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=224535399
2018-12-07 16:40:33 -08:00
Fang Yu
fb96918196 Print uint16 as \x01 not \x1
-------------
Allow the usage of different entitlement keys to wrap even vs. odd key.

-------------
(1) Change parameter type from 'string' to 'const char* const' to handle possible '\x00' (Nul char) byte in the input.
(2) Check size of generated ECM string, return error if the size is not as expected.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=220172089
2018-11-05 14:26:39 -08:00
Fang Yu
581ae9080d Be clear it is DVB_CSA2 we are supporting right now. There shouldn't be anyone using DVB_CSA anymore, DVB_CSA3 is in the future.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219867168
2018-11-02 16:23:11 -07:00
Fang Yu
0441c0b8d4 Add a few more checks for "key length" and "iv length".
-------------
Pad key value when crypto_mode is DVB_CSA, so that the key length is always 16 bytes.

-------------
Minor comment and example code update.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219860612
2018-11-02 14:23:38 -07:00
Fang Yu
5ac3c5a95b (1) Move the CryptoMode enum definition to media_cas_packager_sdk partners can use it when calling libraries in the SDK.
(2) Add a new enum value for kDvbCsa.
(3) Allow caller to specify CTR, CBC, as well as CSA when using the ecm genertor from the SDK.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219707788
2018-11-01 15:24:51 -07:00
Fang Yu
8c474ebada Do NOT expose the Simulcrypt client/server binary in the SDK yet, they are not ready yet.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219539981
2018-10-31 14:42:00 -07:00
Fang Yu
cb773116a6 Move WV CAS Descriptor Generator to the media_cas_packager_sdk.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219162536
2018-10-29 15:05:08 -07:00
Fang Yu
051a520776 Create a WvCasStatus to be used as return type of libraries in media_cas_packager_sdk.
Following example: []/video/widevine/export/provisioning_sdk/public/provisioning_status.h
and
[]/video/widevine/export/exported_root/util/status.h

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=218918745
2018-10-26 15:00:41 -07:00
Fang Yu
70f62ed75e (1) Return a boolean instead of util::Status for methods in wv_cas_ecm.h
(2) Update wv_cas_ecm_example to NOT depend on ABSL

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=218884631
2018-10-26 11:23:12 -07:00
Fang Yu
d2f5df0c9f Adds 'virtual' and 'const' modifiers to methods in wv_cas_ecm.
-------------
Expose header files under export/exported_root/util in media_cas_packager_sdk because util::Status is used in wv_cas_ecm.h

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=218632176
2018-10-24 22:15:58 -07:00
Fang Yu
7652549f65 Merge branch 'master' of https://widevine-partner.googlesource.com/media_cas_packager_sdk_source into moe_writing_branch_from_947b950d950a5a5777a84d953e88af7358e3086c 2018-10-23 12:02:31 -07:00
Fang Yu
2f1551c1ee Do not reference internal header files within wv_cas_ecm.h
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=218363187
2018-10-23 12:01:53 -07:00
Fang Yu
b001561bc4 Merge branch 'master' of https://widevine-partner.googlesource.com/media_cas_packager_sdk_source into moe_writing_branch_from_fcdd9fa38cb2674e34790e8360af4722a09a0927 2018-10-22 13:29:15 -07:00