12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 26350449fSHerbert Xu /* 36350449fSHerbert Xu * geniv: IV generation 46350449fSHerbert Xu * 56350449fSHerbert Xu * Copyright (c) 2015 Herbert Xu <herbert@gondor.apana.org.au> 66350449fSHerbert Xu */ 76350449fSHerbert Xu 86350449fSHerbert Xu #ifndef _CRYPTO_INTERNAL_GENIV_H 96350449fSHerbert Xu #define _CRYPTO_INTERNAL_GENIV_H 106350449fSHerbert Xu 116350449fSHerbert Xu #include <crypto/internal/aead.h> 126350449fSHerbert Xu #include <linux/spinlock.h> 13149a3971SHerbert Xu #include <linux/types.h> 146350449fSHerbert Xu 156350449fSHerbert Xu struct aead_geniv_ctx { 166350449fSHerbert Xu spinlock_t lock; 176350449fSHerbert Xu struct crypto_aead *child; 188d605398SKees Cook struct crypto_sync_skcipher *sknull; 19149a3971SHerbert Xu u8 salt[] __attribute__ ((aligned(__alignof__(u32)))); 206350449fSHerbert Xu }; 216350449fSHerbert Xu 22149a3971SHerbert Xu struct aead_instance *aead_geniv_alloc(struct crypto_template *tmpl, 23*e72b48c5SEric Biggers struct rtattr **tb); 24149a3971SHerbert Xu int aead_init_geniv(struct crypto_aead *tfm); 25149a3971SHerbert Xu void aead_exit_geniv(struct crypto_aead *tfm); 26149a3971SHerbert Xu 276350449fSHerbert Xu #endif /* _CRYPTO_INTERNAL_GENIV_H */ 28