Aller au contenu principal

2.3. Paramètres de signature (Signature Parameters)

2.3. Paramètres de signature

Les signatures de message HTTP ont des propriétés de métadonnées qui fournissent des informations sur la génération et la vérification de la signature: l'ensemble ordonné des composants couverts et l'ensemble ordonné des paramètres, où les paramètres incluent un horodatage de création de la signature, des identifiants pour le matériel de clé de vérification, et d'autres utilitaires. Ces métadonnées sont représentées par un composant de message spécial dans la base de signature pour les paramètres de signature; ce composant de message spécial est traité légèrement différemment des autres composants de message. En particulier, le composant de message des paramètres de signature est REQUIS comme dernière ligne de la base de signature (Section 2.5), et l'identifiant de composant NE DOIT PAS être énuméré dans l'ensemble des composants couverts pour une signature, y compris pour lui-même.

Le nom de composant des paramètres de signature est @signature-params.

La valeur de composant des paramètres de signature est la sérialisation des paramètres de signature pour cette signature, y compris l'ensemble ordonné des composants couverts avec tous les paramètres associés. Ces paramètres peuvent inclure notamment:

created: Heure de création comme valeur d'horodatage UNIX de type Integer. La précision sous la seconde n'est pas prise en charge. L'inclusion de ce paramètre est RECOMMANDÉE.

expires: Heure d'expiration comme valeur d'horodatage UNIX de type Integer. La précision sous la seconde n'est pas prise en charge.

nonce: Une valeur aléatoire unique générée pour cette signature, comme valeur String.

alg: L'algorithme de signature de message HTTP du registre « HTTP Signature Algorithms », comme valeur String.

keyid: L'identifiant du matériel de clé, comme valeur String.

tag: Une étiquette propre à l'application pour la signature, comme valeur String. Cette valeur aide les applications à repérer les signatures pertinentes pour des applications ou protocoles spécifiques.

Des paramètres supplémentaires peuvent être définis dans le registre « HTTP Signature Metadata Parameters » (Section 6.3). Les paramètres n'ont pas d'ordre général imposé, mais une fois un ordre choisi pour un ensemble donné de paramètres, il ne peut être modifié sans altérer la valeur des paramètres de signature.

La valeur de composant des paramètres de signature est sérialisée comme une Inner List paramétrée selon les règles de la Section 4 de [STRUCTURED-FIELDS], comme suit:

  1. Soit la sortie une chaîne vide.

  2. Déterminer un ordre pour les identifiants de composant des composants couverts, sans inclure l'identifiant de composant @signature-params lui-même. Une fois cet ordre choisi, il ne peut être modifié. Cet ordre DOIT être le même que celui utilisé pour créer la base de signature (Section 2.5).

  3. Sérialiser les identifiants de composant des composants couverts, y compris tous les paramètres, comme une Inner List ordonnée de valeurs String selon la Section 4.1.1.1 de [STRUCTURED-FIELDS]; puis ajouter cela à la sortie. Les identifiants de composant peuvent inclure leurs propres paramètres, et ces paramètres forment des ensembles ordonnés. Une fois un ordre choisi pour les paramètres d'un composant, l'ordre ne peut être modifié.

  4. Déterminer un ordre pour les paramètres de signature éventuels. Une fois cet ordre choisi, il ne peut être modifié.

  5. Ajouter les paramètres à la Inner List dans l'ordre selon la Section 4.1.1.2 de [STRUCTURED-FIELDS], en sautant les paramètres indisponibles ou non utilisés pour cette signature de message.

  6. La sortie contient la valeur de composant des paramètres de signature.

Notez que la sérialisation Inner List de la Section 4.1.1.1 de [STRUCTURED-FIELDS] est utilisée pour la valeur des composants couverts au lieu de la sérialisation List de la Section 4.1.1 de [STRUCTURED-FIELDS], afin de faciliter le parallélisme avec l'inclusion de cette valeur dans le champ Signature-Input, comme à la Section 4.1.

Cet exemple montre la valeur de composant sérialisée pour les paramètres d'une signature de message d'exemple:

NOTE: retour à la ligne '' selon la RFC 8792

("@target-uri" "@authority" "date" "cache-control")
;keyid="test-key-rsa-pss";alg="rsa-pss-sha512";
created=1618884475;expires=1618884775

Un message HTTP peut contenir plusieurs signatures (Section 4.3), mais seuls les paramètres de signature utilisés pour une signature donnée sont inclus dans une entrée de paramètres de signature donnée.