Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / crypto / hmac.c
index 847df92..46120de 100644 (file)
 #include <linux/mm.h>
 #include <linux/highmem.h>
 #include <linux/slab.h>
-#include <asm/scatterlist.h>
+#include <linux/scatterlist.h>
 #include "internal.h"
 
 static void hash_key(struct crypto_tfm *tfm, u8 *key, unsigned int keylen)
 {
        struct scatterlist tmp;
        
-       tmp.page = virt_to_page(key);
-       tmp.offset = offset_in_page(key);
-       tmp.length = keylen;
+       sg_set_buf(&tmp, key, keylen);
        crypto_digest_digest(tfm, &tmp, 1, key);
-               
 }
 
 int crypto_alloc_hmac_block(struct crypto_tfm *tfm)
@@ -49,8 +46,7 @@ int crypto_alloc_hmac_block(struct crypto_tfm *tfm)
 
 void crypto_free_hmac_block(struct crypto_tfm *tfm)
 {
-       if (tfm->crt_digest.dit_hmac_block)
-               kfree(tfm->crt_digest.dit_hmac_block);
+       kfree(tfm->crt_digest.dit_hmac_block);
 }
 
 void crypto_hmac_init(struct crypto_tfm *tfm, u8 *key, unsigned int *keylen)
@@ -70,9 +66,7 @@ void crypto_hmac_init(struct crypto_tfm *tfm, u8 *key, unsigned int *keylen)
        for (i = 0; i < crypto_tfm_alg_blocksize(tfm); i++)
                ipad[i] ^= 0x36;
 
-       tmp.page = virt_to_page(ipad);
-       tmp.offset = offset_in_page(ipad);
-       tmp.length = crypto_tfm_alg_blocksize(tfm);
+       sg_set_buf(&tmp, ipad, crypto_tfm_alg_blocksize(tfm));
        
        crypto_digest_init(tfm);
        crypto_digest_update(tfm, &tmp, 1);
@@ -104,16 +98,12 @@ void crypto_hmac_final(struct crypto_tfm *tfm, u8 *key,
        for (i = 0; i < crypto_tfm_alg_blocksize(tfm); i++)
                opad[i] ^= 0x5c;
 
-       tmp.page = virt_to_page(opad);
-       tmp.offset = offset_in_page(opad);
-       tmp.length = crypto_tfm_alg_blocksize(tfm);
+       sg_set_buf(&tmp, opad, crypto_tfm_alg_blocksize(tfm));
 
        crypto_digest_init(tfm);
        crypto_digest_update(tfm, &tmp, 1);
        
-       tmp.page = virt_to_page(out);
-       tmp.offset = offset_in_page(out);
-       tmp.length = crypto_tfm_alg_digestsize(tfm);
+       sg_set_buf(&tmp, out, crypto_tfm_alg_digestsize(tfm));
        
        crypto_digest_update(tfm, &tmp, 1);
        crypto_digest_final(tfm, out);