Introduce the GCM cipher mode so authenticated encryption can be built on top of the existing qcrypto_cipher API. GCM is an IV-based mode, so register it in mode_need_iv. No backend advertises it yet, so it stays unsupported until a backend and the AAD/tag helpers are added in the following patches.
Signed-off-by: Jamin Lin <[email protected]> Reviewed-by: Daniel P. Berrangé <[email protected]> Acked-by: Daniel P. Berrangé <[email protected]> --- qapi/crypto.json | 4 +++- crypto/cipher.c | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/qapi/crypto.json b/qapi/crypto.json index 2b55befef9..6e3a98ff68 100644 --- a/qapi/crypto.json +++ b/qapi/crypto.json @@ -121,10 +121,12 @@ # # @ctr: Counter (Since 2.8) # +# @gcm: Galois/Counter Mode (Since 11.2) +# # Since: 2.6 ## { 'enum': 'QCryptoCipherMode', - 'data': ['ecb', 'cbc', 'xts', 'ctr']} + 'data': ['ecb', 'cbc', 'xts', 'ctr', 'gcm']} ## # @QCryptoIVGenAlgo: diff --git a/crypto/cipher.c b/crypto/cipher.c index 515165e0dc..52d071a90c 100644 --- a/crypto/cipher.c +++ b/crypto/cipher.c @@ -66,6 +66,7 @@ static const bool mode_need_iv[QCRYPTO_CIPHER_MODE__MAX] = { [QCRYPTO_CIPHER_MODE_CBC] = true, [QCRYPTO_CIPHER_MODE_XTS] = true, [QCRYPTO_CIPHER_MODE_CTR] = true, + [QCRYPTO_CIPHER_MODE_GCM] = true, }; -- 2.43.0
