Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Browse files Browse the repository at this point in the history
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  [CRYPTO] hmac: Avoid calling virt_to_page on key
  • Loading branch information
torvalds committed May 9, 2008
2 parents d9a9a23 + 67412f0 commit c20b4b6
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions crypto/hmac.c
Expand Up @@ -57,14 +57,35 @@ static int hmac_setkey(struct crypto_hash *parent,
if (keylen > bs) {
struct hash_desc desc;
struct scatterlist tmp;
int tmplen;
int err;

desc.tfm = tfm;
desc.flags = crypto_hash_get_flags(parent);
desc.flags &= CRYPTO_TFM_REQ_MAY_SLEEP;
sg_init_one(&tmp, inkey, keylen);

err = crypto_hash_digest(&desc, &tmp, keylen, digest);
err = crypto_hash_init(&desc);
if (err)
return err;

tmplen = bs * 2 + ds;
sg_init_one(&tmp, ipad, tmplen);

for (; keylen > tmplen; inkey += tmplen, keylen -= tmplen) {
memcpy(ipad, inkey, tmplen);
err = crypto_hash_update(&desc, &tmp, tmplen);
if (err)
return err;
}

if (keylen) {
memcpy(ipad, inkey, keylen);
err = crypto_hash_update(&desc, &tmp, keylen);
if (err)
return err;
}

err = crypto_hash_final(&desc, digest);
if (err)
return err;

Expand Down

0 comments on commit c20b4b6

Please sign in to comment.