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)