Fairplay-KSM ist eine NetCore-Implementierung des Apple DRM-Protokolls. Laut Apple liefert Fairplay Streaming (FPS) Tasten sicher an Apple Mobile Devices, Apple TV und Safari auf MacOS, was die Wiedergabe verschlüsselter Videoinhalte ermöglicht.
Diese Implementierung kann als Lizenzexpeditor oder SPC-CKC-Debugger (teilweise implementiert) verwendet werden.
Fairplay wurde als Nuget -Paket verpackt, sodass Sie nur das Paket von FoolishTech.FairPlay in Ihr Projekt einbeziehen müssen.
dotnet add package FoolishTech.FairPlay
Vor der Verwendung des Moduls müssen Sie Apple ein Bereitstellungspaket anfordern.
Danach können Sie Ihren eigenen HTTP -Lizenzserver ausführen. Check-out in unseren Beispielen.
using System ;
using System . Text ;
using System . Threading . Tasks ;
using FoolishTech . FairPlay ;
using FoolishTech . FairPlay . Models ;
using FoolishTech . FairPlay . Interfaces ;
using FoolishTech . FairPlay . Exceptions ;
namespace FoolishTech . SimpleExpeditor
{
public class HardcodedKeyLocator : IContentKeyLocator
{
Task < IContentKey > IContentKeyLocator . FetchContentKey ( byte [ ] contentId , object info /* Object passed on GenerateCKC */ )
{
string id = Encoding . UTF8 . GetString ( contentId ) ;
if ( id . Equals ( "twelve" ) ) return Task . FromResult < IContentKey > ( new FPStaticKey ( "3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C" , "D5FBD6B82ED93E4EF98AE40931EE33B7" ) ) ;
else throw new ArgumentOutOfRangeException ( nameof ( contentId ) , $ "We can't find key for content id $ { contentId } " ) ;
}
}
public class SimpleFairPlay
{
public async Task < byte [ ] > Resolve ( byte [ ] spc )
{
try {
FPProvider provider = new FPProvider ( new byte [ ] { /* Certificate+PrivKey P12 */ } , "" /* P12 Passphrase */ , new byte [ ] { /* ASK */ } ) ;
IContentKeyLocator locator = new HardcodedKeyLocator ( ) ;
FPServer server = new FPServer ( provider , locator ) ;
return await server . GenerateCKC ( spc , new Object ( ) ) ;
} catch ( FPKeyLocatorException ) {
// Exception throwed on IContentKeyLocator
} catch ( Exception ) {
// Any other exception.
}
return null ;
}
}
} Ja! Open Pull Anfrage. :D
Diego Fernández - [email protected]