Re: cryptoapi OMAC (was: cryptoapi highmem bug)

From: Jean-Luc Cooke
Date: Wed Feb 25 2004 - 18:05:52 EST


OK.

Using a base kernel, apply the scatterwalk change:
http://jlcooke.ca/lkml/cryptowalk_christophe_25feb2004.patch

Then apply this:
http://jlcooke.ca/lkml/crypto_omac_hmac_ctr_25feb2004.patch

This is my HMAC/OMAC/CTR patch. I think I fixed your HMAC issue.
I was giving a scatterlist a stack memory reference (!). It now more
closely uses the digest.c functions.

JLC

On Wed, Feb 25, 2004 at 07:11:33PM +0100, Christophe Saout wrote:
> On Wed, Feb 25, 2004 at 11:09:35AM -0500, Jean-Luc Cooke wrote:
>
> > http://jlcooke.ca/lkml/crypto_24feb2004.patch will work.
>
> It didn't compile. I fixed some compile problems so that it works.
> I have disabled CRYPTO_OMAC though. And it goes boom when calling
> hmac_init (or something like that), the machine halts without Oops.
>
> I've seen the cit_omac is kmalloc'ed. Hmm. Didn't we want to try
> to avoid that? Well. Perhaps it should be allocated when the
> omac_init is called and freed after omac_final.
>
> Or what about this:
> If the user wants OMAC he calls omac_init and passes a pointer to
> a buffer where the omac will be computed. omac_init then sets
> the omac_update function so that xxx_process will call it. After
> the encryption is finished the user calls omac_final and finds
> the omac in his buffer.
>
> And shouldn't the omac functions be put into a separate omac.c?
>
> Moving the scatterwalk functions seems like a good idea to me.
>
> Well, here are the compile fixes:
>
> diff -Nur linux.orig/crypto/cipher.c linux/crypto/cipher.c
> --- linux.orig/crypto/cipher.c 2004-02-25 18:58:22.955601768 +0100
> +++ linux/crypto/cipher.c 2004-02-25 18:59:30.970261968 +0100
> @@ -280,7 +280,7 @@
> /* mac = Zeros */
> memset((u8*)tfm->crt_u.cipher.cit_omac, 0, crypto_tfm_alg_blocksize(tfm));
> }
> -#endif
> +#endif /* CONFIG_CRYPTO_OMAC */
>
> return ret;
> }
> @@ -475,9 +475,12 @@
> ops->cit_iv = kmalloc(ops->cit_ivsize, GFP_KERNEL);
> if (ops->cit_iv == NULL)
> ret = -ENOMEM;
> +
> +#ifdef CONFIG_CRYPTO_OMAC
> ops->cit_omac = kmalloc(ops->cit_ivsize, GFP_KERNEL);
> if (ops->cit_omac == NULL)
> ret = -ENOMEM;
> +#endif /* CONFIG_CRYPTO_OMAC */
> }
>
> #ifdef CONFIG_CRYPTO_OMAC
> @@ -499,5 +502,5 @@
> #ifdef CONFIG_CRYPTO_OMAC
> if (tfm->crt_cipher.cit_omac)
> kfree(tfm->crt_cipher.cit_omac);
> -#endif
> +#endif /* CONFIG_CRYPTO_OMAC */
> }
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

--
http://www.certainkey.com
Suite 4560 CTTC
1125 Colonel By Dr.
Ottawa ON, K1S 5B6
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/