Passa al contenuto principale

5. Requesting Signatures (Richiesta di firme)

5. Requesting Signatures (Richiesta di firme)​

Un firmatario può allegare una firma senza sollecito, ma spesso il verificatore potenziale segnala di attendersi una firma con il campo Accept-Signature.

Se Accept-Signature è in una richiesta HTTP, indica che il client desidera che il server firmi la risposta con i parametri indicati; il messaggio di destinazione è la risposta a tale richiesta. Le risorse che supportano tale negoziazione DOVREBBERO rispondere non cacheabili o con Vary che elenca Accept-Signature, per evitare che una cache restituisca una firma destinata a un'altra richiesta.

Se Accept-Signature è in una risposta HTTP, indica che il server desidera che il client firmi la richiesta successiva con i parametri indicati; il messaggio di destinazione è la richiesta successiva del client. Il client può continuare a firmare richieste successive allo stesso modo.

Il messaggio di destinazione di Accept-Signature DEVE includere tutte le firme etichettate indicate nel campo, ciascuna che copre le stesse componenti identificate.

Il mittente di Accept-Signature DEVE includere solo identificatori appropriati al tipo di messaggio. Se il target è una richiesta, le componenti coperte non possono includere @status.

5.1. Il campo Accept-Signature​

Accept-Signature è un Dictionary Structured Field con metadati per una o più firme richieste sul target. Ogni membro descrive una firma richiesta. La chiave è l'etichetta univoca nel contesto del target.

Il valore è la serializzazione delle componenti coperte desiderate, inclusi parametri di metadati consentiti, con il processo della Sezione 2.3:

NOTA: '\' per RFC 8792

Accept-Signature: sig1=("@method" "@target-uri" "@authority" \ "content-digest" "cache-control");\ keyid="test-key-rsa-pss";created;tag="app-123"

L'elenco indica l'insieme esatto di identificatori, inclusi i parametri di componente applicabili.

La richiesta di firma PUÒ includere parametri di metadati che indicano comportamenti desiderati:

created: si chiede di generare e includere l'istante di creazione. Senza valore associato nella richiesta.

expires: si chiede di generare e includere la scadenza. Senza valore associato.

nonce: si chiede di usare il valore di questo parametro come nonce della firma nel target.

alg: si chiede di usare l'algoritmo indicato dal registro.

keyid: si chiede di usare il materiale di chiave indicato.

tag: si chiede di includere questo valore come tag della firma nel target.

5.2. Elaborazione di Accept-Signature​

Il destinatario soddisfa il campo così:

  1. Analizzare il valore come Dictionary.

  2. Per ogni membro:

2.1. La chiave è l'etichetta dell'output come Sezione 4.1.

2.2. Analizzare il valore per ottenere l'insieme degli identificatori coperti.

2.3. Verificare che le componenti siano applicabili al target; altrimenti errore.

2.4. Elaborare i parametri richiesti (algoritmo, chiave, ecc.); se non soddisfacibili o in conflitto con il target, errore.

2.5. Selezionare e generare parametri aggiuntivi necessari.

2.6. Creare la firma sul target.

2.7. Creare i valori Signature-Input e Signature con l'etichetta.

  1. Opzionalmente creare ulteriori coppie con etichette non presenti in Accept-Signature.

  2. Combinare tutte le coppie etichettate e allegare entrambi i campi al target.

Con questo processo, una firma sul target DEVE avere la stessa etichetta, DEVE includere lo stesso insieme di componenti coperte, DEVE elaborare tutti i parametri richiesti e PUÒ avere parametri aggiuntivi.

Il destinatario PUÒ ignorare richieste che non rispettano i parametri dell'applicazione.

Il target PUÒ includere firme aggiuntive non specificate da Accept-Signature (es. seconda firma con più componenti e output della firma richiesta).