2.3. Signature Parameters (Parametri della firma)
2.3. Signature Parameters (Parametri della firma)
Le firme dei messaggi HTTP hanno proprietà di metadati che forniscono informazioni sulla generazione e verifica della firma: l'insieme ordinato delle componenti coperte e l'insieme ordinato dei parametri, dove i parametri includono un timestamp di creazione, identificatori del materiale di chiave per la verifica e altre utilità. Tali metadati sono rappresentati da una componente speciale del messaggio nella base della firma per i parametri della firma; questa componente speciale è trattata in modo leggermente diverso dalle altre. In particolare, la componente dei parametri della firma è RICHIESTA come ultima riga della base (Sezione 2.5), e l'identificatore di componente NON DEVE essere enumerato nell'insieme delle componenti coperte per alcuna firma, inclusa se stessa.
Il nome della componente dei parametri della firma è @signature-params.
Il valore della componente è la serializzazione dei parametri della firma per questa firma, incluso l'insieme ordinato delle componenti coperte con tutti i parametri associati. Tali parametri possono includere:
created: Istante di creazione come UNIX timestamp di tipo Integer. Non è supportata la precisione sub-secondo. L'inclusione di questo parametro è RACCOMANDATA.
expires: Istante di scadenza come UNIX timestamp di tipo Integer. Precisione sub-secondo non supportata.
nonce: Valore casuale univoco generato per questa firma come String.
alg: L'algoritmo di firma del messaggio HTTP dal registro "HTTP Signature Algorithms", come String.
keyid: Identificatore del materiale di chiave come String.
tag: Etichetta specifica dell'applicazione per la firma come String. Usata dalle applicazioni per identificare firme rilevanti per protocolli o applicazioni specifiche.
Parametri aggiuntivi possono essere definiti nel registro "HTTP Signature Metadata Parameters" (Sezione 6.3). I parametri non hanno un ordine generale generico, ma una volta scelto un ordine per un dato insieme, non può essere cambiato senza alterare il valore dei parametri della firma.
Il valore della componente è serializzato come Inner List parametrizzata secondo la Sezione 4 di [STRUCTURED-FIELDS] come segue:
-
Sia l'output una stringa vuota.
-
Determinare un ordine per gli identificatori delle componenti coperte, escluso
@signature-params. Una volta scelto, non può essere cambiato. L'ordine DEVE essere lo stesso usato nella creazione della base (Sezione 2.5). -
Serializzare gli identificatori delle componenti coperte, inclusi tutti i parametri, come Inner List ordinata di String secondo la Sezione 4.1.1.1 di [STRUCTURED-FIELDS]; appendere all'output. Gli identificatori possono includere parametri propri, anch'essi insiemi ordinati; l'ordine scelto non può cambiare.
-
Determinare un ordine per i parametri della firma. Una volta scelto, non può cambiare.
-
Appendere i parametri all'Inner List in ordine secondo la Sezione 4.1.1.2 di [STRUCTURED-FIELDS], saltando parametri non disponibili o non usati.
-
L'output contiene il valore della componente dei parametri della firma.
La serializzazione Inner List dalla Sezione 4.1.1.1 di [STRUCTURED-FIELDS] è usata per il valore delle componenti coperte invece della List della Sezione 4.1.1 per facilitare il parallelismo con l'inclusione nel campo Signature-Input, come in Sezione 4.1.
Esempio di valore serializzato per i parametri di una firma di esempio:
NOTA: '\' indica andare a capo secondo RFC 8792
("@target-uri" "@authority" "date" "cache-control")\ ;keyid="test-key-rsa-pss";alg="rsa-pss-sha512";\ created=1618884475;expires=1618884775
Un messaggio HTTP può contenere più firme (Sezione 4.3), ma solo i parametri della firma usati per una singola firma sono inclusi in una data voce dei parametri della firma.