diff --git a/example/test_ecmg_messages.h b/example/test_ecmg_messages.h index 6b81fa9..6737fe9 100644 --- a/example/test_ecmg_messages.h +++ b/example/test_ecmg_messages.h @@ -42,10 +42,10 @@ constexpr char kTestEcmgChannelSetupWithPrivateParameters[] = { '\x80', '\x01', // parameter_type - CRYPTO_MODE '\x00', '\x07', // parameter_length 'A', 'e', 's', 'S', 'c', 't', 'e', // parameter_value - '\x80', '\x04', // parameter_type - TRACK_TYPES + '\x80', '\x02', // parameter_type - TRACK_TYPES '\x00', '\x02', // parameter_length 'S', 'D', // parameter_value - '\x80', '\x07', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION + '\x80', '\x05', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION '\x00', '\x30', // parameter_length // parameter_value - ENTITLEMENT_ID (16 bytes) '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // @@ -55,7 +55,7 @@ constexpr char kTestEcmgChannelSetupWithPrivateParameters[] = { '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // - '\x80', '\x07', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION + '\x80', '\x05', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION '\x00', '\x30', // parameter_length // parameter_value - ENTITLEMENT_ID (16 bytes) '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', // @@ -139,14 +139,14 @@ constexpr char kTestEcmgStreamSetupWithPrivateParameters[] = { '\x00', '\x10', // parameter_type - nominal_CP_duration '\x00', '\x02', // parameter_length '\x00', '\x64', // parameter_value - '\x80', '\x05', // parameter_type - STREAM_TRACK_TYPE + '\x80', '\x03', // parameter_type - STREAM_TRACK_TYPE '\x00', '\x02', // parameter_length 'S', 'D', // parameter_value - '\x80', '\x06', // parameter_type - CONTENT_IV + '\x80', '\x04', // parameter_type - CONTENT_IV '\x00', '\x10', // parameter_length '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', - '\x80', '\x06', // parameter_type - CONTENT_IV + '\x80', '\x04', // parameter_type - CONTENT_IV '\x00', '\x10', // parameter_length '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f'}; @@ -278,21 +278,21 @@ constexpr char kTestEcmgCwProvisionWithAccessCriteria[] = { '\x80', '\x01', // access_criteria parameter_type - CRYPTO_MODE '\x00', '\x07', // parameter_length 'A', 'e', 's', 'S', 'c', 't', 'e', // parameter_value - '\x80', '\x04', // access_criteria parameter_type - TRACK_TYPES + '\x80', '\x02', // access_criteria parameter_type - TRACK_TYPES '\x00', '\x02', // parameter_length 'S', 'D', // parameter_value - '\x80', '\x05', // access_criteria parameter_type - STREAM_TRACK_TYPE + '\x80', '\x03', // access_criteria parameter_type - STREAM_TRACK_TYPE '\x00', '\x02', // parameter_length 'S', 'D', // parameter_value - '\x80', '\x06', // access_criteria parameter_type - CONTENT_IV + '\x80', '\x04', // access_criteria parameter_type - CONTENT_IV '\x00', '\x10', // parameter_length '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', // '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', // - '\x80', '\x06', // access_criteria parameter_type - CONTENT_IV + '\x80', '\x04', // access_criteria parameter_type - CONTENT_IV '\x00', '\x10', // parameter_length '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', // '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', // - '\x80', '\x07', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION + '\x80', '\x05', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION '\x00', '\x30', // parameter_length // parameter_value - ENTITLEMENT_ID (16 bytes) '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // @@ -302,7 +302,7 @@ constexpr char kTestEcmgCwProvisionWithAccessCriteria[] = { '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', // - '\x80', '\x07', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION + '\x80', '\x05', // parameter_type - ENTITLEMENT_ID_KEY_COMBINATION '\x00', '\x30', // parameter_length // parameter_value - ENTITLEMENT_ID (16 bytes) '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', // diff --git a/example/test_emmg_messages.h b/example/test_emmg_messages.h new file mode 100644 index 0000000..aeac11a --- /dev/null +++ b/example/test_emmg_messages.h @@ -0,0 +1,182 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 2019 Google LLC. +// +// This software is licensed under the terms defined in the Widevine Master +// License Agreement. For a copy of this agreement, please contact +// widevine-licensing@google.com. +//////////////////////////////////////////////////////////////////////////////// + +// Example EMMG messages used in unit tests. + +#ifndef MEDIA_CAS_PACKAGER_SDK_EXAMPLE_TEST_EMMG_MESSAGES_H_ +#define MEDIA_CAS_PACKAGER_SDK_EXAMPLE_TEST_EMMG_MESSAGES_H_ + +namespace widevine { +namespace cas { + +const char kTestEmmgTsPacket[] = { + '\x47', '\x5F', '\xFF', '\x10', '\x00', '\x82', '\x70', '\x61', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x83', '\x70', '\x61', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', + '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01', '\x01'}; + +const char kTestEmmgChannelSetup[] = { + '\x02', // protocol_version + '\x00', '\x11', // message_type - Channel_setup + '\x00', '\x13', // message_length + '\x00', '\x01', // parameter_type - client_id + '\x00', '\x04', // parameter_length + '\x4a', '\xd4', '\x00', '\x00', // parameter_value + '\x00', '\x03', // parameter_type - data_channel_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x02', // parameter_type - section_TSpkt_flag + '\x00', '\x01', // parameter_length + '\x01' // parameter_value +}; + +const char kTestEmmgStreamSetup[] = { + '\x02', // protocol_version + '\x01', '\x11', // message_type - Stream_setup + '\x00', '\x1f', // message_length + '\x00', '\x01', // parameter_type - client_id + '\x00', '\x04', // parameter_length + '\x4a', '\xd4', '\x00', '\x00', // parameter_value + '\x00', '\x03', // parameter_type - data_channel_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x04', // parameter_type - data_stream_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x08', // parameter_type - data_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x07', // parameter_type - data_type + '\x00', '\x01', // parameter_length + '\x01' // parameter_value - private data +}; + +const char kTestEmmgStreamBwRequest[] = { + '\x02', // protocol_version + '\x01', '\x17', // message_type - Stream_BW_request + '\x00', '\x1a', // message_length + '\x00', '\x01', // parameter_type - client_id + '\x00', '\x04', // parameter_length + '\x4a', '\xd4', '\x00', '\x00', // parameter_value + '\x00', '\x03', // parameter_type - data_channel_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x04', // parameter_type - data_stream_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x06', // parameter_type - bandwidth + '\x00', '\x02', // parameter_length + '\x00', '\x64' // parameter_value +}; + +const char kTestEmmgStreamBwAllocation[] = { + '\x02', // protocol_version + '\x01', '\x18', // message_type - Stream_BW_allocation + '\x00', '\x1a', // message_length + '\x00', '\x01', // parameter_type - client_id + '\x00', '\x04', // parameter_length + '\x4a', '\xd4', '\x00', '\x00', // parameter_value + '\x00', '\x03', // parameter_type - data_channel_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x04', // parameter_type - data_stream_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x06', // parameter_type - bandwidth + '\x00', '\x02', // parameter_length + '\x00', '\x32' // parameter_value (50 kbps) +}; + +const char kTestEmmgDataProvision[] = { + '\x02', // protocol_version + '\x02', '\x11', // message_type - Data_provision + '\x00', '\xda', // message_length + '\x00', '\x01', // parameter_type - client_id + '\x00', '\x04', // parameter_length + '\x4a', '\xd4', '\x00', '\x00', // parameter_value + '\x00', '\x03', // parameter_type - data_channel_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x04', // parameter_type - data_stream_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x08', // parameter_type - data_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x05', // parameter_type - datagram + '\x00', '\xbc', // parameter_length + '\x47', '\x40', '\x00', '\x10', '\x0a', '\x0d', '\x77', '\x69', '\x64', + '\x65', '\x76', '\x69', '\x6e', '\x65', '\x5f', '\x74', '\x65', '\x73', + '\x74', '\x12', '\x09', '\x43', '\x61', '\x73', '\x54', '\x73', '\x46', + '\x61', '\x6b', '\x65', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00'}; + +const char kTestEmmgStreamCloseRequest[] = { + '\x02', // protocol_version + '\x01', '\x14', // message_type - Stream_close_request + '\x00', '\x14', // message_length + '\x00', '\x01', // parameter_type - client_id + '\x00', '\x04', // parameter_length + '\x4a', '\xd4', '\x00', '\x00', // parameter_value + '\x00', '\x03', // parameter_type - data_channel_id + '\x00', '\x02', // parameter_length + '\x00', '\x01', // parameter_value + '\x00', '\x04', // parameter_type - data_stream_id + '\x00', '\x02', // parameter_length + '\x00', '\x01' // parameter_value +}; + +const char kTestEmmgChannelClose[] = { + '\x02', // protocol_version + '\x00', '\x14', // message_type - Channel_close + '\x00', '\x0e', // message_length + '\x00', '\x01', // parameter_type - client_id + '\x00', '\x04', // parameter_length + '\x4a', '\xd4', '\x00', '\x00', // parameter_value + '\x00', '\x03', // parameter_type - data_channel_id + '\x00', '\x02', // parameter_length + '\x00', '\x01' // parameter_value +}; + +} // namespace cas +} // namespace widevine + +#endif // MEDIA_CAS_PACKAGER_SDK_EXAMPLE_TEST_EMMG_MESSAGES_H_ diff --git a/example/wv_cas_ecm_example b/example/wv_cas_ecm_example index 54f248c..b75663c 100644 Binary files a/example/wv_cas_ecm_example and b/example/wv_cas_ecm_example differ diff --git a/example/wv_cas_key_fetcher_example b/example/wv_cas_key_fetcher_example index 5337654..ea45812 100644 Binary files a/example/wv_cas_key_fetcher_example and b/example/wv_cas_key_fetcher_example differ diff --git a/example/wv_cas_types_example b/example/wv_cas_types_example index 528ff1a..bf937f3 100644 Binary files a/example/wv_cas_types_example and b/example/wv_cas_types_example differ diff --git a/libmedia_cas_packager_sdk.so b/libmedia_cas_packager_sdk.so index eed33f9..2bf51d5 100755 Binary files a/libmedia_cas_packager_sdk.so and b/libmedia_cas_packager_sdk.so differ diff --git a/media_cas_packager_sdk/public/wv_ecmg b/media_cas_packager_sdk/public/wv_ecmg index 803d79b..9d5f87a 100644 Binary files a/media_cas_packager_sdk/public/wv_ecmg and b/media_cas_packager_sdk/public/wv_ecmg differ diff --git a/media_cas_packager_sdk/public/wv_emmg b/media_cas_packager_sdk/public/wv_emmg new file mode 100644 index 0000000..1504f78 Binary files /dev/null and b/media_cas_packager_sdk/public/wv_emmg differ