From: Jason Cooper <jason@lakedaemon.net>
To: Eric Rost <eric.rost@mybabylon.net>
Cc: gregkh@linuxfoundation.org, jake@lwn.net, antonysaraev@gmail.com,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/2] staging: skein: Add Crypto API support
Date: Thu, 23 Oct 2014 08:42:07 -0400 [thread overview]
Message-ID: <20141023124207.GK17447@titan.lakedaemon.net> (raw)
In-Reply-To: <e9cb9bb24d2c34a6f6d9459a22c79609ff5cb60e.1414030776.git.eric.rost@mybabylon.net>
On Wed, Oct 22, 2014 at 09:23:51PM -0500, Eric Rost wrote:
> Adds crypto API support for the skein module. Also collapses the
> threefish module into the skein module.
>
> Signed-off-by: Eric Rost <eric.rost@mybabylon.net>
> ---
> drivers/staging/skein/Kconfig | 22 +------
> drivers/staging/skein/Makefile | 13 ++--
> drivers/staging/skein/skein.c | 1 +
> drivers/staging/skein/skein.h | 5 ++
> drivers/staging/skein/skein_generic.c | 109 ++++++++++++++++++++++++++++++++++
> 5 files changed, 125 insertions(+), 25 deletions(-)
> create mode 100644 drivers/staging/skein/skein_generic.c
>
> diff --git a/drivers/staging/skein/Kconfig b/drivers/staging/skein/Kconfig
> index b9172bf..de8bdd7 100644
> --- a/drivers/staging/skein/Kconfig
> +++ b/drivers/staging/skein/Kconfig
> @@ -1,8 +1,8 @@
> config CRYPTO_SKEIN
> bool "Skein digest algorithm"
> depends on (X86 || UML_X86) && 64BIT && CRYPTO
> - select CRYPTO_THREEFISH
> select CRYPTO_HASH
> + select CRYPTO_ALGAPI
> help
> Skein secure hash algorithm is one of 5 finalists from the NIST SHA3
> competition.
> @@ -12,21 +12,5 @@ config CRYPTO_SKEIN
>
> http://www.skein-hash.info/sites/default/files/skein1.3.pdf
>
> - for more information. This module depends on the threefish block
> - cipher module.
> -
> -config CRYPTO_THREEFISH
> - bool "Threefish tweakable block cipher"
> - depends on (X86 || UML_X86) && 64BIT && CRYPTO
> - select CRYPTO_ALGAPI
> - help
> - Threefish cipher algorithm is the tweakable block cipher underneath
> - the Skein family of secure hash algorithms. Skein is one of 5
> - finalists from the NIST SHA3 competition.
> -
> - Skein is optimized for modern, 64bit processors and is highly
> - customizable. See:
> -
> - http://www.skein-hash.info/sites/default/files/skein1.3.pdf
> -
> - for more information.
> + for more information. This module also contains the threefish block
> + cipher algorithm.
> diff --git a/drivers/staging/skein/Makefile b/drivers/staging/skein/Makefile
> index a14aadd..382b041 100644
> --- a/drivers/staging/skein/Makefile
> +++ b/drivers/staging/skein/Makefile
> @@ -1,9 +1,10 @@
> #
> # Makefile for the skein secure hash algorithm
> #
> -obj-$(CONFIG_CRYPTO_SKEIN) += skein.o \
> - skein_api.o \
> - skein_block.o
> -
> -obj-$(CONFIG_CRYPTO_THREEFISH) += threefish_block.o \
> - threefish_api.o
> +obj-$(CONFIG_CRYPTO_SKEIN) += skein_mod.o
> +skein_mod-y := skein.o \
> + skein_api.o \
> + skein_block.o \
> + threefish_block.o \
> + threefish_api.o \
> + skein_generic.o
I'd prefer to rename skein.c so that we can do skein.ko.
> diff --git a/drivers/staging/skein/skein.c b/drivers/staging/skein/skein.c
> index 8cc8358..1c3933d 100644
> --- a/drivers/staging/skein/skein.c
> +++ b/drivers/staging/skein/skein.c
> @@ -11,6 +11,7 @@
> #define SKEIN_PORT_CODE /* instantiate any code in skein_port.h */
>
> #include <linux/string.h> /* get the memcpy/memset functions */
> +#include <linux/export.h>
This shouldn't be needed anymore.
> #include "skein.h" /* get the Skein API definitions */
> #include "skein_iv.h" /* get precomputed IVs */
> #include "skein_block.h"
> diff --git a/drivers/staging/skein/skein.h b/drivers/staging/skein/skein.h
> index e6669f1..79fac00 100644
> --- a/drivers/staging/skein/skein.h
> +++ b/drivers/staging/skein/skein.h
> @@ -28,6 +28,11 @@
> **
> ***************************************************************************/
>
> +/*Skein digest sizes for crypto api*/
> +#define SKEIN256_DIGEST_BIT_SIZE (256)
> +#define SKEIN512_DIGEST_BIT_SIZE (512)
> +#define SKEIN1024_DIGEST_BIT_SIZE (1024)
> +
> #ifndef rotl_64
> #define rotl_64(x, N) (((x) << (N)) | ((x) >> (64-(N))))
> #endif
> diff --git a/drivers/staging/skein/skein_generic.c b/drivers/staging/skein/skein_generic.c
> new file mode 100644
> index 0000000..14cc5bd
> --- /dev/null
> +++ b/drivers/staging/skein/skein_generic.c
> @@ -0,0 +1,109 @@
> +/*
> + * Cryptographic API.
> + *
> + * Skein256 Hash Algorithm.
> + *
> + * Derived from cryptoapi implementation, adapted for in-place
> + * scatterlist interface.
> + *
> + * Copyright (c) Eric Rost <eric.rost@mybabylon.net>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the Free
> + * Software Foundation; either version 2 of the License, or (at your option)
> + * any later version.
> + *
> + */
> +#include <crypto/internal/hash.h>
> +#include <linux/init.h>
> +#include <linux/mm.h>
> +#include <linux/cryptohash.h>
> +#include <linux/types.h>
> +#include "skein.h"
> +#include <asm/byteorder.h>
I forgot to mention this last time. Please put local includes last.
Also, please double check that all of these are need in this file.
> +
> +static int skein256_init(struct shash_desc *desc)
> +{
> + struct skein_256_ctx *sctx = shash_desc_ctx(desc);
> +
> + int ret = skein_256_init(sctx, SKEIN256_DIGEST_BIT_SIZE);
> +
> + return ret;
> +}
> +
> +int skein256_update(struct shash_desc *desc, const u8 *data,
> + unsigned int len)
> +{
> + struct skein_256_ctx *sctx = shash_desc_ctx(desc);
> + size_t hbl = (size_t) len;
> + int ret = skein_256_update(sctx, data, hbl);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL(skein256_update);
Why export this symbol if it's registered with the crypto API?
Same the others after this one.
thx,
Jason.
next prev parent reply other threads:[~2014-10-23 12:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-23 2:22 [PATCH v2 0/2] staging: skein: Add Crypto API and Loadable Module support Eric Rost
2014-10-23 2:23 ` [PATCH v2 1/2] staging: skein: Add Crypto API support Eric Rost
2014-10-23 12:28 ` Dan Carpenter
2014-10-23 12:51 ` Jason Cooper
2014-10-23 12:42 ` Jason Cooper [this message]
2014-10-23 2:24 ` [PATCH v2 2/2] staging: skein: Add Loadable Module Support Eric Rost
2014-10-23 12:33 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141023124207.GK17447@titan.lakedaemon.net \
--to=jason@lakedaemon.net \
--cc=antonysaraev@gmail.com \
--cc=devel@driverdev.osuosl.org \
--cc=eric.rost@mybabylon.net \
--cc=gregkh@linuxfoundation.org \
--cc=jake@lwn.net \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®