Fairplay protected content black screen when using Lightning Digital AV Adapter

Hi Guys,


We have recently encountered a problem not being able to play Faiyplay protected contents when our IOS application is used on an IPAD connected to a TV through Lightning Digital AV Adapter. The external display just shows a black screen while on the application it says "Paying through Airplay". We couldn't check the logs since we cannot connect the device to a MAC with xcode while the adapter is connected.


So far what we have tried are the following:


1. Set player.usesExternalPlaybackWhileExternalScreenIsActive = TRUE on the application as it was stated in the Fairplay Programming Guide.

2. Set the HDCP enforcement to type = 0 in the CKC message (40791AC78BD5C571). Before it was set to "NOT REQUIRED" (EF72894CA7895B78).

3. Remove the HDCP TTLV completely from the CKC message.


But none of these worked. The problem remains the same. The screen is black as if the device refuses to play the fairplay protected content when the adapter is connected.


Things that wre worth noting are:


1. We receive SPC message on the CKC server from the device even though the screen is black.

2. We tried playing the content on a MAC (connected to hdmi) + Safari using EME and the streams worked alright. We also tried from the IPAD to send the stream through Airplay directly to an Apple TV device and it also worked. So it doesnt seemed to be a problem with the stream, nor the CKC message, nor the HDCP TTLV.

3. We also tried to play contents from iTunes using the same IPAD + same Lightning Digital AV Adapter + Same Television and the streams worked correctly, so we doubt that it could be a problem with the device and it's HDCP support.


Is there anything else we should investigate to get to the bottom of this issue? We must have done something wrong inside the application that might be causing the issue. Could you guys give us some more pointers to where to look?


Regards,

Replies

Hello Yep,


In cases of the Digital AV Adapter (and AirPlay), it is possible to get multiple or repetitive key requests, and that each one must get a correct response in order for playback to continue. In your case, the second of the responses was corrupt.

Hi 3ZS,


Could you send us the problematic CKC response (in Base64 format if possible) so we can verify and correct it? We were checking the logs of the KSM server but there doesn't seemed to be any logs of a failed CKC generation. We are wondering if this failed request/reponse transaction have really reached the server. But to be able to verify all this we would need the failed CKC response since we are unable to extract this info from the client app. Better yet, if you could guide us how to extract this info from the client app it would be much appreciated.


Regards,

Hi 3zs,


I have updated the bug report and attached the generated SPC and CKC from the 2 consecutive requests when using AV adapter. Could you guys have a look at to why would any of these CKCs be considered invalid when using the adapter?


I have counter check all the CKCs against the specification in the FPS documentation and everything seems to be correct. And content keys can be correctly decrypted using the SPC's session keys generated with the DASK keys. We couldn't really see which part of them are invalid.


All the required TTLVs are present including all return tag requests.


Regards,

Hi 3ZS,



Were you guys able to find what was wrong with those SPC and CKC we sent in the bug report? Maybe there is a special CKC TTLV that we needs to be included when the device uses the AV adapter which we might have missed? We triple checked everything from the data, IV and the content encryption keys and they all seemed to be in accordance with the documentation. Neither was there any special format mentioned in the docs for AV Adapter. We can also send you guys the decrypted SPC payloads if it would help in the investigation.



Regards,

Hello Yep,


You will need to make some temporary changes to your KSM so that if the developer certificate is used when creating the SPC, then the CKCs will be generated with the DASk. Use the Development cert to create the SPC and provide it to your KSM. Then decode the CKCs using the process described in the FPS Programing guide called "Testing the Key Security Modules".


If you need further help with this please submit your question to Developer Technical Support (DTS). https://developer.apple.com/support/technical/