]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
hasher: Add helper to determine hash algorithm from signature scheme
authorTobias Brunner <tobias@strongswan.org>
Tue, 24 Feb 2015 14:35:33 +0000 (15:35 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 4 Mar 2015 12:54:09 +0000 (13:54 +0100)
src/libstrongswan/crypto/hashers/hasher.c
src/libstrongswan/crypto/hashers/hasher.h

index 8822e0fcb65f561b4acee183520866ac0c382849..38eebea9c914a02dfe4130e349f48fc36f2c264e 100644 (file)
@@ -364,3 +364,39 @@ int hasher_signature_algorithm_to_oid(hash_algorithm_t alg, key_type_t key)
        }
 }
 
+/*
+ * Defined in header.
+ */
+hash_algorithm_t hasher_from_signature_scheme(signature_scheme_t scheme)
+{
+       switch (scheme)
+       {
+               case SIGN_UNKNOWN:
+               case SIGN_RSA_EMSA_PKCS1_NULL:
+               case SIGN_ECDSA_WITH_NULL:
+                       break;
+               case SIGN_RSA_EMSA_PKCS1_MD5:
+                       return HASH_MD5;
+               case SIGN_RSA_EMSA_PKCS1_SHA1:
+               case SIGN_ECDSA_WITH_SHA1_DER:
+                       return HASH_SHA1;
+               case SIGN_RSA_EMSA_PKCS1_SHA224:
+                       return HASH_SHA224;
+               case SIGN_RSA_EMSA_PKCS1_SHA256:
+               case SIGN_ECDSA_WITH_SHA256_DER:
+               case SIGN_ECDSA_256:
+               case SIGN_BLISS_WITH_SHA256:
+                       return HASH_SHA256;
+               case SIGN_RSA_EMSA_PKCS1_SHA384:
+               case SIGN_ECDSA_WITH_SHA384_DER:
+               case SIGN_ECDSA_384:
+               case SIGN_BLISS_WITH_SHA384:
+                       return HASH_SHA384;
+               case SIGN_RSA_EMSA_PKCS1_SHA512:
+               case SIGN_ECDSA_WITH_SHA512_DER:
+               case SIGN_ECDSA_521:
+               case SIGN_BLISS_WITH_SHA512:
+                       return HASH_SHA512;
+       }
+       return HASH_UNKNOWN;
+}
index 48735bceb4e6459dc84158e3444d04a3a2aa7a7b..772586308e8aeb9083d86e9b8566fb751cfe1afd 100644 (file)
@@ -187,4 +187,12 @@ int hasher_algorithm_to_oid(hash_algorithm_t alg);
  */
 int hasher_signature_algorithm_to_oid(hash_algorithm_t alg, key_type_t key);
 
+/**
+ * Determine the hash algorithm associated with a given signature scheme.
+ *
+ * @param scheme               signature scheme
+ * @return                             hash algorithm (could be HASH_UNKNOWN)
+ */
+hash_algorithm_t hasher_from_signature_scheme(signature_scheme_t scheme);
+
 #endif /** HASHER_H_ @}*/