[REFS[
- [1] [CITE@en[[[RFC 5116]] - An Interface and Algorithms for Authenticated Encryption]], [TIME[2020-03-09 11:28:31 +09:00]] <https://tools.ietf.org/html/rfc5116#section-5.1>
]REFS]

[2] [CODE[AEAD_AES_128_GCM]]
([VAR[[RUBYB[[[鍵]]][key]]]],
[VAR[[[nonce]]]],
[VAR[[RUBYB[[[平文]]][plaintext]]]],
[VAR[[RUBYB[関連付けされたデータ][associated data]]]])

[FIG(steps)[
= [3] 
[VAR[[RUBYB[暗号文][ciphertext]]]]と[VAR[[RUBYB[認証タグ][authentication tag]]]]を、
[[GCM]] [RUBYB[暗号化操作][encryption operation]]を実行した結果に設定します。
[FIG(list members)[
: [[block cipher]] : [[AES-128]]
: [VAR[key]] : [VAR[鍵]]
: [VAR[nonce]] : [VAR[nonce]]
: [VAR[plaintext]] : [VAR[平文]]
: [VAR[associated data]] : [VAR[関連付けされたデータ]]

]FIG]
= [6] [[Assert]]: [VAR[認証タグ]]は128ビットです。
= [4] 
[VAR[認証タグ]]を、
[VAR[暗号文]]の[[末尾に追加]]します。
= [7] [VAR[暗号文]]の長さ = [VAR[平文]]の長さ + 16[[バイト]]です。
= [5] [VAR[暗号文]]を返します。
]FIG]

;;
[FIG(math)[
[VAR[K_LEN]] = 16 [[バイト]]

[VAR[P_MAX]] = 2[SUP[36]] - 31 [[バイト]]

[VAR[A_MAX]] = 2[SUP[61]] - 1 [[バイト]]

[VAR[N_MIN]] = 12 [[バイト]]

[VAR[N_MAX]] = 12 [[バイト]]

[VAR[C_MAX]] = 2{SUP[36]] - 15 [[バイト]]
]FIG]

