| From 38da46b5891908fa371ed583e1baebeb60e849b8 Mon Sep 17 00:00:00 2001 |
| From: Eric Biggers <ebiggers@google.com> |
| Date: Sun, 2 Jun 2019 22:46:11 -0700 |
| Subject: [PATCH] crypto: skcipher - make chunksize and walksize accessors |
| internal |
| |
| commit 314d0f0ea69f2fb8e6fc4cb5d5ae6b1e3418e36c upstream. |
| |
| The 'chunksize' and 'walksize' properties of skcipher algorithms are |
| implementation details that users of the skcipher API should not be |
| looking at. So move their accessor functions from <crypto/skcipher.h> |
| to <crypto/internal/skcipher.h>. |
| |
| Signed-off-by: Eric Biggers <ebiggers@google.com> |
| Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/include/crypto/internal/skcipher.h b/include/crypto/internal/skcipher.h |
| index fe0376d5a471..d68faa5759ad 100644 |
| --- a/include/crypto/internal/skcipher.h |
| +++ b/include/crypto/internal/skcipher.h |
| @@ -200,6 +200,66 @@ static inline unsigned int crypto_skcipher_alg_max_keysize( |
| return alg->max_keysize; |
| } |
| |
| +static inline unsigned int crypto_skcipher_alg_chunksize( |
| + struct skcipher_alg *alg) |
| +{ |
| + if ((alg->base.cra_flags & CRYPTO_ALG_TYPE_MASK) == |
| + CRYPTO_ALG_TYPE_BLKCIPHER) |
| + return alg->base.cra_blocksize; |
| + |
| + if (alg->base.cra_ablkcipher.encrypt) |
| + return alg->base.cra_blocksize; |
| + |
| + return alg->chunksize; |
| +} |
| + |
| +static inline unsigned int crypto_skcipher_alg_walksize( |
| + struct skcipher_alg *alg) |
| +{ |
| + if ((alg->base.cra_flags & CRYPTO_ALG_TYPE_MASK) == |
| + CRYPTO_ALG_TYPE_BLKCIPHER) |
| + return alg->base.cra_blocksize; |
| + |
| + if (alg->base.cra_ablkcipher.encrypt) |
| + return alg->base.cra_blocksize; |
| + |
| + return alg->walksize; |
| +} |
| + |
| +/** |
| + * crypto_skcipher_chunksize() - obtain chunk size |
| + * @tfm: cipher handle |
| + * |
| + * The block size is set to one for ciphers such as CTR. However, |
| + * you still need to provide incremental updates in multiples of |
| + * the underlying block size as the IV does not have sub-block |
| + * granularity. This is known in this API as the chunk size. |
| + * |
| + * Return: chunk size in bytes |
| + */ |
| +static inline unsigned int crypto_skcipher_chunksize( |
| + struct crypto_skcipher *tfm) |
| +{ |
| + return crypto_skcipher_alg_chunksize(crypto_skcipher_alg(tfm)); |
| +} |
| + |
| +/** |
| + * crypto_skcipher_walksize() - obtain walk size |
| + * @tfm: cipher handle |
| + * |
| + * In some cases, algorithms can only perform optimally when operating on |
| + * multiple blocks in parallel. This is reflected by the walksize, which |
| + * must be a multiple of the chunksize (or equal if the concern does not |
| + * apply) |
| + * |
| + * Return: walk size in bytes |
| + */ |
| +static inline unsigned int crypto_skcipher_walksize( |
| + struct crypto_skcipher *tfm) |
| +{ |
| + return crypto_skcipher_alg_walksize(crypto_skcipher_alg(tfm)); |
| +} |
| + |
| /* Helpers for simple block cipher modes of operation */ |
| struct skcipher_ctx_simple { |
| struct crypto_cipher *cipher; /* underlying block cipher */ |
| diff --git a/include/crypto/skcipher.h b/include/crypto/skcipher.h |
| index ce7fa0973580..4188fe6033ef 100644 |
| --- a/include/crypto/skcipher.h |
| +++ b/include/crypto/skcipher.h |
| @@ -288,66 +288,6 @@ static inline unsigned int crypto_sync_skcipher_ivsize( |
| return crypto_skcipher_ivsize(&tfm->base); |
| } |
| |
| -static inline unsigned int crypto_skcipher_alg_chunksize( |
| - struct skcipher_alg *alg) |
| -{ |
| - if ((alg->base.cra_flags & CRYPTO_ALG_TYPE_MASK) == |
| - CRYPTO_ALG_TYPE_BLKCIPHER) |
| - return alg->base.cra_blocksize; |
| - |
| - if (alg->base.cra_ablkcipher.encrypt) |
| - return alg->base.cra_blocksize; |
| - |
| - return alg->chunksize; |
| -} |
| - |
| -static inline unsigned int crypto_skcipher_alg_walksize( |
| - struct skcipher_alg *alg) |
| -{ |
| - if ((alg->base.cra_flags & CRYPTO_ALG_TYPE_MASK) == |
| - CRYPTO_ALG_TYPE_BLKCIPHER) |
| - return alg->base.cra_blocksize; |
| - |
| - if (alg->base.cra_ablkcipher.encrypt) |
| - return alg->base.cra_blocksize; |
| - |
| - return alg->walksize; |
| -} |
| - |
| -/** |
| - * crypto_skcipher_chunksize() - obtain chunk size |
| - * @tfm: cipher handle |
| - * |
| - * The block size is set to one for ciphers such as CTR. However, |
| - * you still need to provide incremental updates in multiples of |
| - * the underlying block size as the IV does not have sub-block |
| - * granularity. This is known in this API as the chunk size. |
| - * |
| - * Return: chunk size in bytes |
| - */ |
| -static inline unsigned int crypto_skcipher_chunksize( |
| - struct crypto_skcipher *tfm) |
| -{ |
| - return crypto_skcipher_alg_chunksize(crypto_skcipher_alg(tfm)); |
| -} |
| - |
| -/** |
| - * crypto_skcipher_walksize() - obtain walk size |
| - * @tfm: cipher handle |
| - * |
| - * In some cases, algorithms can only perform optimally when operating on |
| - * multiple blocks in parallel. This is reflected by the walksize, which |
| - * must be a multiple of the chunksize (or equal if the concern does not |
| - * apply) |
| - * |
| - * Return: walk size in bytes |
| - */ |
| -static inline unsigned int crypto_skcipher_walksize( |
| - struct crypto_skcipher *tfm) |
| -{ |
| - return crypto_skcipher_alg_walksize(crypto_skcipher_alg(tfm)); |
| -} |
| - |
| /** |
| * crypto_skcipher_blocksize() - obtain block size of cipher |
| * @tfm: cipher handle |
| -- |
| 2.7.4 |
| |