2
0
forked from sim0n00ps/OF-DL
OF-DL/OF DL/Widevine/CDMApi.cs

34 lines
974 B
C#

using Serilog;
namespace OF_DL.Widevine;
public class CDMApi
{
private string? SessionId { get; set; }
public byte[]? GetChallenge(string initDataB64, string certDataB64, bool offline = false, bool raw = false)
{
SessionId = CDM.OpenSession(initDataB64, Constants.DEVICE_NAME, offline, raw);
if (SessionId == null)
{
Log.Debug("CDM.OpenSession returned null, unable to proceed with challenge generation");
return null;
}
CDM.SetServiceCertificate(SessionId, Convert.FromBase64String(certDataB64));
return CDM.GetLicenseRequest(SessionId);
}
public void ProvideLicense(string licenseB64)
{
if (SessionId == null)
{
throw new Exception("No session ID set. Could not provide license");
}
CDM.ProvideLicense(SessionId, Convert.FromBase64String(licenseB64));
}
public List<ContentKey> GetKeys() => CDM.GetKeys(SessionId);
}