summaryrefslogtreecommitdiff
path: root/src/libstrongswan/plugins/openssl/openssl_hmac.c
diff options
context:
space:
mode:
authorYves-Alexis Perez <corsac@debian.org>2016-07-16 15:19:53 +0200
committerYves-Alexis Perez <corsac@debian.org>2016-07-16 15:19:53 +0200
commitbf372706c469764d59e9f29c39e3ecbebd72b8d2 (patch)
tree0f0e296e2d50e4a7faf99ae6fa428d2681e81ea1 /src/libstrongswan/plugins/openssl/openssl_hmac.c
parent518dd33c94e041db0444c7d1f33da363bb8e3faf (diff)
downloadvyos-strongswan-bf372706c469764d59e9f29c39e3ecbebd72b8d2.tar.gz
vyos-strongswan-bf372706c469764d59e9f29c39e3ecbebd72b8d2.zip
Imported Upstream version 5.5.0
Diffstat (limited to 'src/libstrongswan/plugins/openssl/openssl_hmac.c')
-rw-r--r--src/libstrongswan/plugins/openssl/openssl_hmac.c36
1 files changed, 26 insertions, 10 deletions
diff --git a/src/libstrongswan/plugins/openssl/openssl_hmac.c b/src/libstrongswan/plugins/openssl/openssl_hmac.c
index 065187a8c..16e707116 100644
--- a/src/libstrongswan/plugins/openssl/openssl_hmac.c
+++ b/src/libstrongswan/plugins/openssl/openssl_hmac.c
@@ -68,7 +68,14 @@ struct private_mac_t {
/**
* Current HMAC context
*/
- HMAC_CTX hmac;
+ HMAC_CTX *hmac;
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ /**
+ * Static context for OpenSSL < 1.1.0
+ */
+ HMAC_CTX hmac_ctx;
+#endif
/**
* Key set on HMAC_CTX?
@@ -80,28 +87,28 @@ METHOD(mac_t, set_key, bool,
private_mac_t *this, chunk_t key)
{
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
- if (HMAC_Init_ex(&this->hmac, key.ptr, key.len, this->hasher, NULL))
+ if (HMAC_Init_ex(this->hmac, key.ptr, key.len, this->hasher, NULL))
{
this->key_set = TRUE;
return TRUE;
}
return FALSE;
#else /* OPENSSL_VERSION_NUMBER < 1.0 */
- HMAC_Init_ex(&this->hmac, key.ptr, key.len, this->hasher, NULL);
+ HMAC_Init_ex(this->hmac, key.ptr, key.len, this->hasher, NULL);
this->key_set = TRUE;
return TRUE;
#endif
}
METHOD(mac_t, get_mac, bool,
- private_mac_t *this, chunk_t data, u_int8_t *out)
+ private_mac_t *this, chunk_t data, uint8_t *out)
{
if (!this->key_set)
{
return FALSE;
}
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
- if (!HMAC_Update(&this->hmac, data.ptr, data.len))
+ if (!HMAC_Update(this->hmac, data.ptr, data.len))
{
return FALSE;
}
@@ -109,17 +116,17 @@ METHOD(mac_t, get_mac, bool,
{
return TRUE;
}
- if (!HMAC_Final(&this->hmac, out, NULL))
+ if (!HMAC_Final(this->hmac, out, NULL))
{
return FALSE;
}
#else /* OPENSSL_VERSION_NUMBER < 1.0 */
- HMAC_Update(&this->hmac, data.ptr, data.len);
+ HMAC_Update(this->hmac, data.ptr, data.len);
if (out == NULL)
{
return TRUE;
}
- HMAC_Final(&this->hmac, out, NULL);
+ HMAC_Final(this->hmac, out, NULL);
#endif
return set_key(this, chunk_empty);
}
@@ -133,7 +140,11 @@ METHOD(mac_t, get_mac_size, size_t,
METHOD(mac_t, destroy, void,
private_mac_t *this)
{
- HMAC_CTX_cleanup(&this->hmac);
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ HMAC_CTX_free(this->hmac);
+#else
+ HMAC_CTX_cleanup(&this->hmac_ctx);
+#endif
free(this);
}
@@ -167,7 +178,12 @@ static mac_t *hmac_create(hash_algorithm_t algo)
return NULL;
}
- HMAC_CTX_init(&this->hmac);
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ this->hmac = HMAC_CTX_new();
+#else
+ HMAC_CTX_init(&this->hmac_ctx);
+ this->hmac = &this->hmac_ctx;
+#endif
return &this->public;
}