Lines 288-294
Link Here
|
288 |
void calc_mic (struct AP_info *ap, unsigned char pmk[32], unsigned char ptk[80], unsigned char mic[20]) { |
288 |
void calc_mic (struct AP_info *ap, unsigned char pmk[32], unsigned char ptk[80], unsigned char mic[20]) { |
289 |
int i; |
289 |
int i; |
290 |
unsigned char pke[100]; |
290 |
unsigned char pke[100]; |
|
|
291 |
#if defined(USE_GCRYPT) || OPENSSL_VERSION_NUMBER < 0x10100000L |
292 |
#define HMAC_USE_NO_PTR |
293 |
#endif |
294 |
|
295 |
#ifdef HMAC_USE_NO_PTR |
291 |
HMAC_CTX ctx; |
296 |
HMAC_CTX ctx; |
|
|
297 |
#else |
298 |
HMAC_CTX * ctx; |
299 |
#endif |
292 |
|
300 |
|
293 |
memcpy( pke, "Pairwise key expansion", 23 ); |
301 |
memcpy( pke, "Pairwise key expansion", 23 ); |
294 |
|
302 |
|
Lines 314-319
Link Here
|
314 |
memcpy( pke + 67, ap->wpa.snonce, 32 ); |
322 |
memcpy( pke + 67, ap->wpa.snonce, 32 ); |
315 |
} |
323 |
} |
316 |
|
324 |
|
|
|
325 |
#ifdef HMAC_USE_NO_PTR |
317 |
HMAC_CTX_init(&ctx); |
326 |
HMAC_CTX_init(&ctx); |
318 |
HMAC_Init_ex(&ctx, pmk, 32, EVP_sha1(), NULL); |
327 |
HMAC_Init_ex(&ctx, pmk, 32, EVP_sha1(), NULL); |
319 |
for(i = 0; i < 4; i++ ) |
328 |
for(i = 0; i < 4; i++ ) |
Lines 325-330
Link Here
|
325 |
HMAC_Final(&ctx, ptk + i*20, NULL); |
334 |
HMAC_Final(&ctx, ptk + i*20, NULL); |
326 |
} |
335 |
} |
327 |
HMAC_CTX_cleanup(&ctx); |
336 |
HMAC_CTX_cleanup(&ctx); |
|
|
337 |
#else |
338 |
ctx = HMAC_CTX_new(); |
339 |
HMAC_Init_ex(ctx, pmk, 32, EVP_sha1(), NULL); |
340 |
for(i = 0; i < 4; i++ ) |
341 |
{ |
342 |
pke[99] = i; |
343 |
//HMAC(EVP_sha1(), values[0], 32, pke, 100, ptk + i * 20, NULL); |
344 |
HMAC_Init_ex(ctx, 0, 0, 0, 0); |
345 |
HMAC_Update(ctx, pke, 100); |
346 |
HMAC_Final(ctx, ptk + i*20, NULL); |
347 |
} |
348 |
HMAC_CTX_free(ctx); |
349 |
#endif |
350 |
#undef HMAC_USE_NO_PTR |
328 |
|
351 |
|
329 |
if( ap->wpa.keyver == 1 ) |
352 |
if( ap->wpa.keyver == 1 ) |
330 |
{ |
353 |
{ |