6.1. Encryption and Decryption (Verschlüsselung und Entschlüsselung)
6.1. Encryption and Decryption (Verschlüsselung und Entschlüsselung)
In vielen Fällen verschlüsseln Anwendungen nur eine einzige Nachricht an den öffentlichen Schlüssel eines Empfängers. Dieser Abschnitt bietet Vorlagen für HPKE-APIs, die zustandslose "einmalige" Verschlüsselung und Entschlüsselung unter Verwendung der in den Abschnitten 5.1.1 und 5.2 spezifizierten APIs implementieren:
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)
Der MODE-Vorlagenparameter ist einer von Base, PSK, Auth oder AuthPSK. Die durch "..." angegebenen optionalen Parameter hängen von MODE ab und können leer sein. Zum Beispiel hat SetupBase() keine zusätzlichen Parameter. SealAuthPSK() und OpenAuthPSK() würden wie folgt implementiert:
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)