Passa al contenuto principale

6.1. Encryption and Decryption (Cifratura e decifratura)

6.1. Encryption and Decryption (Cifratura e decifratura)

In molti casi, le applicazioni cifrano solo un singolo messaggio verso la chiave pubblica di un destinatario. Questa sezione fornisce modelli per API HPKE che implementano cifratura e decifratura "a singola esecuzione" senza stato utilizzando le API specificate nelle sezioni 5.1.1 e 5.2:

def Seal<MODE>(pkR, info, aad, pt, ...):
enc, ctx = Setup<MODE>S(pkR, info, ...)
ct = ctx.Seal(aad, pt)
return enc, ct

def Open<MODE>(enc, skR, info, aad, ct, ...):
ctx = Setup<MODE>R(enc, skR, info, ...)
return ctx.Open(aad, ct)

Il parametro template MODE è uno tra Base, PSK, Auth o AuthPSK. I parametri opzionali indicati da "..." dipendono da MODE e possono essere vuoti. Ad esempio, SetupBase() non ha parametri aggiuntivi. SealAuthPSK() e OpenAuthPSK() sarebbero implementati come segue:

def SealAuthPSK(pkR, info, aad, pt, psk, psk_id, skS):
enc, ctx = SetupAuthPSKS(pkR, info, psk, psk_id, skS)
ct = ctx.Seal(aad, pt)
return enc, ct

def OpenAuthPSK(enc, skR, info, aad, ct, psk, psk_id, pkS):
ctx = SetupAuthPSKR(enc, skR, info, psk, psk_id, pkS)
return ctx.Open(aad, ct)