diff options
author | Martin Willi <martin@revosec.ch> | 2012-07-17 17:30:23 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-07-17 17:32:00 +0200 |
commit | 610f90a8b9190b191e41af0b60753ecc2edc4c8c (patch) | |
tree | 0de6af917f0b56a82a1f62db128f00d31eb5d517 /src/libstrongswan | |
parent | 4b9600083310556c37ed9fe550417bbd057b727c (diff) | |
download | strongswan-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.c | 54 | ||||
-rw-r--r-- | src/libstrongswan/plugins/openssl/openssl_hmac.c | 29 |
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); |