public static StreamProtection[] GetStreamProtections(string authToken, string protectionTypes) { List <StreamProtection> streamProtections = new List <StreamProtection>(); if (!string.IsNullOrEmpty(protectionTypes)) { authToken = string.Concat("Bearer=", authToken); string[] streamProtectionTypes = protectionTypes.Split(Constant.TextDelimiter.Application); foreach (string streamProtectionType in streamProtectionTypes) { StreamProtection streamProtection = new StreamProtection() { Type = (MediaProtection)Enum.Parse(typeof(MediaProtection), streamProtectionType), AuthenticationToken = authToken }; streamProtections.Add(streamProtection); } } return(streamProtections.ToArray()); }
public StreamProtection[] GetProtectionInfo(string authToken, MediaClient mediaClient, StreamingLocator locator) { authToken = string.Concat("Bearer=", authToken); List <StreamProtection> protectionInfo = new List <StreamProtection>(); if (locator.StreamingPolicyName == PredefinedStreamingPolicy.ClearKey) { StreamProtection streamProtection = new StreamProtection() { Type = MediaProtection.AES, AuthenticationToken = authToken }; protectionInfo.Add(streamProtection); } else if (locator.StreamingPolicyName == PredefinedStreamingPolicy.SecureStreaming) { ContentKeyPolicy contentKeyPolicy = mediaClient.GetEntity <ContentKeyPolicy>(MediaEntity.ContentKeyPolicy, locator.DefaultContentKeyPolicyName); foreach (ContentKeyPolicyOption contentKeyPolicyOption in contentKeyPolicy.Options) { if (contentKeyPolicyOption.Configuration is ContentKeyPolicyPlayReadyConfiguration) { StreamProtection streamProtection = new StreamProtection() { Type = MediaProtection.PlayReady, AuthenticationToken = authToken }; protectionInfo.Add(streamProtection); } else if (contentKeyPolicyOption.Configuration is ContentKeyPolicyWidevineConfiguration) { StreamProtection streamProtection = new StreamProtection() { Type = MediaProtection.Widevine, AuthenticationToken = authToken }; protectionInfo.Add(streamProtection); } } } return(protectionInfo.Count == 0 ? null : protectionInfo.ToArray()); }
public StreamProtection[] GetStreamProtections(string authToken, IAsset asset) { List <StreamProtection> streamProtections = new List <StreamProtection>(); authToken = string.Concat("Bearer=", authToken); IAssetDeliveryPolicy[] deliveryPolicies = asset.DeliveryPolicies.Where(dp => dp.AssetDeliveryPolicyType == AssetDeliveryPolicyType.DynamicEnvelopeEncryption).ToArray(); if (deliveryPolicies.Length > 0) { StreamProtection streamProtection = new StreamProtection() { Type = MediaProtection.AES, AuthenticationToken = authToken }; streamProtections.Add(streamProtection); } deliveryPolicies = asset.DeliveryPolicies.Where(dp => dp.AssetDeliveryPolicyType == AssetDeliveryPolicyType.DynamicCommonEncryption).ToArray(); if (deliveryPolicies.Length > 0) { IContentKey[] contentKeys = asset.ContentKeys.Where(ck => ck.ContentKeyType == ContentKeyType.CommonEncryption).ToArray(); foreach (IContentKey contentKey in contentKeys) { IContentKeyAuthorizationPolicy authPolicy = GetEntityById(MediaEntity.ContentKeyAuthPolicy, contentKey.AuthorizationPolicyId) as IContentKeyAuthorizationPolicy; if (authPolicy != null) { IContentKeyAuthorizationPolicyOption[] policyOptions = authPolicy.Options.Where(po => po.KeyDeliveryType == ContentKeyDeliveryType.PlayReadyLicense).ToArray(); if (policyOptions.Length > 0) { StreamProtection streamProtection = new StreamProtection() { Type = MediaProtection.PlayReady, AuthenticationToken = authToken }; streamProtections.Add(streamProtection); } policyOptions = authPolicy.Options.Where(po => po.KeyDeliveryType == ContentKeyDeliveryType.Widevine).ToArray(); if (policyOptions.Length > 0) { StreamProtection streamProtection = new StreamProtection() { Type = MediaProtection.Widevine, AuthenticationToken = authToken }; streamProtections.Add(streamProtection); } } } } deliveryPolicies = asset.DeliveryPolicies.Where(p => p.AssetDeliveryPolicyType == AssetDeliveryPolicyType.DynamicCommonEncryptionCbcs).ToArray(); if (deliveryPolicies.Length > 0) { StreamProtection streamProtection = new StreamProtection() { Type = MediaProtection.FairPlay, AuthenticationToken = authToken }; streamProtections.Add(streamProtection); } return(streamProtections.ToArray()); }