/* * GCM: Galois/Counter Mode. * * Copyright (c) 2007 Nokia Siemens Networks - Mikko Herranen <mh1@iki.fi> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published * by the Free Software Foundation. */#include<crypto/gf128mul.h>#include<crypto/internal/aead.h>#include<crypto/internal/skcipher.h>#include<crypto/internal/hash.h>#include<crypto/scatterwalk.h>#include<crypto/hash.h>#include"internal.h"#include<linux/completion.h>#include<linux/err.h>#include<linux/init.h>#include<linux/kernel.h>#include<linux/module.h>#include<linux/slab.h>structgcm_instance_ctx{structcrypto_skcipher_spawnctr;structcrypto_ahash_spawnghash;};structcrypto_gcm_ctx{structcrypto_ablkcipher*ctr;structcrypto_ahash*ghash;};structcrypto_rfc4106_ctx{structcrypto_aead*child;u8nonce[4];};structcrypto_rfc4543_instance_ctx{structcrypto_aead_spawnaead;structcrypto_skcipher_spawnnull;};structcrypto_rfc4543_ctx{structcrypto_aead*child;structcrypto_blkcipher*null;u8nonce[4];};structcrypto_rfc4543_req_ctx{u8auth_tag[16];u8assocbuf[32];structscatterlistcipher[1];structscatterlistpayload[2];structscatterlistassoc[2];structaead_requestsubreq;};structcrypto_gcm_ghash_ctx{unsignedintcryptlen;