Widevine Factory Extraction Tool This tool extracts the BCC and generates the Certificate Signing Request (CSR) needed to be uploaded for Prov4 device registration. CSR extraction instructions: 1. Prepare the example_main.cpp file: - Write or modify the main() function in example_main.cpp according to your needs. - Ensure that all required fields in the client_info structure are filled in correctly. Refer to the comments within the main() function in example_main.cpp for detailed instructions and field descriptions. 2. Compile: - Option 1: Command-line compilation - Under the directory factory_upload_tool/ce, run: clang++ *.cpp ../common/src/*.cpp ../../util/src/string_conversions.cpp -ldl -rdynamic -I../../util/include -I../../oemcrypto/include -I../common/include -o wv_factory_extractor This command compiles all .cpp files into an executable named wv_factory_extractor in current directory. - Option 2: Using the provided Makefile - Under the directory factory_upload_tool/ce, run: `make all` - To enable the BCC validator, compile with: `make USE_VALIDATOR=y all` Note that the BCC validator takes dependency of `cppbor` and `boringssl` library from `third_party` directory. - The compiled executable will be located in the out/wv_factory_extractor directory under the CDM root directory. 3. Specify the location of liboemcrypto.so: - Replacing /path/to/ with the actual path to the liboemcrypto.so file: export LIBOEMCRYPTO_PATH=/path/to/liboemcrypto.so 4. Run the wv_factory_extractor tool: - To output the CSR to a file ready for uploading, under the output directory, run `./wv_factory_extractor > csr.json` - To run BCC validation and view the results in console output, run `./wv_factory_extractor --validate` - If BCC validator is enabled at compile time, it will print the parsed BCC and the validation results. Uploading instructions: 1. Upload the `csr.json` file: - Upload the `csr.json` file using the following command: python3 upload.py --credentials=cred.json --org-name={your organization name} --json-csr=csr.json - Replace cred.json with the path to your OAuth 2.0 client credentials file. You can obtain this file through the Google Cloud Platform. - Replace {your organization name} with the name of your organization.