/// <summary> /// Retrieve the PlayReady license expiration date based onthe video KeyID /// This method uses the Windows Runtime library MediaHelpers to get the expiration date /// The use of this library is a turn around to a PlayReady issue with .Net Native. /// </summary> private DateTime GetLicenseExpirationDate(Guid videoId) { var keyIdString = Convert.ToBase64String(videoId.ToByteArray()); try { var contentHeader = new Windows.Media.Protection.PlayReady.PlayReadyContentHeader( videoId, keyIdString, Windows.Media.Protection.PlayReady.PlayReadyEncryptionAlgorithm.Aes128Ctr, null, null, string.Empty, new Guid()); Windows.Media.Protection.PlayReady.IPlayReadyLicense[] licenses = new Windows.Media.Protection.PlayReady.PlayReadyLicenseIterable(contentHeader, true).ToArray(); foreach (var lic in licenses) { DateTimeOffset? d = MediaHelpers.PlayReadyHelper.GetLicenseExpirationDate(lic); if ((d != null) && (d.HasValue)) return d.Value.DateTime; } } catch (Exception e) { System.Diagnostics.Debug.WriteLine("GetLicenseExpirationDate Exception: " + e.Message); return DateTime.MinValue; } return DateTime.MinValue; }
/// <summary> /// GetPlayReadyExpirationDate /// Return PlayReady Expiration date (return DateTimeOffset.MinValue if not available) /// </summary> /// <param name=""></param> /// <returns>true if protected</returns> public DateTimeOffset GetPlayReadyExpirationDate() { DateTimeOffset d = DateTimeOffset.MinValue; if (!string.IsNullOrEmpty(this.ProtectionData) && (this.ProtectionGuid != Guid.Empty)) { Uri DefaultLicenseAcquistionUri; Guid DefaultContentKeyId; string DefaultContentKeyIdString; Guid DefaultDomainServiceId; if (GetPlayReadyParameters(this.ProtectionData, out DefaultLicenseAcquistionUri, out DefaultContentKeyId, out DefaultContentKeyIdString, out DefaultDomainServiceId)) { var keyIdString = Convert.ToBase64String(DefaultContentKeyId.ToByteArray()); try { var contentHeader = new Windows.Media.Protection.PlayReady.PlayReadyContentHeader( DefaultContentKeyId, keyIdString, Windows.Media.Protection.PlayReady.PlayReadyEncryptionAlgorithm.Aes128Ctr, null, null, string.Empty, new Guid()); Windows.Media.Protection.PlayReady.IPlayReadyLicense[] licenses = new Windows.Media.Protection.PlayReady.PlayReadyLicenseIterable(contentHeader, true).ToArray(); foreach (var lic in licenses) { DateTimeOffset? dto = MediaHelpers.PlayReadyHelper.GetLicenseExpirationDate(lic); if ((dto != null) && (dto.HasValue)) return dto.Value.DateTime; } } catch (Exception e) { System.Diagnostics.Debug.WriteLine("GetPlayReadyExpirationDate Exception: " + e.Message); return DateTimeOffset.MinValue; } } return d; } return d; }