forked from sim0n00ps/OF-DL
34 lines
974 B
C#
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);
|
|
}
|