--- gvpe/src/hkdf.C 2013/07/17 04:36:03 1.2 +++ gvpe/src/hkdf.C 2013/09/20 11:57:03 1.3 @@ -33,12 +33,20 @@ #include +#include #include #include #include "util.h" #include "hkdf.h" +// openssl 0.9.8 compatibility +#if OPENSSL_VERSION_NUMBER < 0x10100000 + #define require101(exp) exp +#else + #define require101(exp) equire (exp) +#endif + hkdf::hkdf (const void *salt, int len, const EVP_MD *xtr_hash) { HMAC_CTX_init (&ctx); @@ -50,7 +58,7 @@ len = EVP_MD_size (xtr_hash); } - require (HMAC_Init_ex (&ctx, salt, len, xtr_hash, 0)); + require101 (HMAC_Init_ex (&ctx, salt, len, xtr_hash, 0)); } hkdf::~hkdf () @@ -61,14 +69,14 @@ void hkdf::extract (const void *ikm, int len) { - require (HMAC_Update (&ctx, (u8 *)ikm, len)); + require101 (HMAC_Update (&ctx, (u8 *)ikm, len)); } void hkdf::extract_done (const EVP_MD *prf_hash) { - require (HMAC_Final (&ctx, prk, 0)); - require (HMAC_Init_ex (&ctx, 0, 0, prf_hash, 0)); + require101 (HMAC_Final (&ctx, prk, 0)); + require101 (HMAC_Init_ex (&ctx, 0, 0, prf_hash, 0)); } void @@ -80,20 +88,19 @@ while (len) { - require (HMAC_Init_ex (&ctx, prk, md_size, 0, 0)); + require101 (HMAC_Init_ex (&ctx, prk, md_size, 0, 0)); if (iter) - require (HMAC_Update (&ctx, tn, md_size)); - - require (HMAC_Update (&ctx, (u8 *)info, infolen)); + require101 (HMAC_Update (&ctx, tn, md_size)); + require101 (HMAC_Update (&ctx, (u8 *)info, infolen)); ++iter; require (iter); - require (HMAC_Update (&ctx, &iter, 1)); + require101 (HMAC_Update (&ctx, &iter, 1)); - require (HMAC_Final (&ctx, tn, 0)); + require101 (HMAC_Final (&ctx, tn, 0)); int ol = len > md_size ? md_size : len;