FairPlay-KSM est une implémentation Netcore du protocole Apple DRM. Selon Apple, FairPlay Streaming (FPS) fournit en toute sécurité les touches aux appareils mobiles Apple, Apple TV et Safari sur MacOS, ce qui permettra la lecture du contenu vidéo chiffré.
Cette implémentation peut être utilisée comme licence Expeditor ou Debugger SPC-CKC (partiellement implémenté).
FairPlay a été emballé en tant que package NuGet, vous n'avez donc qu'à inclure le package FoolishTech.FairPlay dans votre projet.
dotnet add package FoolishTech.FairPlay
Avant d'utiliser le module, vous devez demander un package de déploiement sur Apple.
Après cela, vous pouvez exécuter votre propre serveur de licences HTTP. Découvrez nos exemples.
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 ;
}
}
} Oui! Demande de traction ouverte. :D
Diego Fernández - [email protected]