Aller au contenu principal

6.1. Encryption and Decryption (Chiffrement et déchiffrement)

6.1. Encryption and Decryption (Chiffrement et déchiffrement)

Dans de nombreux cas, les applications ne chiffrent qu'un seul message vers la clé publique d'un destinataire. Cette section fournit des modèles pour les APIs HPKE qui implémentent un chiffrement et déchiffrement sans état "à usage unique" en utilisant les APIs spécifiées dans les sections 5.1.1 et 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)

Le paramètre de modèle MODE est l'un de Base, PSK, Auth ou AuthPSK. Les paramètres optionnels indiqués par "..." dépendent de MODE et peuvent être vides. Par exemple, SetupBase() n'a pas de paramètres supplémentaires. SealAuthPSK() et OpenAuthPSK() seraient implémentés comme suit:

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)