diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-08-24 05:10:20 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2006-09-20 21:46:21 -0400 |
commit | 35058687912aa2f0b4554383cc10be4e0683b9a4 (patch) | |
tree | 3e18d13aef6682553887076c1e9872e91e6fc5c4 /drivers/net/ppp_mppe.c | |
parent | dc64ddf4918f0da52df10d83c2a5941a547c2035 (diff) |
[CRYPTO] users: Use crypto_hash interface instead of crypto_digest
This patch converts all remaining crypto_digest users to use the new
crypto_hash interface.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/net/ppp_mppe.c')
-rw-r--r-- | drivers/net/ppp_mppe.c | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/drivers/net/ppp_mppe.c b/drivers/net/ppp_mppe.c index 495d8667419a..e7a0eb4fca60 100644 --- a/drivers/net/ppp_mppe.c +++ b/drivers/net/ppp_mppe.c | |||
@@ -65,12 +65,13 @@ MODULE_LICENSE("Dual BSD/GPL"); | |||
65 | MODULE_ALIAS("ppp-compress-" __stringify(CI_MPPE)); | 65 | MODULE_ALIAS("ppp-compress-" __stringify(CI_MPPE)); |
66 | MODULE_VERSION("1.0.2"); | 66 | MODULE_VERSION("1.0.2"); |
67 | 67 | ||
68 | static void | 68 | static unsigned int |
69 | setup_sg(struct scatterlist *sg, const void *address, unsigned int length) | 69 | setup_sg(struct scatterlist *sg, const void *address, unsigned int length) |
70 | { | 70 | { |
71 | sg[0].page = virt_to_page(address); | 71 | sg[0].page = virt_to_page(address); |
72 | sg[0].offset = offset_in_page(address); | 72 | sg[0].offset = offset_in_page(address); |
73 | sg[0].length = length; | 73 | sg[0].length = length; |
74 | return length; | ||
74 | } | 75 | } |
75 | 76 | ||
76 | #define SHA1_PAD_SIZE 40 | 77 | #define SHA1_PAD_SIZE 40 |
@@ -97,7 +98,7 @@ static inline void sha_pad_init(struct sha_pad *shapad) | |||
97 | */ | 98 | */ |
98 | struct ppp_mppe_state { | 99 | struct ppp_mppe_state { |
99 | struct crypto_blkcipher *arc4; | 100 | struct crypto_blkcipher *arc4; |
100 | struct crypto_tfm *sha1; | 101 | struct crypto_hash *sha1; |
101 | unsigned char *sha1_digest; | 102 | unsigned char *sha1_digest; |
102 | unsigned char master_key[MPPE_MAX_KEY_LEN]; | 103 | unsigned char master_key[MPPE_MAX_KEY_LEN]; |
103 | unsigned char session_key[MPPE_MAX_KEY_LEN]; | 104 | unsigned char session_key[MPPE_MAX_KEY_LEN]; |
@@ -137,14 +138,21 @@ struct ppp_mppe_state { | |||
137 | */ | 138 | */ |
138 | static void get_new_key_from_sha(struct ppp_mppe_state * state, unsigned char *InterimKey) | 139 | static void get_new_key_from_sha(struct ppp_mppe_state * state, unsigned char *InterimKey) |
139 | { | 140 | { |
141 | struct hash_desc desc; | ||
140 | struct scatterlist sg[4]; | 142 | struct scatterlist sg[4]; |
143 | unsigned int nbytes; | ||
141 | 144 | ||
142 | setup_sg(&sg[0], state->master_key, state->keylen); | 145 | nbytes = setup_sg(&sg[0], state->master_key, state->keylen); |
143 | setup_sg(&sg[1], sha_pad->sha_pad1, sizeof(sha_pad->sha_pad1)); | 146 | nbytes += setup_sg(&sg[1], sha_pad->sha_pad1, |
144 | setup_sg(&sg[2], state->session_key, state->keylen); | 147 | sizeof(sha_pad->sha_pad1)); |
145 | setup_sg(&sg[3], sha_pad->sha_pad2, sizeof(sha_pad->sha_pad2)); | 148 | nbytes += setup_sg(&sg[2], state->session_key, state->keylen); |
149 | nbytes += setup_sg(&sg[3], sha_pad->sha_pad2, | ||
150 | sizeof(sha_pad->sha_pad2)); | ||
146 | 151 | ||
147 | crypto_digest_digest (state->sha1, sg, 4, state->sha1_digest); | 152 | desc.tfm = state->sha1; |
153 | desc.flags = 0; | ||
154 | |||
155 | crypto_hash_digest(&desc, sg, nbytes, state->sha1_digest); | ||
148 | 156 | ||
149 | memcpy(InterimKey, state->sha1_digest, state->keylen); | 157 | memcpy(InterimKey, state->sha1_digest, state->keylen); |
150 | } | 158 | } |
@@ -204,11 +212,13 @@ static void *mppe_alloc(unsigned char *options, int optlen) | |||
204 | goto out_free; | 212 | goto out_free; |
205 | } | 213 | } |
206 | 214 | ||
207 | state->sha1 = crypto_alloc_tfm("sha1", 0); | 215 | state->sha1 = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC); |
208 | if (!state->sha1) | 216 | if (IS_ERR(state->sha1)) { |
217 | state->sha1 = NULL; | ||
209 | goto out_free; | 218 | goto out_free; |
219 | } | ||
210 | 220 | ||
211 | digestsize = crypto_tfm_alg_digestsize(state->sha1); | 221 | digestsize = crypto_hash_digestsize(state->sha1); |
212 | if (digestsize < MPPE_MAX_KEY_LEN) | 222 | if (digestsize < MPPE_MAX_KEY_LEN) |
213 | goto out_free; | 223 | goto out_free; |
214 | 224 | ||
@@ -233,7 +243,7 @@ static void *mppe_alloc(unsigned char *options, int optlen) | |||
233 | if (state->sha1_digest) | 243 | if (state->sha1_digest) |
234 | kfree(state->sha1_digest); | 244 | kfree(state->sha1_digest); |
235 | if (state->sha1) | 245 | if (state->sha1) |
236 | crypto_free_tfm(state->sha1); | 246 | crypto_free_hash(state->sha1); |
237 | if (state->arc4) | 247 | if (state->arc4) |
238 | crypto_free_blkcipher(state->arc4); | 248 | crypto_free_blkcipher(state->arc4); |
239 | kfree(state); | 249 | kfree(state); |
@@ -251,7 +261,7 @@ static void mppe_free(void *arg) | |||
251 | if (state->sha1_digest) | 261 | if (state->sha1_digest) |
252 | kfree(state->sha1_digest); | 262 | kfree(state->sha1_digest); |
253 | if (state->sha1) | 263 | if (state->sha1) |
254 | crypto_free_tfm(state->sha1); | 264 | crypto_free_hash(state->sha1); |
255 | if (state->arc4) | 265 | if (state->arc4) |
256 | crypto_free_blkcipher(state->arc4); | 266 | crypto_free_blkcipher(state->arc4); |
257 | kfree(state); | 267 | kfree(state); |