From: Jouni Malinen <jkmaline@cc.hut.fi>
To: James Morris <jmorris@redhat.com>
Cc: Clay Haapala <chaapala@cisco.com>,
"David S. Miller" <davem@redhat.com>,
linux-kernel@vger.kernel.org
Subject: Re: Crypto API and keyed non-HMAC digest algorithms / Michael MIC
Date: Wed, 10 Mar 2004 22:08:19 -0800 [thread overview]
Message-ID: <20040311060818.GA3739@jm.kir.nu> (raw)
In-Reply-To: <Xine.LNX.4.44.0403102302450.935-100000@thoron.boston.redhat.com>
On Wed, Mar 10, 2004 at 11:06:37PM -0500, James Morris wrote:
> I can't reproduce it now either (AFAICR, it oopsed in test_hash().
>
> I suspect it may have been caused by loading tcrypt module which was out
> of sync with the digest setkey change.
That's possible. It didn't fail in my test with an updated version from
the BK repository either, so I would assume this issue can be called
resolved.
Here's the digest setkey part of the previous combined patch; I'll send
a patch for Michael MIC separately.
Added support for using keyed digest with an optional dit_setkey handler.
This does not change the behavior of the existing digest algorithms, but
allows new ones to add setkey handler that can be used to initialize the
algorithm with a key or seed. setkey is to be called after init, but before
any of the update call(s).
diff -Nru a/crypto/digest.c b/crypto/digest.c
--- a/crypto/digest.c Tue Mar 9 21:25:13 2004
+++ b/crypto/digest.c Tue Mar 9 21:25:13 2004
@@ -42,6 +42,15 @@
tfm->__crt_alg->cra_digest.dia_final(crypto_tfm_ctx(tfm), out);
}
+static int setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen)
+{
+ u32 flags;
+ if (tfm->__crt_alg->cra_digest.dia_setkey == NULL)
+ return -ENOSYS;
+ return tfm->__crt_alg->cra_digest.dia_setkey(crypto_tfm_ctx(tfm),
+ key, keylen, &flags);
+}
+
static void digest(struct crypto_tfm *tfm,
struct scatterlist *sg, unsigned int nsg, u8 *out)
{
@@ -72,6 +81,7 @@
ops->dit_update = update;
ops->dit_final = final;
ops->dit_digest = digest;
+ ops->dit_setkey = setkey;
return crypto_alloc_hmac_block(tfm);
}
diff -Nru a/crypto/tcrypt.c b/crypto/tcrypt.c
--- a/crypto/tcrypt.c Tue Mar 9 21:25:13 2004
+++ b/crypto/tcrypt.c Tue Mar 9 21:25:13 2004
@@ -112,6 +112,10 @@
sg[0].length = hash_tv[i].psize;
crypto_digest_init (tfm);
+ if (tfm->crt_u.digest.dit_setkey) {
+ crypto_digest_setkey (tfm, hash_tv[i].key,
+ hash_tv[i].ksize);
+ }
crypto_digest_update (tfm, sg, 1);
crypto_digest_final (tfm, result);
diff -Nru a/crypto/tcrypt.h b/crypto/tcrypt.h
--- a/crypto/tcrypt.h Tue Mar 9 21:25:13 2004
+++ b/crypto/tcrypt.h Tue Mar 9 21:25:13 2004
@@ -30,6 +30,8 @@
char digest[MAX_DIGEST_SIZE];
unsigned char np;
unsigned char tap[MAX_TAP];
+ char key[128]; /* only used with keyed hash algorithms */
+ unsigned char ksize;
};
struct hmac_testvec {
diff -Nru a/include/linux/crypto.h b/include/linux/crypto.h
--- a/include/linux/crypto.h Tue Mar 9 21:25:13 2004
+++ b/include/linux/crypto.h Tue Mar 9 21:25:13 2004
@@ -76,6 +76,8 @@
void (*dia_init)(void *ctx);
void (*dia_update)(void *ctx, const u8 *data, unsigned int len);
void (*dia_final)(void *ctx, u8 *out);
+ int (*dia_setkey)(void *ctx, const u8 *key,
+ unsigned int keylen, u32 *flags);
};
struct compress_alg {
@@ -157,6 +159,8 @@
void (*dit_final)(struct crypto_tfm *tfm, u8 *out);
void (*dit_digest)(struct crypto_tfm *tfm, struct scatterlist *sg,
unsigned int nsg, u8 *out);
+ int (*dit_setkey)(struct crypto_tfm *tfm,
+ const u8 *key, unsigned int keylen);
#ifdef CONFIG_CRYPTO_HMAC
void *dit_hmac_block;
#endif
@@ -280,6 +284,15 @@
{
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_DIGEST);
tfm->crt_digest.dit_digest(tfm, sg, nsg, out);
+}
+
+static inline int crypto_digest_setkey(struct crypto_tfm *tfm,
+ const u8 *key, unsigned int keylen)
+{
+ BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_DIGEST);
+ if (tfm->crt_digest.dit_setkey == NULL)
+ return -ENOSYS;
+ return tfm->crt_digest.dit_setkey(tfm, key, keylen);
}
static inline int crypto_cipher_setkey(struct crypto_tfm *tfm,
--
Jouni Malinen PGP id EFC895FA
next prev parent reply other threads:[~2004-03-11 6:10 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-06 18:46 Jouni Malinen
2004-03-08 14:45 ` James Morris
2004-03-09 3:37 ` Jouni Malinen
2004-03-09 5:55 ` James Morris
2004-03-09 17:30 ` Clay Haapala
2004-03-09 20:32 ` James Morris
2004-03-10 3:40 ` Jouni Malinen
2004-03-10 4:02 ` [PATCH] Crypto API and " Jouni Malinen
2004-03-10 4:21 ` Crypto API and keyed non-HMAC digest algorithms / " James Morris
2004-03-10 5:34 ` Jouni Malinen
2004-03-10 15:45 ` James Morris
2004-03-11 3:00 ` Jouni Malinen
2004-03-11 4:06 ` James Morris
2004-03-11 6:08 ` Jouni Malinen [this message]
2004-03-11 16:34 ` Clay Haapala
2004-03-11 20:14 ` James Morris
2004-03-18 23:05 ` Clay Haapala
2004-03-21 15:08 ` James Morris
2004-03-22 16:49 ` [PATCH] lib/libcrc32c implementation Clay Haapala
2004-03-22 17:00 ` Jeff Garzik
2004-03-22 17:27 ` Clay Haapala
2004-03-22 17:36 ` Jeff Garzik
2004-03-26 16:36 ` James Morris
2004-03-26 16:59 ` Clay Haapala
2004-03-26 18:16 ` James Morris
2004-03-30 17:32 ` [PATCH] lib/libcrc32c Clay Haapala
2004-03-30 18:43 ` Bartlomiej Zolnierkiewicz
2004-03-30 19:11 ` Clay Haapala
2004-03-30 19:23 ` Matt Domsch
2004-03-30 19:33 ` Clay Haapala
2004-03-31 21:03 ` [PATCH] lib/libcrc32c, revised 040331 Clay Haapala
2004-04-19 21:37 ` [PATCH] lib/libcrc32c, revised 040419 Clay Haapala
2004-04-23 23:42 ` David S. Miller
2004-04-27 19:46 ` [PATCH] lib/libcrc32c, revised 040427 Clay Haapala
2004-04-27 19:49 ` David S. Miller
2004-04-27 20:00 ` Clay Haapala
2004-04-27 21:49 ` Clay Haapala
2004-04-27 21:50 ` David S. Miller
2004-04-28 15:14 ` [PATCH] lib/libcrc32c, revised 040428, with compiler.h included Clay Haapala
2004-04-28 19:29 ` David S. Miller
2004-04-27 19:55 ` [PATCH] lib/crc32.c: to use compiler.h defines Clay Haapala
2004-04-28 15:19 ` [PATCH] lib/crc32.c: uses (and includes) compiler.h Clay Haapala
2004-04-28 19:30 ` David S. Miller
2004-03-30 19:49 ` [PATCH] lib/libcrc32c Bartlomiej Zolnierkiewicz
2004-03-31 15:28 ` Clay Haapala
2004-03-30 17:40 ` [PATCH] crypto/crc32c implementation Clay Haapala
2004-04-19 21:31 ` [PATCH] crypto/crc32c implementation, updated 040419 Clay Haapala
2004-04-19 23:36 ` David S. Miller
2004-04-20 13:20 ` James Morris
2004-03-22 16:56 ` [PATCH] crypto/crc32c support Clay Haapala
2004-03-11 6:11 ` Crypto API and keyed non-HMAC digest algorithms / Michael MIC Jouni Malinen
2004-03-10 16:04 ` Clay Haapala
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=20040311060818.GA3739@jm.kir.nu \
--to=jkmaline@cc.hut.fi \
--cc=chaapala@cisco.com \
--cc=davem@redhat.com \
--cc=jmorris@redhat.com \
--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
Powered by JetHome