

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Calculs de signature pour les en-têtes de fin (téléchargements fragmentés) (AWS Signature (version 4)
<a name="sigv4-streaming-trailers"></a>

Lorsque vous authentifiez des demandes à l'aide de l'`Authorization`en-tête, vous pouvez également télécharger la charge utile par morceaux. Lorsque vous envoyez les données de l'objet par morceaux, vous avez également la possibilité d'inclure des en-têtes de fin. (Pour plus d’informations, consultez [Calculs de signature pour l'en-tête d'autorisation : transfert de la charge utile en plusieurs segments (téléchargement fragmenté) (AWS Signature (version 4)](sigv4-streaming.md).) Cette section décrit les étapes à suivre lorsque vous souhaitez inclure un en-tête de fin à la fin de votre téléchargement de plusieurs blocs.

 

**Important**  
Lorsque vous incluez des en-têtes de fin, vous devez envoyer les informations suivantes dans votre en-tête initial :   
Vous devez `x-amz-content-sha256` définir une valeur appropriée qui indique qu'une remorque sera incluse. Pour connaître les valeurs acceptables pour`x-amz-content-sha256`, consultez[Authentification des demandes : utilisation de l'en-tête d'autorisation (AWS Signature (version 4)](sigv4-auth-using-authorization-header.md).
Vous devez configurer `x-amz-trailer` pour indiquer le contenu que vous incluez dans votre en-tête final.

 Les en-têtes de fin ne sont envoyés qu'une fois que les morceaux ont été chargés. Les segments précédents sont envoyés normalement et signés comme décrit dans les sections précédentes, y compris l'envoi du dernier bloc avec une charge utile de 0 octet. Les en-têtes de fin sont inclus dans leur propre bloc et envoyés après le dernier bloc avec une charge utile de 0 octet. Par exemple, si vos données se terminaient par un bloc de 100 Ko, vous enverriez les informations suivantes : 
+ Morceaux de données précédents
+ Bloc final de 100 Ko de l'objet
+ Bloc de 0 octet indiquant la fin de l'objet
+ Bloc d'en-têtes de fin

## Exemples : vérification des calculs de signature
<a name="example-signature-calculations-trailing-header"></a>

Vous pouvez utiliser les exemples de cette section comme référence pour vérifier les calculs de signature dans votre code. Avant de passer en revue les exemples, prenez note des points suivants :

 
+  Les calculs de signature de ces exemples utilisent les informations d'identification de sécurité suivantes.


<table>
<thead>
  <tr><th>Paramètre</th><th>Value</th></tr>
</thead>
<tbody>
  <tr><td><code>AWSAccessKeyId</code></td><td><code>AKIAIOSFODNN7EXAMPLE</code></td></tr>
  <tr><td><code>AWSSecretAccessKey</code></td><td><code>wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</code></td></tr>
</tbody>
</table>

+ Tous les exemples utilisent l'horodatage de la requête 20130524T000000Z (). `Fri, 24 May 2013 00:00:00 GMT`
+ Tous les exemples sont utilisés `examplebucket` comme nom de compartiment.
+ Le compartiment est supposé se trouver dans la région de l'Est des États-Unis (Virginie du Nord), et les informations d'identification `Scope` et les `Signing Key` calculs sont utilisés `us-east-1` comme spécificateur de région.  Pour plus d’informations, consultez [Régions et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) dans la *Référence générale Amazon Web Services*. 
+ Vous pouvez utiliser des requêtes de style de chemin ou des requêtes de style hébergées virtuellement. Les exemples suivants utilisent des requêtes de style hébergées virtuellement, par exemple : 

  ```
  https://examplebucket.s3.amazonaws.com/photos/photo1.jpg
  ```

  Pour plus d'informations, consultez la section Hébergement [ virtuel de compartiments ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html) dans le guide * de l'utilisateur d'*Amazon Simple Storage Service.

L'exemple suivant envoie une `PUT` demande pour télécharger un objet. Les calculs de signature supposent ce qui suit :

 
+ Vous chargez un fichier texte de 65 Ko dont le contenu est une chaîne d'un caractère composée de la lettre « a ». 
+ La taille du bloc est de 64 Ko. Par conséquent, la charge utile est téléchargée en trois blocs, 64 Ko, 1 Ko, et le dernier bloc contenant 0 octet de données de bloc. 
+ L'objet obtenu porte le nom de clé`chunkObject.txt`.
+ Vous faites une demande `REDUCED_REDUNDANCY` en tant que classe de stockage en ajoutant l'en-tête de `x-amz-storage-class` demande.
+ Le transfert inclut une valeur de somme de contrôle CRC32C en tant qu'en-tête de fin.

Pour plus d'informations sur l'action de l'API, consultez [ PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html). La syntaxe générale des requêtes est la suivante : 

```
PUT /examplebucket/chunkObject.txt HTTP/1.1
Host: s3.amazonaws.com
x-amz-date: 20130524T000000Z 
x-amz-storage-class: REDUCED_REDUNDANCY
Authorization: {{SignatureToBeCalculated}}
x-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
Content-Encoding: aws-chunked
x-amz-decoded-content-length: 66560
x-amz-trailer: x-amz-checksum-crc32c
Content-Length: 66946
{{<Payload>}}
```



Les étapes suivantes présentent les calculs de signature.

1. 

**Signature d'origine — Créer une chaîne à signer**

   1. 

**CanonicalRequest**

       

      ```
      PUT
      /examplebucket/chunkObject.txt
      
      content-encoding:aws-chunked
      host:s3.amazonaws.com
      x-amz-content-sha256:STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
      x-amz-date:20130524T000000Z
      x-amz-decoded-content-length:66560
      x-amz-storage-class:REDUCED_REDUNDANCY
      x-amz-trailer:x-amz-checksum-crc32c
      
      content-encoding;host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-storage-class;x-amz-trailer
      STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
      ```

      Dans la requête canonique, la troisième ligne est vide car elle ne contient aucun paramètre de requête. La dernière ligne est la chaîne constante fournie comme valeur de la charge utile hachée, qui doit être identique à la valeur de. `x-amz-content-sha256 header`

   1. 

**StringToSign**

       

      ```
      AWS4-HMAC-SHA256
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      44d48b8c2f70eae815a0198cc73d7a546a73a93359c070abbaa5e6c7de112559
      ```

       

       
**Note**  
Pour plus d'informations sur chacune des lignes de la chaîne à signer, consultez le schéma qui explique le calcul de la signature initiale.

1. 

**SigningKey**

    

   ```
   signing key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "{{<YourSecretAccessKey>}}","20130524"),"us-east-1"),"s3"),"aws4_request")						
   ```

    

1. 

**Signature de la graine**

    

   ```
   106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e
   ```

    

1. 

**En-tête Authorization**

   L'en-tête Authorization qui en résulte est le suivant :

    

   ```
   AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,SignedHeaders=content-encoding;content-length;host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-storage-class,Signature=106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e
   ```

    

1. 

**Bloc 1 : (65536 octets, avec une valeur 97 pour la lettre « a »)**

   1. Chaîne en morceaux à signer :

      ```
      AWS4-HMAC-SHA256-PAYLOAD
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      bf718b6f653bebc184e1479f1935b8da974d701b893afcf49e701f3e2f9f9c5a
      ```

       
**Note**  
Pour plus d'informations sur chaque ligne de la chaîne à signer, consultez le schéma de la rubrique précédente ([Calcul de la signature de la graine](sigv4-streaming.md#sigv4-chunked-upload-sig-calculation-chunk0)) qui montre les différents composants de la chaîne à signer. Par exemple, les trois dernières lignes sont les suivantes :  
{{previous-signature}}
`hash("")`
`hash({{current-chunk-data}})`

   1. Signature du morceau :

      ```
      b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2
      ```

   1. Données partielles envoyées :

      ```
      10000;chunk-signature=b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2
      <65536-bytes>
      ```

1. 

**Bloc 2 : (1024 octets, avec une valeur 97 pour la lettre « a »)**

   1. Chaîne en morceaux à signer :

      ```
      AWS4-HMAC-SHA256-PAYLOAD
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      2edc986847e209b4016e141a6dc8716d3207350f416969382d431539bf292e4a
      ```

   1. Signature du morceau :

      ```
      1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7
      ```

   1. Données partielles envoyées :

      ```
      400;chunk-signature=1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7
      <1024-bytes>
      ```

1. 

**Bloc 3 : (données de 0 octet)**

   1. Chaîne en morceaux à signer :

      ```
      AWS4-HMAC-SHA256-PAYLOAD
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      ```

   1. Signature du morceau :

      ```
      2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992
      ```

   1. Données partielles envoyées :

      ```
      0;chunk-signature=2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992
      ```

1. 

**Partie 4 : En-têtes de fin**

   1. Chaîne en forme de bande annonce à signer :

      ```
      AWS4-HMAC-SHA256-TRAILER
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992
      1e376db7e1a34a8ef1c4bcee131a2d60a1cb62503747488624e10995f448d774
      ```
**Note**  
Les deux dernières lignes sont `previous-signature` (la signature du bloc de données de 0 octet), `hash` ({{trailing-checksum-header-name}}: {{base64-encoded-trailing-checksum-value}}\\n).  
Le hachage est calculé comme suit, sans espace :   
Le nom de l'en-tête de la somme de contrôle de fin
Un deux-points (`:`)
La valeur de la somme de contrôle finale codée en base64
Un caractère de nouvelle ligne (`\n`). 
Dans cet exemple, où vous utilisez l'algorithme de `crc32c` hachage, avec la valeur de somme de contrôle codée en base64`sOO8/Q==`, vous pouvez représenter le calcul comme suit :. `hash('x-amz-checksum-crc32c:sOO8/Q==\n')`

   1. Signature du morceau :

      ```
      d81f82fc3505edab99d459891051a732e8730629a2e4a59689829ca17fe2e435
      ```

   1. Données partielles envoyées :

      ```
      x-amz-checksum-crc32c:sOO8/Q==
      x-amz-trailer-signature:d81f82fc3505edab99d459891051a732e8730629a2e4a59689829ca17fe2e435
      ```