Criar ContentKeys com .NET

logotipo dos Serviços de Mídia


Os serviços de mídia permitem que você crie ativos e forneça ativos criptografados. Uma ContentKey fornece acesso seguro aos seus ativos.

Ao criar um novo ativo (por exemplo, antes de carregar arquivos), você pode especificar as seguintes opções de criptografia: StorageEncrypted, CommonEncryptionProtected ou EnvelopeEncryptionProtected.

Quando você fornece ativos para seus clientes, é possível configurar para que os ativos sejam criptografados dinamicamente com uma das duas criptografias a seguir: DynamicEnvelopeEncryption ou DynamicCommonEncryption.

Os ativos criptografados precisam ser associados a ContentKey s. Este artigo descreve como criar uma chave de conteúdo.

Observação

Ao criar um novo ativo StorageEncrypted usando o SDK do .NET dos Serviços de Mídia, a ContentKey é automaticamente criada e vinculada ao ativo.

ContentKeyType

Um dos valores que você deve definir ao criar um conteúdo da chave é o tipo de chave de conteúdo. Escolha um dos seguintes valores.

    public enum ContentKeyType
    {
        /// <summary>
        /// Specifies a content key for common encryption.
        /// </summary>
        /// <remarks>This is the default value.</remarks>
        CommonEncryption = 0,

        /// <summary>
        /// Specifies a content key for storage encryption.
        /// </summary>
        StorageEncryption = 1,

        /// <summary>
        /// Specifies a content key for configuration encryption.
        /// </summary>
        ConfigurationEncryption = 2,

        /// <summary>
        /// Specifies a content key for Envelope encryption.  Only used internally.
        /// </summary>
        EnvelopeEncryption = 4
    }

Criar um tipo de envelope de ContentKey

O snippet de código a seguir cria uma chave de conteúdo do tipo de criptografia de envelope. Em seguida, associa a chave com o ativo especificado.

    static public IContentKey CreateEnvelopeTypeContentKey(IAsset asset)
    {
        // Create envelope encryption content key
        Guid keyId = Guid.NewGuid();
        byte[] contentKey = GetRandomBuffer(16);

        IContentKey key = _context.ContentKeys.Create(
                                keyId,
                                contentKey,
                                "ContentKey",
                                ContentKeyType.EnvelopeEncryption);

        asset.ContentKeys.Add(key);

        return key;
    }

    static private byte[] GetRandomBuffer(int size)
    {
        byte[] randomBytes = new byte[size];
        using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
        {
            rng.GetBytes(randomBytes);
        }

        return randomBytes;
    }

call

    IContentKey key = CreateEnvelopeTypeContentKey(encryptedsset);

Criar um tipo comum de ContentKey

O snippet de código a seguir cria uma chave de conteúdo do tipo de criptografia comum. Em seguida, associa a chave com o ativo especificado.

    static public IContentKey CreateCommonTypeContentKey(IAsset asset)
    {
        // Create common encryption content key
        Guid keyId = Guid.NewGuid();
        byte[] contentKey = GetRandomBuffer(16);

        IContentKey key = _context.ContentKeys.Create(
                                keyId,
                                contentKey,
                                "ContentKey",
                                ContentKeyType.CommonEncryption);

        // Associate the key with the asset.
        asset.ContentKeys.Add(key);

        return key;
    }

    static private byte[] GetRandomBuffer(int length)
    {
        var returnValue = new byte[length];

        using (var rng =
            new System.Security.Cryptography.RNGCryptoServiceProvider())
        {
            rng.GetBytes(returnValue);
        }

        return returnValue;
    }
call

    IContentKey key = CreateCommonTypeContentKey(encryptedsset); 

Roteiros de aprendizagem dos Serviços de Mídia

Serviços de Mídia v3 (mais recente)

Confira a versão mais recente dos Serviços de Mídia do Azure.

Serviços de Mídia v2 (herdado)

Fornecer comentários

Use o fórum User Voice para fazer comentários e sugestões sobre como melhorar os Serviços de Mídia do Azure. Você também pode ir diretamente para uma das seguintes categorias: