diff options
Diffstat (limited to 'crypto/chacha20_generic.c')
| -rw-r--r-- | crypto/chacha20_generic.c | 28 | 
1 files changed, 12 insertions, 16 deletions
diff --git a/crypto/chacha20_generic.c b/crypto/chacha20_generic.c index fa42e708aa96..da9c89968223 100644 --- a/crypto/chacha20_generic.c +++ b/crypto/chacha20_generic.c @@ -13,14 +13,7 @@  #include <linux/crypto.h>  #include <linux/kernel.h>  #include <linux/module.h> - -#define CHACHA20_NONCE_SIZE 16 -#define CHACHA20_KEY_SIZE   32 -#define CHACHA20_BLOCK_SIZE 64 - -struct chacha20_ctx { -	u32 key[8]; -}; +#include <crypto/chacha20.h>  static inline u32 rotl32(u32 v, u8 n)  { @@ -108,7 +101,7 @@ static void chacha20_docrypt(u32 *state, u8 *dst, const u8 *src,  	}  } -static void chacha20_init(u32 *state, struct chacha20_ctx *ctx, u8 *iv) +void crypto_chacha20_init(u32 *state, struct chacha20_ctx *ctx, u8 *iv)  {  	static const char constant[16] = "expand 32-byte k"; @@ -129,8 +122,9 @@ static void chacha20_init(u32 *state, struct chacha20_ctx *ctx, u8 *iv)  	state[14] = le32_to_cpuvp(iv +  8);  	state[15] = le32_to_cpuvp(iv + 12);  } +EXPORT_SYMBOL_GPL(crypto_chacha20_init); -static int chacha20_setkey(struct crypto_tfm *tfm, const u8 *key, +int crypto_chacha20_setkey(struct crypto_tfm *tfm, const u8 *key,  			   unsigned int keysize)  {  	struct chacha20_ctx *ctx = crypto_tfm_ctx(tfm); @@ -144,8 +138,9 @@ static int chacha20_setkey(struct crypto_tfm *tfm, const u8 *key,  	return 0;  } +EXPORT_SYMBOL_GPL(crypto_chacha20_setkey); -static int chacha20_crypt(struct blkcipher_desc *desc, struct scatterlist *dst, +int crypto_chacha20_crypt(struct blkcipher_desc *desc, struct scatterlist *dst,  			  struct scatterlist *src, unsigned int nbytes)  {  	struct blkcipher_walk walk; @@ -155,7 +150,7 @@ static int chacha20_crypt(struct blkcipher_desc *desc, struct scatterlist *dst,  	blkcipher_walk_init(&walk, dst, src, nbytes);  	err = blkcipher_walk_virt_block(desc, &walk, CHACHA20_BLOCK_SIZE); -	chacha20_init(state, crypto_blkcipher_ctx(desc->tfm), walk.iv); +	crypto_chacha20_init(state, crypto_blkcipher_ctx(desc->tfm), walk.iv);  	while (walk.nbytes >= CHACHA20_BLOCK_SIZE) {  		chacha20_docrypt(state, walk.dst.virt.addr, walk.src.virt.addr, @@ -172,6 +167,7 @@ static int chacha20_crypt(struct blkcipher_desc *desc, struct scatterlist *dst,  	return err;  } +EXPORT_SYMBOL_GPL(crypto_chacha20_crypt);  static struct crypto_alg alg = {  	.cra_name		= "chacha20", @@ -187,11 +183,11 @@ static struct crypto_alg alg = {  		.blkcipher = {  			.min_keysize	= CHACHA20_KEY_SIZE,  			.max_keysize	= CHACHA20_KEY_SIZE, -			.ivsize		= CHACHA20_NONCE_SIZE, +			.ivsize		= CHACHA20_IV_SIZE,  			.geniv		= "seqiv", -			.setkey		= chacha20_setkey, -			.encrypt	= chacha20_crypt, -			.decrypt	= chacha20_crypt, +			.setkey		= crypto_chacha20_setkey, +			.encrypt	= crypto_chacha20_crypt, +			.decrypt	= crypto_chacha20_crypt,  		},  	},  };  |