diff options
Diffstat (limited to 'crypto/hmac.c')
| -rw-r--r-- | crypto/hmac.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/crypto/hmac.c b/crypto/hmac.c index da0456b37109..46120dee5ada 100644 --- a/crypto/hmac.c +++ b/crypto/hmac.c | |||
| @@ -18,18 +18,15 @@ | |||
| 18 | #include <linux/mm.h> | 18 | #include <linux/mm.h> |
| 19 | #include <linux/highmem.h> | 19 | #include <linux/highmem.h> |
| 20 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
| 21 | #include <asm/scatterlist.h> | 21 | #include <linux/scatterlist.h> |
| 22 | #include "internal.h" | 22 | #include "internal.h" |
| 23 | 23 | ||
| 24 | static void hash_key(struct crypto_tfm *tfm, u8 *key, unsigned int keylen) | 24 | static void hash_key(struct crypto_tfm *tfm, u8 *key, unsigned int keylen) |
| 25 | { | 25 | { |
| 26 | struct scatterlist tmp; | 26 | struct scatterlist tmp; |
| 27 | 27 | ||
| 28 | tmp.page = virt_to_page(key); | 28 | sg_set_buf(&tmp, key, keylen); |
| 29 | tmp.offset = offset_in_page(key); | ||
| 30 | tmp.length = keylen; | ||
| 31 | crypto_digest_digest(tfm, &tmp, 1, key); | 29 | crypto_digest_digest(tfm, &tmp, 1, key); |
| 32 | |||
| 33 | } | 30 | } |
| 34 | 31 | ||
| 35 | int crypto_alloc_hmac_block(struct crypto_tfm *tfm) | 32 | int crypto_alloc_hmac_block(struct crypto_tfm *tfm) |
| @@ -69,9 +66,7 @@ void crypto_hmac_init(struct crypto_tfm *tfm, u8 *key, unsigned int *keylen) | |||
| 69 | for (i = 0; i < crypto_tfm_alg_blocksize(tfm); i++) | 66 | for (i = 0; i < crypto_tfm_alg_blocksize(tfm); i++) |
| 70 | ipad[i] ^= 0x36; | 67 | ipad[i] ^= 0x36; |
| 71 | 68 | ||
| 72 | tmp.page = virt_to_page(ipad); | 69 | sg_set_buf(&tmp, ipad, crypto_tfm_alg_blocksize(tfm)); |
| 73 | tmp.offset = offset_in_page(ipad); | ||
| 74 | tmp.length = crypto_tfm_alg_blocksize(tfm); | ||
| 75 | 70 | ||
| 76 | crypto_digest_init(tfm); | 71 | crypto_digest_init(tfm); |
| 77 | crypto_digest_update(tfm, &tmp, 1); | 72 | crypto_digest_update(tfm, &tmp, 1); |
| @@ -103,16 +98,12 @@ void crypto_hmac_final(struct crypto_tfm *tfm, u8 *key, | |||
| 103 | for (i = 0; i < crypto_tfm_alg_blocksize(tfm); i++) | 98 | for (i = 0; i < crypto_tfm_alg_blocksize(tfm); i++) |
| 104 | opad[i] ^= 0x5c; | 99 | opad[i] ^= 0x5c; |
| 105 | 100 | ||
| 106 | tmp.page = virt_to_page(opad); | 101 | sg_set_buf(&tmp, opad, crypto_tfm_alg_blocksize(tfm)); |
| 107 | tmp.offset = offset_in_page(opad); | ||
| 108 | tmp.length = crypto_tfm_alg_blocksize(tfm); | ||
| 109 | 102 | ||
| 110 | crypto_digest_init(tfm); | 103 | crypto_digest_init(tfm); |
| 111 | crypto_digest_update(tfm, &tmp, 1); | 104 | crypto_digest_update(tfm, &tmp, 1); |
| 112 | 105 | ||
| 113 | tmp.page = virt_to_page(out); | 106 | sg_set_buf(&tmp, out, crypto_tfm_alg_digestsize(tfm)); |
| 114 | tmp.offset = offset_in_page(out); | ||
| 115 | tmp.length = crypto_tfm_alg_digestsize(tfm); | ||
| 116 | 107 | ||
| 117 | crypto_digest_update(tfm, &tmp, 1); | 108 | crypto_digest_update(tfm, &tmp, 1); |
| 118 | crypto_digest_final(tfm, out); | 109 | crypto_digest_final(tfm, out); |
