

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# API SPEKE v1
<a name="the-speke-api"></a>

Essa é a API REST para Secure Packager and Encoder Key Exchange (SPEKE) v1. Use esta especificação para fornecer a proteção de direitos autorais de DRM aos clientes que usam criptografia. Para estar em conformidade com o SPEKE, seu provedor de chaves de DRM deve expor a API REST descrita nesta especificação. O criptografador faz chamadas de API ao seu provedor de chaves.

**nota**  
Os exemplos de código nesta especificação são apenas para fins de ilustração. Você não pode executar os exemplos porque eles não fazem parte de uma implementação completa do SPEKE.

O SPEKE usa a definição de estrutura de dados do DASH Industry Forum Content Protection Information Exchange Format (DASH-IF-CPIX) para troca de chaves, com algumas restrições. DASH-IF-CPIXdefine um esquema para fornecer uma troca extensível de vários DRM da plataforma DRM para o criptografador. Isso permite a criptografia de conteúdo para todos os formatos adaptáveis de empacotamento de taxa de bits no momento da compactação de conteúdo e empacotamento. Os formatos adaptáveis de empacotamento de taxa de bits incluem HLS, DASH e MSS.

Para obter informações detalhadas sobre o formato de troca, consulte a especificação CPIX do DASH Industry Forum em https://dashif. org/docs/DASH-IF-CPIX-v2-0.pdf.

**Topics**
+ [API SPEKE v1: Personalizações e restrições para a especificação do DASH-IF](speke-constraints.md)
+ [API SPEKE v1: Componentes de carga útil padrão](standard-payload-components.md)
+ [API SPEKE v1: Exemplos de chamadas de método de fluxo de trabalho em tempo real](live-workflow-methods.md)
+ [API SPEKE v1: Exemplos de chamadas de método de fluxo de trabalho de VOD](vod-workflow-methods.md)
+ [API SPEKE v1: Criptografia de chave de conteúdo](content-key-encryption.md)
+ [API SPEKE v1: Heartbeat](heartbeat.md)
+ [SPEKE API v1: Substituindo o identificador de chave](kid-override.md)

# API SPEKE v1: Personalizações e restrições para a especificação do DASH-IF
<a name="speke-constraints"></a>

A especificação DASH-IF CPIX, https://dashif. org/docs/DASHO -IF-CPIX-v2-0.pdf oferece suporte a vários casos de uso e topologias. A especificação da API SPEKE adere à especificação CPIX com as seguintes personalizações e restrições:
+ O SPEKE segue o fluxo de trabalho de criptografador e consumidor.
+ Para chaves de conteúdo criptografadas, o SPEKE aplica as seguintes restrições:
  + O SPEKE não oferece suporte à verificação de assinatura digital (XMLDSIG) para cargas de solicitação ou resposta.
  + O SPEKE exige 2048 certificados baseados em RSA.
+ Para fluxos de trabalho de chaves rotativas, o SPEKE requer o `ContentKeyUsageRule` filtro, `KeyPeriodFilter`. O SPEKE ignora todas as outras `ContentKeyUsageRule` configurações.
+ O SPEKE omite a funcionalidade `UpdateHistoryItemList`. Se a lista estiver presente na resposta, o SPEKE vai ignorá-la.
+ O SPEKE suporta alternância de chaves. O SPEKE usa somente o `ContentKeyPeriod@index para rastrear o período chave.
+ Para oferecer suporte ao MSS PlayReady, o SPEKE usa um parâmetro personalizado sob a `DRMSystem` tag,. `SPEKE:ProtectionHeader`
+ Para o empacotamento HLS, se `URIExtXKey` estiver presente na resposta, ele deve conter os dados completos para adicionar no parâmetro de URI da tag `EXT-X-KEY` de uma lista de reprodução HLS, com nenhum outro requisito de sinalização.
+ Para a lista de reprodução HLS na tag `DRMSystem`, o SPEKE fornece os parâmetros personalizados opcionais `speke:KeyFormat` e `speke:KeyFormatVersions` para os valores dos parâmetros `KEYFORMAT` e `KEYFORMATVERSIONS` da tag `EXT-X-KEY`.

  O vetor de inicialização (IV) HLS sempre segue número do segmento, a menos que especificado explicitamente pelo operador.
+ Ao solicitar chaves, o criptografador pode usar o atributo opcional `@explicitIV` no elemento `ContentKey`. O provedor de chaves pode responder com um IV usando `@explicitIV`, mesmo se o atributo não estiver incluído na solicitação.
+ O criptografador cria o identificador de chaves (`KID`), que permanece o mesmo para qualquer período de chave e ID de conteúdo. O provedor de chaves inclui o servidor `KID` na resposta ao documento da solicitação.
+ O provedor de chaves pode incluir um valor para o cabeçalho da resposta `Speke-User-Agent`, para se identificar para fins de depuração.
+ O SPEKE não oferece suporte a vários controles ou chaves por conteúdo.

  O criptografador em conformidade com o SPEKE atua como um cliente e envia operações `POST` ao endpoint do provedor de chaves. O criptografador pode enviar uma solicitação `heartbeat` periódica para garantir a integridade da conexão entre o criptografador e o endpoint do provedor de chaves.

# API SPEKE v1: Componentes de carga útil padrão
<a name="standard-payload-components"></a>

Em qualquer solicitação do SPEKE, o criptografador pode solicitar respostas para um ou mais sistemas de DRM. O criptografador especifica os sistemas de DRM no `<cpix:DRMSystemList>` da carga da solicitação. Cada especificação do sistema inclui a chave e indica o tipo de resposta a ser retornada.

O exemplo a seguir mostra uma lista de sistemas DRM com uma única especificação do sistema DRM:

![\[RequestIntroSimple\]](http://docs.aws.amazon.com/pt_br/speke/latest/documentation/images/RequestIntroSimple.png)


A tabela a seguir lista os principais componentes de cada `<cpix:DRMSystem>`.


| Identificador | Description | 
| --- | --- | 
|   `systemId` ou `schemeId`   |  Identificador exclusivo para o tipo de sistema DRM, conforme registrado na organização do DASH IF. Para obter uma lista, consulte Sistema [DASH-IF](https://dashif.org/identifiers/content_protection/). IDs  | 
|   `kid`   |  O ID da chave. Essa não é a chave real, mas sim um identificador que aponta para a chave em uma tabela de hash.  | 
|   `<cpix:UriExtXKey>`   |  Solicita uma chave padrão não criptografada. O tipo de resposta da chave deve ser este, ou a resposta `PSSH`.  | 
|   `<cpix:PSSH>`   |  Solicita um Protection System Specific Header (PSSH). Esse tipo de cabeçalho contém uma referência a `kid`, `systemID`, além de dados personalizados para o fornecedor de DRM, como parte do Common Encryption (CENC). O tipo de resposta da chave deve ser este, ou a resposta `UriExtXKey`.  | 

Solicitações de exemplo para chave padrão e para PSSH \$1

O exemplo a seguir mostra parte de uma amostra de solicitação do criptografador para o provedor de chaves de DRM, com os principais componentes destacados. A primeira solicitação é para uma chave padrão, enquanto a segunda solicitação é para uma resposta PSSH:

![\[RequestIntro1\]](http://docs.aws.amazon.com/pt_br/speke/latest/documentation/images/RequestIntro1.png)


\$1 Respostas de exemplo para chave padrão e para PSSH \$1

A lista a seguir mostra a resposta correspondente do provedor de chaves de DRM para o criptografador:

![\[ResponseIntro1\]](http://docs.aws.amazon.com/pt_br/speke/latest/documentation/images/ResponseIntro1.png)


# API SPEKE v1: Exemplos de chamadas de método de fluxo de trabalho em tempo real
<a name="live-workflow-methods"></a>

 *Exemplo de sintaxe de solicitação* 

O seguinte URL é um exemplo e não indica um formato fixo:

```
POST https://speke-compatible-server/speke/v1.0/copyProtection
```

 *Corpo da solicitação* 

Um elemento CPIX.

 *Cabeçalhos de solicitação* 


| Nome | Tipo | Ocorre | Description | 
| --- | --- | --- | --- | 
|   `AWS Authorization`   |  String  |  1..1  |  Consulte [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Security-Token`   |  String  |  1..1  |  Consulte [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `X-Amz-Date`   |  String  |  1..1  |  Consulte [AWS Sigv4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)   | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 

 *Cabeçalhos de resposta* 


| Nome | Tipo | Ocorre | Description | 
| --- | --- | --- | --- | 
|   `Speke-User-Agent`   |  String  |  1..1  |  String que identifica o provedor de chaves  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 

 *Resposta de solicitação* 


| CÓDIGO HTTP | Nome da carga | Ocorre | Description | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  Resposta da carga DASH-CPIX:  | 
|   `4XX (Client error)`   |  Mensagem de erro do cliente  |  1..1  |  Descrição do erro do cliente  | 
|   `5XX (Server error)`   |  Mensagem de erro do servidor  |  1..1  |  Descrição de erro do servidor  | 

**nota**  
Os exemplos nesta seção não incluem a criptografia de chaves de conteúdo. Para obter informações sobre como adicionar criptografia de chaves de conteúdo, consulte [Criptografia de chaves de conteúdo](content-key-encryption.md).

 *Exemplo de carga de solicitação em tempo real com chaves em branco* 

O exemplo a seguir mostra uma carga típica de solicitação em tempo real do criptografador para o provedor de chaves DRM:

```
<cpix:CPIX id="abc123" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
	<cpix:ContentKeyList>
		<cpix:ContentKey kid="98ee5596-cd3e-a20d-163a-e382420c6eff" explicitIV="OFj2IjCsPJFfMAxmQxLGPw=="></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader></speke:ProtectionHeader>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

 *Exemplo de carga de resposta em tempo real com chaves em branco* 

O exemplo a seguir mostra uma carga típica de resposta em tempo real do provedor de chaves de DRM:

```
<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" id="abc123">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>aWRlbnRpdHk=</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>Y29tLmFwcGxlLnN0cmVhbWluZ2tleWRlbGl2ZXJ5</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEoIARIQeSIcblaNbb7Dji6sAtKZzRoNd2lkZXZpbmVfdGVzdCIfa2V5LWlkOmVTSWNibGFOYmI3RGppNnNBdEtaelE9PSoCU0QyAA==</cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader>CgMAAAEAAQAAAzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4ATwBXAGoAaAB0AHIAMwB1ADkAawArAHIAZABvADEASQBMAFkAMAByAGEAdwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBCADMAQQA2AEEAMwB4AG0AdABkAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAGkAcgBlAGMAdAB0AGEAcABzAC4AbgBlAHQALwBwAHIALwBzAHYAYwAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AUABsAGEAeQBSAGkAZwBoAHQAPQAxACYAYQBtAHAAOwBhAG0AcAA7AGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</speke:ProtectionHeader>
			<cpix:PSSH>AAADMHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAxAQAwAAAQABAAYDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBiAGgAdwBpAGUAWQAxAFcAdgBtADMARABqAGkANgBzAEEAdABLAFoAegBRAD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AGEAVABtAFAASgBWAEMAVgBaADYAcwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHAAcgBsAHMALgBhAHQAdgAtAHAAcwAuAGEAbQBhAHoAbwBuAC4AYwBvAG0ALwBjAGQAcAA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AEkASQBTAF8ARABSAE0AXwBWAEUAUgBTAEkATwBOAD4ANwAuADEALgAxADQAMwA5AC4AMAA8AC8ASQBJAFMAXwBEAFIATQBfAFYARQBSAFMASQBPAE4APgA8AC8AQwBVAFMAVABPAE0AQQBUAFQAUgBJAEIAVQBUAEUAUwA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
```

# API SPEKE v1: Exemplos de chamadas de método de fluxo de trabalho de VOD
<a name="vod-workflow-methods"></a>

 *Exemplo de sintaxe de solicitação* 

O seguinte URL é um exemplo e não indica um formato fixo.

```
POST https://speke-compatible-server/speke/v1.0/copyProtection
```

 *Corpo da solicitação* 

Um elemento CPIX.

 *Cabeçalhos de resposta* 


| Nome | Tipo | Ocorre | Description | 
| --- | --- | --- | --- | 
|   `Speke-User-Agent`   |  String  |  1..1  |  String que identifica o provedor de chaves  | 
|   `Content-Type`   |  String  |  1..1  |  application/xml  | 

 *Resposta de solicitação* 


| CÓDIGO HTTP | Nome da carga | Ocorre | Description | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  CPIX  |  1..1  |  Resposta da carga DASH-CPIX:  | 
|   `4XX (Client error)`   |  Mensagem de erro do cliente  |  1..1  |  Descrição do erro do cliente  | 
|   `5XX (Server error)`   |  Mensagem de erro do servidor  |  1..1  |  Descrição de erro do servidor  | 

**nota**  
Os exemplos nesta seção não incluem a criptografia de chaves de conteúdo. Para obter informações sobre como adicionar criptografia de chaves de conteúdo, consulte [Criptografia de chaves de conteúdo](content-key-encryption.md).

 *Exemplo de carga de solicitação de VOD com chaves em branco* 

O exemplo a seguir mostra uma carga de solicitação de VOD básica do criptografador para o provedor de chaves de DRM:

```
<cpix:CPIX id="abc123" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
	<cpix:ContentKeyList>
		<cpix:ContentKey kid="98ee5596-cd3e-a20d-163a-e382420c6eff" explicitIV="OFj2IjCsPJFfMAxmQxLGPw=="></cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey></cpix:URIExtXKey>
			<speke:KeyFormat></speke:KeyFormat>
			<speke:KeyFormatVersions></speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine)-->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader></speke:ProtectionHeader>
			<cpix:PSSH></cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
    </cpix:CPIX>
```

 *Exemplo de carga de resposta de VOD com chaves em branco* 

O exemplo a seguir mostra uma carga básica de resposta de VOD do provedor de chaves DRM:

```
<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" id="abc123">
	<cpix:ContentKeyList>
		<cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff">
			<cpix:Data>
				<pskc:Secret>
					<pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
				</pskc:Secret>
			</cpix:Data>
		</cpix:ContentKey>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<!-- HLS AES-128 (systemId is implementation specific) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="81376844-f976-481e-a84e-cc25d39b0b33">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>aWRlbnRpdHk=</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- HLS SAMPLE-AES -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
			<cpix:URIExtXKey>aHR0cHM6Ly83azR5dHV4cTVkLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL0VrZVN0YWdlL2NsaWVudC9hYmMxMjMvOThlZTU1OTYtY2QzZS1hMjBkLTE2M2EtZTM4MjQyMGM2ZWZm</cpix:URIExtXKey>
			<speke:KeyFormat>Y29tLmFwcGxlLnN0cmVhbWluZ2tleWRlbGl2ZXJ5</speke:KeyFormat>
			<speke:KeyFormatVersions>MQ==</speke:KeyFormatVersions>
		</cpix:DRMSystem>

		<!-- Common encryption (Widevine) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
			<cpix:PSSH>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEoIARIQeSIcblaNbb7Dji6sAtKZzRoNd2lkZXZpbmVfdGVzdCIfa2V5LWlkOmVTSWNibGFOYmI3RGppNnNBdEtaelE9PSoCU0QyAA==</cpix:PSSH>
		</cpix:DRMSystem>

		<!-- Common encryption / MSS (Playready) -->
		<cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
			<speke:ProtectionHeader>CgMAAAEAAQAAAzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4ATwBXAGoAaAB0AHIAMwB1ADkAawArAHIAZABvADEASQBMAFkAMAByAGEAdwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBCADMAQQA2AEEAMwB4AG0AdABkAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAGkAcgBlAGMAdAB0AGEAcABzAC4AbgBlAHQALwBwAHIALwBzAHYAYwAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AUABsAGEAeQBSAGkAZwBoAHQAPQAxACYAYQBtAHAAOwBhAG0AcAA7AGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</speke:ProtectionHeader>
			<cpix:PSSH>AAADMHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAxAQAwAAAQABAAYDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBiAGgAdwBpAGUAWQAxAFcAdgBtADMARABqAGkANgBzAEEAdABLAFoAegBRAD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AGEAVABtAFAASgBWAEMAVgBaADYAcwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHAAcgBsAHMALgBhAHQAdgAtAHAAcwAuAGEAbQBhAHoAbwBuAC4AYwBvAG0ALwBjAGQAcAA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AEkASQBTAF8ARABSAE0AXwBWAEUAUgBTAEkATwBOAD4ANwAuADEALgAxADQAMwA5AC4AMAA8AC8ASQBJAFMAXwBEAFIATQBfAFYARQBSAFMASQBPAE4APgA8AC8AQwBVAFMAVABPAE0AQQBUAFQAUgBJAEIAVQBUAEUAUwA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</cpix:PSSH>
		</cpix:DRMSystem>
	</cpix:DRMSystemList>
</cpix:CPIX>
```

# API SPEKE v1: Criptografia de chave de conteúdo
<a name="content-key-encryption"></a>

Também é possível adicionar a criptografia de chaves de conteúdo à sua implementação do SPEKE. A criptografia da chave de conteúdo garante end-to-end proteção total ao criptografar as chaves de conteúdo para trânsito, além de criptografar o próprio conteúdo. Se não a implementar no seu provedor de chaves, dependerá apenas da criptografia de camada de transporte e da forte autenticação para segurança.

Para usar a criptografia de chave de conteúdo para criptografadores executados na Nuvem AWS, os clientes importam certificados para o AWS Certificate Manager e, em seguida, usam o certificado resultante ARNs para suas atividades de criptografia. O criptografador usa o certificado ARNs e o serviço ACM para fornecer chaves de conteúdo criptografadas ao provedor da chave DRM.

**Restrições**  
O SPEKE oferece suporte à criptografia de chaves de conteúdo, conforme detalhado na especificação CPIX do DASH-IF, com as seguintes restrições:
+ O SPEKE não oferece suporte à verificação de assinatura digital (XMLDSIG) para cargas de solicitação ou resposta.
+ O SPEKE exige 2048 certificados baseados em RSA.

Essas restrições também estão listadas em [Personalizações e restrições à especificação DASH-IF](speke-constraints.md).

**Implementar a criptografia de chaves de conteúdo**  
Para oferecer a criptografia de chaves de conteúdo, inclua o seguinte em suas implementações do provedor de chaves DRM:
+ Gerencie o elemento `<cpix:DeliveryDataList>` nas cargas de solicitação e de resposta.
+ Forneça valores criptografados em `<cpix:ContentKeyList>` das cargas de resposta.

Para obter mais informações sobre esses elementos, consulte a [Especificação do DASH-IF CPIX 2.0](https://dashif.org/docs/DASH-IF-CPIX-v2-0.pdf).

 *Exemplo de elemento de criptografia de chaves de conteúdo ` <cpix:DeliveryDataList> ` na carga de solicitação* 

O exemplo a seguir destaca em negrito o elemento `<cpix:DeliveryDataList>` adicionado:

```
<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="example-test-doc-encryption"
    xmlns:cpix="urn:dashif:org:cpix"
    xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc"
    xmlns:speke="urn:aws:amazon:com:speke">
    <cpix:DeliveryDataList>
        <cpix:DeliveryData id="<ORIGIN SERVER ID>">
            <cpix:DeliveryKey>
                <ds:X509Data>
                    <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate>
                </ds:X509Data>
            </cpix:DeliveryKey>
        </cpix:DeliveryData>
    </cpix:DeliveryDataList>
    <cpix:ContentKeyList>
     ...
    </cpix:ContentKeyList>
</cpix:CPIX>
```

 *Exemplo de elemento de criptografia de chaves de conteúdo ` <cpix:DeliveryDataList> ` na carga de resposta* 

O exemplo a seguir destaca em negrito o elemento `<cpix:DeliveryDataList>` adicionado:

```
<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix"
    xmlns:enc="http://www.w3.org/2001/04/xmlenc#"
    xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc"
    xmlns:speke="urn:aws:amazon:com:speke" id="hls_test_001">
    <cpix:DeliveryDataList>
        <cpix:DeliveryData id="<ORIGIN SERVER ID>">
            <cpix:DeliveryKey>
                <ds:X509Data>
                    <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate>
                </ds:X509Data>
            </cpix:DeliveryKey>
            <cpix:DocumentKey Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc">
                <cpix:Data>
                    <pskc:Secret>
                        <pskc:EncryptedValue>
                            <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
                            <enc:CipherData>
                                <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue>
                            </enc:CipherData>
                        </pskc:EncryptedValue>
                        <pskc:ValueMAC>qnei/5TsfUwDu+8bhsZrLjDRDngvmnUZD2eva7SfXWw=</pskc:ValueMAC>
                    </pskc:Secret>
                </cpix:Data>
            </cpix:DocumentKey>
            <cpix:MACMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512">
                <cpix:Key>
                    <pskc:EncryptedValue>
                        <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
                        <enc:CipherData>
                            <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue>
                        </enc:CipherData>
                    </pskc:EncryptedValue>
                    <pskc:ValueMAC>DGqdpHUfFKxdsO9+EWrPjtdTCVfjPLwwtzEcFC/j0xY=</pskc:ValueMAC>
                </cpix:Key>
            </cpix:MACMethod>
        </cpix:DeliveryData>
    </cpix:DeliveryDataList>
    <cpix:ContentKeyList>
     ...
    </cpix:ContentKeyList>
</cpix:CPIX>
```

 *Exemplo de elemento de criptografia de chaves de conteúdo ` <cpix:ContentKeyList> ` na carga de resposta* 

O exemplo a seguir mostra o tratamento das chaves de conteúdo criptografadas no elemento `<cpix:ContentKeyList>` da carga de resposta. O elemento `<pskc:EncryptedValue>` é usado:

```
   <cpix:ContentKeyList>
        <cpix:ContentKey kid="682681c8-69fa-4434-9f9f-1a7f5389ec02">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:EncryptedValue>
                        <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
                        <enc:CipherData>
                            <enc:CipherValue>NJYebfvJ2TdMm3k6v+rLNVYb0NoTJoTLBBdbpe8nmilEfp82SKa7MkqTn2lmQBPB</enc:CipherValue>
                        </enc:CipherData>
                    </pskc:EncryptedValue>
                    <pskc:ValueMAC>t9lW4WCebfS1GP+dh0IicMs+2+jnrAmfDa4WU6VGHc4=</pskc:ValueMAC>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
```

Por comparação, o exemplo a seguir mostra uma carga de resposta semelhante à chave de conteúdo entregue sem criptografia, como uma chave em branco. O elemento `<pskc:PlainValue>` é usado:

```
    <cpix:ContentKeyList>
        <cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="682681c8-69fa-4434-9f9f-1a7f5389ec02">
            <cpix:Data>
                <pskc:Secret>
                    <pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue>
                </pskc:Secret>
            </cpix:Data>
        </cpix:ContentKey>
    </cpix:ContentKeyList>
```

# API SPEKE v1: Heartbeat
<a name="heartbeat"></a>

 *Exemplo de sintaxe de solicitação* 

O seguinte URL é um exemplo e não indica um formato fixo:

```
GET https://speke-compatible-server/speke/v1.0/heartbeat
```

 *Resposta de solicitação* 


| CÓDIGO HTTP | Nome da carga | Ocorre | Description | 
| --- | --- | --- | --- | 
|   `200 (Success)`   |  statusMessage  |  1..1  |  Mensagem que descreve o status  | 

# SPEKE API v1: Substituindo o identificador de chave
<a name="kid-override"></a>

O criptografador cria um novo identificador de chave (KID) sempre que ele alterna chaves. Ele repassa o KID para o provedor de chaves de DRM nas solicitações. Quase sempre, o provedor de chaves responde usando o mesmo KID, mas pode fornecer um valor diferente para o KID na resposta.

O seguinte é uma solicitação de exemplo com o KID `11111111-1111-1111-1111-111111111111`:

```
    <cpix:CPIX id="abc123" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
      <cpix:ContentKeyList>
       <cpix:ContentKey kid="11111111-1111-1111-1111-111111111111"></cpix:ContentKey>
      </cpix:ContentKeyList>
      <cpix:DRMSystemList>
       <!-- Common encryption (Widevine)-->
       <cpix:DRMSystem kid="11111111-1111-1111-1111-111111111111" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
        <cpix:PSSH />
       </cpix:DRMSystem>
      </cpix:DRMSystemList>
      <cpix:ContentKeyPeriodList>
       <cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
      </cpix:ContentKeyPeriodList>
      <cpix:ContentKeyUsageRuleList>
       <cpix:ContentKeyUsageRule kid="11111111-1111-1111-1111-111111111111">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
       </cpix:ContentKeyUsageRule>
      </cpix:ContentKeyUsageRuleList>
     </cpix:CPIX>
```

A seguinte resposta substitui o KID por `22222222-2222-2222-2222-222222222222`:

```
     <cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" id="abc123">
      <cpix:ContentKeyList>
       <cpix:ContentKey explicitIV="ASgwx9pQ2/2lnDzJsUxWcQ==" kid="22222222-2222-2222-2222-222222222222">
        <cpix:Data>
         <pskc:Secret>
          <pskc:PlainValue>p3dWaHARtL97MpT7TE916w==</pskc:PlainValue>
         </pskc:Secret>
        </cpix:Data>
       </cpix:ContentKey>
      </cpix:ContentKeyList>
      <cpix:DRMSystemList>
       <cpix:DRMSystem kid="22222222-2222-2222-2222-222222222222" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
        <cpix:PSSH>AAAAanBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEoIARIQeSIcblaNbb7Dji6sAtKZzRoNd2lkZXZpbmVfdGVzdCIfa2V5LWlkOmVTSWNibGFOYmI3RGppNnNBdEtaelE9PSoCU0QyAA==</cpix:PSSH>
       </cpix:DRMSystem>
      </cpix:DRMSystemList>
      <cpix:ContentKeyPeriodList>
       <cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" />
      </cpix:ContentKeyPeriodList>
      <cpix:ContentKeyUsageRuleList>
       <cpix:ContentKeyUsageRule kid="22222222-2222-2222-2222-222222222222">
        <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" />
       </cpix:ContentKeyUsageRule>
      </cpix:ContentKeyUsageRuleList>
     </cpix:CPIX>
```