メインコンテンツまでスキップ

6.1. Encryption and Decryption (暗号化と復号化)

6.1. Encryption and Decryption (暗号化と復号化)

多くの場合, アプリケーションは受信者の公開鍵に対して単一のメッセージのみを暗号化します。このセクションは, セクション 5.1.1 および 5.2 で指定された API を使用して, ステートレスな「シングルショット」暗号化および復号化を実装する HPKE API のテンプレートを提供します:

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)

MODE テンプレートパラメータは Base, PSK, Auth, または AuthPSK のいずれかです。"..." で示されるオプションパラメータは MODE に依存し, 空である場合があります。たとえば, SetupBase() には追加のパラメータはありません。SealAuthPSK() および OpenAuthPSK() は次のように実装されます:

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)