3.4.4. Integrity Check Value Verification
Il ricevitore calcola l'ICV sui campi appropriati del pacchetto, utilizzando l'algoritmo di integrità specificato, e verifica che sia lo stesso dell'ICV incluso nel campo ICV del pacchetto. I dettagli del calcolo sono forniti di seguito.
Se l'ICV calcolato e quello ricevuto corrispondono, allora il datagramma è valido e viene accettato. Se il test fallisce, allora il ricevitore DEVE scartare il datagramma IP ricevuto come non valido. Questo è un evento verificabile. La voce del registro di audit DOVREBBE includere il valore SPI, la data/ora di ricezione, l'indirizzo sorgente, l'indirizzo di destinazione e (in IPv6) il Flow ID.
Nota di implementazione:
Le implementazioni possono utilizzare qualsiasi insieme di passaggi che risulti nello stesso risultato del seguente insieme di passaggi. Iniziare salvando il valore ICV e sostituendolo (ma non qualsiasi padding del campo ICV) con zero. Azzerare tutti gli altri campi che potrebbero essere stati modificati durante il transito. (Vedere la Sezione 3.3.3.1, "Handling Mutable Fields", per una discussione su quali campi vengono azzerati prima di eseguire il calcolo dell'ICV.) Se l'opzione ESN è eletta per questa SA, aggiungere i 32 bit di ordine superiore dell'ESN dopo la fine del pacchetto. Controllare la lunghezza complessiva del pacchetto (come descritto sopra), e se richiede padding implicito in base ai requisiti dell'algoritmo di integrità, aggiungere byte riempiti di zeri alla fine del pacchetto (dopo l'ESN se presente) come richiesto. Eseguire il calcolo dell'ICV e confrontare il risultato con il valore salvato, utilizzando le regole di confronto definite dalla specifica dell'algoritmo. (Ad esempio, se vengono utilizzati una firma digitale e un hash unidirezionale per il calcolo dell'ICV, il processo di corrispondenza è più complesso.)