Mpeg-DASH CENC with Widevine License Server or Generic

Hi Guys,

We are currently looking into implementing Common encryption for DASH stream. I have read this article about common encryption support on DRM Add on (https://www.wowza.com/docs/how-to-secure-mpeg-dash-streaming-using-common-encryption-cenc), but it seems like the implementation is pretty tied to playready. I checked the API docs for details of CencDRMInfo, CencDRMInfoPlayready and CencInfo but I couldn’t find a complete reference to extend their behaviour. Just BAsed on observation, I can see that the KeyID and Encryption keys are defined twice. One for PlayReadyKeyInfo and the other for CencInfo, for example.

	public void onHTTPMPEGDashEncryptionKeyLiveChunk(ILiveStreamPacketizer liveStreamPacketizer, String streamName, CencInfo cencInfo, long chunkId) throws Base64DecodingException
	{
	    PlayReadyKeyInfo playReadyKeyInfo = new PlayReadyKeyInfo();
	    playReadyKeyInfo.setLicenseURL("http://myplayreadyserver.com/authenticate.aspx");
	    playReadyKeyInfo.setChecksum(Base64.decode("vbxgstjfSQY="));
	    playReadyKeyInfo.setKeyId(BufferUtils.decodeHexString("F6005DCF-7F93-4B8E-85C7-F977740DA059".replace("-", "")));
	    playReadyKeyInfo.setContentKey(Base64.decode("Tc2cQBPC/paTkftvaITCSQ=="));
	    CencDRMInfoPlayready prInfo = new CencDRMInfoPlayready();
	    prInfo.setPlayReadyKeyInfo(playReadyKeyInfo);
	    cencInfo.addDRM("myDRM:9a04f079-9840-4286-ab92-e65be0885f95", prInfo);
	    cencInfo.setAlgorithm(CencInfo.ALGORITHMID_CTR);
	    cencInfo.setKID("F6005DCF-7F93-4B8E-85C7-F977740DA059");
	    cencInfo.setEncKeyBytes(Base64.decode("Tc2cQBPC/paTkftvaITCSQ=="));
   	   
	}

My questions are:

  1. Is it really necessary to create PlayReadyKeyInfo object?

  2. Can I get away with just defining CencInfo.setKID and CencInfo.SetEncKeyBytes if for example I am using a widevine DRM license server?

  3. Is there any article or document to implement CENC on a none Playready based License server?

  4. Is there any documentation of the APIs CencDRMInfo, CencDRMInfoPlayready and CencInfo on how to use and extend their behaviour?

Best regards,

Ferdinand

Hello Ferdinand.

I have not played around with this API enough to know for sure, but you may be able to just deal with the cencInfo and not initiate the PlayReadyKeyInfo object.

With that said it sounds like you would like to utilize this on your on license server of which I’d doubt Wowza supports. Either way would seem to be beyond the scope of this forum.

You may wish to seek council with a Wowza endorsed consultant. If you decide to go this route you can post a request in the find a consultant forum .

Also, if you have not seen this guide already, it may be of some help to you:

How to secure MPEG-DASH streaming using Common Encryption (CENC)

Thank you and I hope this is helpful.

Salvadore