Protegendo arquivos com DRM versão 7 ou posterior
[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador de Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador de Coletor em vez do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
Para proteger arquivos com o DRM do Windows Media versão 7 ou posterior, use o método IWMDRMWriter::SetDRMAttribute do objeto gravador para definir atributos DRM. Como o DRM versão 7 e versões posteriores permitem licenças exclusivas para cada arquivo protegido ou conjunto de arquivos, a interface IWMDRMWriter também tem métodos para criar chaves. Esses métodos são fornecidos apenas para conveniência.
Para proteger arquivos ASF usando o DRM versão 7 ou posterior, execute as seguintes etapas:
Vincular ao WMStubDRM.lib e, se necessário, desvincular wmvcore.lib.
Chame a função WMCreateWriter para criar o gravador DRM. O primeiro argumento é reservado e deve ser definido como NULL.
Defina um perfil para o gravador a ser usado chamando IWMWriter::SetProfile ou IWMWriter::SetProfileByID. Você deve definir um perfil no gravador antes de definir quaisquer atributos DRM. O DRM tem suporte apenas para perfis que usam os codecs de Áudio do Windows Media ou Vídeo do Windows Media
Obtenha a interface IWMDRMWriter do objeto gravador.
Chame IWMDRMWriter::SetDRMAttribute e defina Use_Advanced_DRM como TRUE.
Se você precisar gerar uma nova semente de chave, chame IWMDRMWriter::GenerateKeySeed. Na maioria dos casos, você reutiliza uma semente de chave que foi gerada anteriormente. Esse valor deve permanecer em segredo; ele não é gravado no arquivo.
Chame IWMDRMWriter::GenerateKeyID para criar uma ID de chave, que é o segundo valor usado para criar a chave real. Ao contrário da semente de chave, a ID da chave é pública e é gravada no arquivo no cabeçalho DRM no clear. Crie uma nova ID de chave para cada novo arquivo criado.
Chame IWMDRMWriter::GenerateSigningKeyPair se necessário para gerar uma chave pública e privada que será usada para assinar o objeto de cabeçalho ASF do DRM avançado. Para obter mais informações sobre essas chaves, consulte IWMDRMWriter::GenerateSigningKeyPair.
Se necessário, obtenha os valores para preencher o objeto de assinatura digital do cabeçalho DRM. Se você não tiver uma versão funcional do Windows Media Rights Manager instalada em seu sistema, deverá configurar o objeto de assinatura digital do cabeçalho de arquivo ASF especificando os quatro atributos a seguir, que todos devem ser obtidos da Microsoft:
Se você tiver o Windows Media Rights Manager instalado, não será necessário definir esses atributos em seu aplicativo. O componente DRM recuperará esses atributos e os usará para assinar o cabeçalho automaticamente. Se você tiver uma versão ativada do Windows Media Rights Manager em outro computador e quiser reutilizar esses valores de objeto de assinatura digital, poderá encontrá-los no registro. O certificado do servidor de licença é armazenado em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert1 e o certificado raiz é armazenado em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert2. Ao proteger arquivos com DRM versão 7, você deve usar os valores dessas chaves do Registro. Para a propriedade DRM_LASignaturePrivKey, use GenerateSigningKeysEx (por meio do SDK do Windows Media Rights Manager) ou reutilize o valor instalado pelo Windows Media Rights Manager em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server:Info_Cert0. Para a propriedade DRM_LASignatureCert , use GenerateSigningKeysEx (por meio do SDK do Windows Media Rights Manager) ou então o valor instalado pelo Windows Media Rights Manager em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert0.
Chame IWMDRMWriter::SetDRMAttribute quantas vezes forem necessárias para configurar o objeto gravador, o que definirá os atributos de cabeçalho DRM necessários conforme necessário. Essas propriedades persistem durante o tempo de vida do objeto gravador ou até que sejam redefinidas com um novo valor. Eles não precisam ser redefinidos para cada novo arquivo que você criar.
As seguintes propriedades são exigidas pelo objeto gravador:
As seguintes propriedades são opcionais:
Além disso, você pode especificar atributos de arquivo DRM definidos pelo usuário diretamente usando o atributo base DRM_DRMHeader . Você pode adicionar qualquer atributo adicional desejado, como "DRMHeader.RequireSAP", por exemplo, como uma maneira de comunicar informações adicionais que serão usadas pelo servidor de licença na criação da licença. O servidor de licença deve estar ciente antes de quaisquer propriedades adicionais que você adicionar. Não há como descobrir propriedades desconhecidas programaticamente.
Escreva o arquivo usando os métodos de interface IWMWriter conforme descrito em outro lugar nesta documentação. Para criar um fluxo de DRM ao vivo, basta gravar em um coletor de rede. Você também pode gravar em um coletor de push.
Se necessário, crie uma licença para o arquivo usando o Windows Media Rights Manager. Essa tarefa também pode ser executada por um servidor de licença de terceiros. Para cenários de DRM ao vivo, os usuários finais precisarão obter uma licença antes do início do fluxo ou, em seguida, no momento em que tentarem se conectar a ele pela primeira vez.
Nota O DRM não é compatível com a versão baseada em x64 deste SDK.
Tópicos relacionados