From 01850f5d5554e72fa1975bce1991b9e5182cc59b Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Fri, 22 Jun 2012 11:28:43 +0200 Subject: Function to convert PRFs to hash algorithms added --- src/libstrongswan/crypto/hashers/hasher.c | 30 ++++++++++++++++++++++++++++++ src/libstrongswan/crypto/hashers/hasher.h | 9 +++++++++ 2 files changed, 39 insertions(+) diff --git a/src/libstrongswan/crypto/hashers/hasher.c b/src/libstrongswan/crypto/hashers/hasher.c index 580976222..e0a4995cf 100644 --- a/src/libstrongswan/crypto/hashers/hasher.c +++ b/src/libstrongswan/crypto/hashers/hasher.c @@ -65,6 +65,36 @@ hash_algorithm_t hasher_algorithm_from_oid(int oid) } } +/* + * Described in header. + */ +hash_algorithm_t hasher_algorithm_from_prf(pseudo_random_function_t alg) +{ + switch (alg) + { + case PRF_HMAC_MD5: + return HASH_MD5; + case PRF_HMAC_SHA1: + case PRF_FIPS_SHA1_160: + case PRF_KEYED_SHA1: + return HASH_SHA1; + case PRF_HMAC_SHA2_256: + return HASH_SHA256; + case PRF_HMAC_SHA2_384: + return HASH_SHA384; + case PRF_HMAC_SHA2_512: + return HASH_SHA512; + case PRF_HMAC_TIGER: + case PRF_AES128_XCBC: + case PRF_AES128_CMAC: + case PRF_FIPS_DES: + case PRF_CAMELLIA128_XCBC: + case PRF_UNDEFINED: + break; + } + return HASH_UNKNOWN; +} + /* * Described in header. */ diff --git a/src/libstrongswan/crypto/hashers/hasher.h b/src/libstrongswan/crypto/hashers/hasher.h index 5325e017b..c5be29edb 100644 --- a/src/libstrongswan/crypto/hashers/hasher.h +++ b/src/libstrongswan/crypto/hashers/hasher.h @@ -27,6 +27,7 @@ typedef enum hash_algorithm_t hash_algorithm_t; typedef struct hasher_t hasher_t; #include +#include #include #include @@ -119,6 +120,14 @@ struct hasher_t { */ hash_algorithm_t hasher_algorithm_from_oid(int oid); +/** + * Conversion of PRF algorithm to hash algorithm (if based on one). + * + * @param alg prf algorithm + * @return hash algorithm, HASH_UNKNOWN if not based on a hash + */ +hash_algorithm_t hasher_algorithm_from_prf(pseudo_random_function_t alg); + /** * Conversion of integrity algorithm to hash algorithm (if based on one). * -- cgit v1.2.3