I want to encode my content using clearkeys. I am using DASH protocol. I know how to encrypt and play encrypted content. My question is how do I generate those keys so that I can bring up my own clear key licensing server.
How to generate hex strings for ClearKey DRM
2.9k views Asked by ashutosh singh At
1
There are 1 answers
Related Questions in AES
- Do I have to randomize key in OpenSSL
- AES 256 and Base64 Encrypted string works on iOS 8 but truncated on iOS 7
- Encrypting (large) files in PHP with openSSL
- 32-character PHP AES Key for mcrypt_encrypt
- Javascript library forge does not work in Internet Explorer IE8
- ImportError: No module named Crypto
- AES CBC - Have message input and output and IV and have to find key
- AES with PKCS#5 padding
- Sage Pay Forms V3.00 AES-128 Encryption VB.Net
- C# AES and RSA File Encryption - How to use IV?
Related Questions in DRM
- Save and Play DRM secured audio file in ios
- What exactly is Widevine? And how to ensure that I have this key on device?
- OAuth in PlayReady License Retrieval in UWP
- WideVine tvOS support
- How to check widevine DRM present on the Android Device
- DRM security level on Android
- HTML5 Video DRM - detect HDCP (output protection) then downgrade to SD content?
- Best way to encrypt ePub file
- programmatically deleted cached persistant Playready License
- Secure Encryption of File on Disk
Related Questions in HLS.JS
- How to handle React life cycle with http live streaming HLS?
- HLS - EXT-X-DATERANGE Compliance
- HLS.js get video segment info
- In react-native-video selectedVideoTrack props is not working
- Segments not loading in HLS Stream encoded with FFMPEG
- In NodeJS, writing blob data to a file results in corrupt file
- Usage of Ext-X-Session-Key affecting media playlists that don't need to be decrypted
- VideoJS: fetches old segments during a live stream
- Youtube m3u8 url not playing with video js and hls
- How to stream live TS (transport stream) files on HTML player?
Related Questions in DASH.JS
- VideoJS : DashJS and HLS Don't Work Together
- Dash JS player x Cloudflare displaying adaptation ID for CC options
- dash.js - stuck at buffering when trying to watch (new) live stream
- How to generate hex strings for ClearKey DRM
- FFMPEG/DASH-LL creates audio and video chunks at different rates; player is confused (404 errors)
- How to sync a bokeh/panel animation with a video player like dash.js?
- Dash.js - Trapping 404 errors from MPEG-DASH player
- How to use DRM License for ExoPlayer in Dash.js or similar
- Javascript Video Blob URL and MPEG-Dash
- React js switch video sources error comes in Dash.js
Related Questions in ADAPTIVE-BITRATE
- Mp4 to dynamic adaptive hls with multiple bitrates using ffmpeg
- ios play HLS - only lowest bitrate available
- MPMoviePlayerController MovieAccessLogEvent - Inflated observedBitrate
- What does segmentrange in a mpd file mean?
- How to generate hex strings for ClearKey DRM
- html play a video that is made of lots of queued small videos
- Adaptive streaming - avoid having lots of key frames
- how to add dynamic urls (s3 presigned url) in dash.mpd file?
- Is there any quick way to generate multi bitrate DASH & HLS streams from a video file?
- how to play mpd file
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Its worth mentioning that ClearKey is not really seen as a DRM - it lacks the secure key exchange mechanisms that most DRM's include. In DASH forum's own words ClearKey is 'to provide a level of content protection between HTTPS-delivered token auth and DRM'.
If this is good for you then, it may well be an appropriate choice for your use case and it does provide a hurdle against piracy.
The keys themselves are regular 16 byte AES encryption keys.
You can just create your own key generator but there are some best practices you should be aware of - see for example: https://stackoverflow.com/a/3452620/334402 (Java) and https://stackoverflow.com/a/42573924/334402 (.NET - note the discussion in comments re strings also).
There are also sites and services that can generate keys (see example below), but I think from your question you are more likely to want to build this into your own solution as above.
(Update - see discussion in comments) - the EME specification, which defines how browsers process encrypted content including how they request license keys, contains the following on the encoding of the keys that are returned:
This is specifically for ClearKey - keys for DRM systems are communicated securely in the encrypted DRM system license request and response messaging.
The important thing to note here is the 'base64url' encoding - this is a variant of base64 encoding which is 'url friendly' and does not include the characters + and /. More info on base64 variants is available here:
The impact of this is that you have to use base63url encoding for the ClearKey license response for EME compliant solutions - i.e. most (or all...) browser players.
One other note - once you have the keys they they can be requested via a licenser server URL which is included in the manifest, as for some DRM's, or the key itself can be embedded in the manifest directly.