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
- Java code of AES/GCM/NoPadding encryption algorithm with authentication tag
- AES-256-CBC encryption returning different result in Python and PHP , HELPPP
- zip4j - An error occurred while extracting files - Java
- Encrypt in Single Store and Decrypt in SQL Server
- Error "java.security.spec.InvalidKeySpecException: Error parsing public key" with Java
- Getting Error Message as "the input string is not a complete block" while Decryting using AES
- CMac calculation in C# using BouncyCastle
- Node.js AES decryption code converted to Golang throws key size error
- AES-CTR PRNG Implementation in OpenSSL with Consistent Output and Memory Leak Issues
- Encrypted data fails at decryption after restarting the micro-service
- Encryption in javascript frontend (browser env)
- mbedtls AES 128 ECB mode encryption give wrong results
- AES Decryption: if the decrypted file has a typo the Application crashes
- OpenSSL: how to encrypt new message with same key without EVP_EncryptInit_ex() again?
- How fix error: Specified key is not a valid size for this algorithm?
Related Questions in DRM
- Dashjs and persistence license, how to handle an expired/obsolete license sessionId on playback?
- shouldWaitForLoadingOfRequestedResource delegate method not getting called
- Assign fake MAC Address to Wireguard Virtual NIC?
- AVPlayer:While playing DRM video, sometimes the audio and video both are not visible but the seek bar continues progress
- Preventing users from recording playback videos in browser using NextJS
- How can I find the License Key for a stream?
- DRM session error java.lang.IllegalArgumentException: {}: BAD_VALUE
- How to setup a playlist in jwplayer?
- Preventing Screenshots and Screen Recording through DRMs?
- Does xBox in developer mode supports video DRM playback with SL2000 or SL3000 content?
- How to download Widevine encrypted m3u8 stream
- Preventing Screenshots and Screen Recording on Website written in React
- How can I plot an EC50 value onto my dose-response curve in R?
- How to Integrate RMSDK on IOS for DRM function
- Issue in playing fairplay video with avplayer
Related Questions in HLS.JS
- how can i show iframe from m3u8, when user hover the player's timeline
- blazorise video component source change hls media can not play
- How does this site prevent users from downloading videos?
- VideoJS: fetches old segments during a live stream
- Usage of Ext-X-Session-Key affecting media playlists that don't need to be decrypted
- In NodeJS, writing blob data to a file results in corrupt file
- Segments not loading in HLS Stream encoded with FFMPEG
- Can not capture video element in Safari using blob url
- Not able to play H265 stream with DRM on chrome
- Add a three.js AudioAnalyser to an HLS Stream
- Is it possible to pregenerate m3u8 file? (the playlist only) and skip the transcoding?
- Stitch together Live streams and Event streams with hls.js
- YT-DLP Return Format (m3u8)
- How to use external HLS library like hlsjs with video.js
- How to use Hls.js with React properly?
Related Questions in DASH.JS
- Is there any way to parse .mpd file and download all the media from url generated?
- Jumping forward x seconds because of gap starting at y and ending at z with video encoded by AWS MediaConvert
- Dash JS player x Cloudflare displaying adaptation ID for CC options
- Not able to play H265 stream with DRM on chrome
- Dash.js Fullscreen mode
- 'target' is a required option
- How to use DRM License for ExoPlayer in Dash.js or similar
- dash.js - stuck at buffering when trying to watch (new) live stream
- I Can't Play My MPD File After Packaging it with Bento4 (Dash.js Error 25)
- How to seek video using dash.js?
- Dash.js quality selector Mpeg
- Why does create-react-app build my app with the debug version of Dashjs?
- dash.js can't play multiple videos one after the other
- I have a DASH stream (.mpd), how do I get all the fragments and resolution in it
- What is the part of code that processing video in Dash.JS?
Related Questions in ADAPTIVE-BITRATE
- How to configure adaptive bitrate in VLC-android
- Why isn't the quality option being included in video.js?
- In Dash manifest, how to insert duration into the segmentTemplate or pass the segment duration in segment requests?
- How do I create a constant/min framerate in a webRTC video?
- how to add dynamic urls (s3 presigned url) in dash.mpd file?
- Nginx Rtmp Module - How to check resolution when pushing rtmp stream to server before redirecting stream to another application?
- Disable adaptive HLS streams based on number of current users
- Use FFmpeg to create MPEG-DASH files
- Issues with playing MPEG-DASH MPD file
- Adaptive Bitrate Streaming (ABR)
- Get bitrate estimate with ExoPlayer Android API
- ffmpeg bitrate 10% bigger than requested
- Shaka Player does not adapt bitrate
- One video variant on MPEG DASH generated with AWS MediaConverter
- Exo player 2.8.2 always starts with lo bandwidth stream
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?
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.