aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-07-17 17:30:23 +0200
committerMartin Willi <martin@revosec.ch>2012-07-17 17:32:00 +0200
commit610f90a8b9190b191e41af0b60753ecc2edc4c8c (patch)
tree0de6af917f0b56a82a1f62db128f00d31eb5d517 /src/libstrongswan
parent4b9600083310556c37ed9fe550417bbd057b727c (diff)
downloadstrongswan-610f90a8b9190b191e41af0b60753ecc2edc4c8c.tar.bz2
strongswan-610f90a8b9190b191e41af0b60753ecc2edc4c8c.tar.xz
Use centralized hasher names in openssl plugin
Diffstat (limited to 'src/libstrongswan')
-rw-r--r--src/libstrongswan/plugins/openssl/openssl_hasher.c54
-rw-r--r--src/libstrongswan/plugins/openssl/openssl_hmac.c29
2 files changed, 10 insertions, 73 deletions
diff --git a/src/libstrongswan/plugins/openssl/openssl_hasher.c b/src/libstrongswan/plugins/openssl/openssl_hasher.c
index bf5ff1f27..50b14698b 100644
--- a/src/libstrongswan/plugins/openssl/openssl_hasher.c
+++ b/src/libstrongswan/plugins/openssl/openssl_hasher.c
@@ -40,56 +40,6 @@ struct private_openssl_hasher_t {
EVP_MD_CTX *ctx;
};
-/**
- * Mapping from the algorithms defined in IKEv2 to
- * OpenSSL algorithm names
- */
-typedef struct {
- /**
- * Identifier specified in IKEv2
- */
- int ikev2_id;
-
- /**
- * Name of the algorithm, as used in OpenSSL
- */
- char *name;
-} openssl_algorithm_t;
-
-#define END_OF_LIST -1
-
-/**
- * Algorithms for integrity
- */
-static openssl_algorithm_t integrity_algs[] = {
- {HASH_MD2, "md2"},
- {HASH_MD5, "md5"},
- {HASH_SHA1, "sha1"},
- {HASH_SHA224, "sha224"},
- {HASH_SHA256, "sha256"},
- {HASH_SHA384, "sha384"},
- {HASH_SHA512, "sha512"},
- {HASH_MD4, "md4"},
- {END_OF_LIST, NULL},
-};
-
-/**
- * Look up an OpenSSL algorithm name
- */
-static char* lookup_algorithm(openssl_algorithm_t *openssl_algo,
- u_int16_t ikev2_algo)
-{
- while (openssl_algo->ikev2_id != END_OF_LIST)
- {
- if (ikev2_algo == openssl_algo->ikev2_id)
- {
- return openssl_algo->name;
- }
- openssl_algo++;
- }
- return NULL;
-}
-
METHOD(hasher_t, get_hash_size, size_t,
private_openssl_hasher_t *this)
{
@@ -144,11 +94,11 @@ METHOD(hasher_t, destroy, void,
openssl_hasher_t *openssl_hasher_create(hash_algorithm_t algo)
{
private_openssl_hasher_t *this;
+ char* name;
- char* name = lookup_algorithm(integrity_algs, algo);
+ name = enum_to_name(hash_algorithm_short_names, algo);
if (!name)
{
- /* algo unavailable */
return NULL;
}
diff --git a/src/libstrongswan/plugins/openssl/openssl_hmac.c b/src/libstrongswan/plugins/openssl/openssl_hmac.c
index 8519271f8..5d05425d3 100644
--- a/src/libstrongswan/plugins/openssl/openssl_hmac.c
+++ b/src/libstrongswan/plugins/openssl/openssl_hmac.c
@@ -124,6 +124,13 @@ METHOD(mac_t, destroy, void,
static mac_t *hmac_create(hash_algorithm_t algo)
{
private_mac_t *this;
+ char *name;
+
+ name = enum_to_name(hash_algorithm_short_names, algo);
+ if (!name)
+ {
+ return NULL;
+ }
INIT(this,
.public = {
@@ -132,29 +139,9 @@ static mac_t *hmac_create(hash_algorithm_t algo)
.set_key = _set_key,
.destroy = _destroy,
},
+ .hasher = EVP_get_digestbyname(name),
);
- switch (algo)
- {
- case HASH_MD5:
- this->hasher = EVP_get_digestbyname("md5");
- break;
- case HASH_SHA1:
- this->hasher = EVP_get_digestbyname("sha1");
- break;
- case HASH_SHA256:
- this->hasher = EVP_get_digestbyname("sha256");
- break;
- case HASH_SHA384:
- this->hasher = EVP_get_digestbyname("sha384");
- break;
- case HASH_SHA512:
- this->hasher = EVP_get_digestbyname("sha512");
- break;
- default:
- break;
- }
-
if (!this->hasher)
{
free(this);