extended hasher_signature_algorithm_to_oid() function
[strongswan.git] / src / libstrongswan / crypto / hashers / hasher.c
index 4d6904e..81750a5 100644 (file)
@@ -104,36 +104,46 @@ int hasher_algorithm_to_oid(hash_algorithm_t alg)
 /*
  * Described in header.
  */
-int hasher_signature_algorithm_to_oid(hash_algorithm_t alg)
+int hasher_signature_algorithm_to_oid(hash_algorithm_t alg, key_type_t key)
 {
-       int oid;
-
-       switch (alg)
+       switch (key)
        {
-               case HASH_MD2:
-                       oid = OID_MD2_WITH_RSA;
-                       break;
-               case HASH_MD5:
-                       oid = OID_MD5_WITH_RSA;
-                       break;
-               case HASH_SHA1:
-                       oid = OID_SHA1_WITH_RSA;
-                       break;
-               case HASH_SHA224:
-                       oid = OID_SHA224_WITH_RSA;
-                       break;
-               case HASH_SHA256:
-                       oid = OID_SHA256_WITH_RSA;
-                       break;
-               case HASH_SHA384:
-                       oid = OID_SHA384_WITH_RSA;
-                       break;
-               case HASH_SHA512:
-                       oid = OID_SHA512_WITH_RSA;
-                       break;
+               case KEY_RSA:
+                       switch (alg)
+                       {
+                               case HASH_MD2:
+                                       return OID_MD2_WITH_RSA;
+                               case HASH_MD5:
+                                       return OID_MD5_WITH_RSA;
+                               case HASH_SHA1:
+                                       return OID_SHA1_WITH_RSA;
+                               case HASH_SHA224:
+                                       return OID_SHA224_WITH_RSA;
+                               case HASH_SHA256:
+                                       return OID_SHA256_WITH_RSA;
+                               case HASH_SHA384:
+                                       return OID_SHA384_WITH_RSA;
+                               case HASH_SHA512:
+                                       return OID_SHA512_WITH_RSA;
+                               default:
+                                       return OID_UNKNOWN;
+                       }
+               case KEY_ECDSA:
+                       switch (alg)
+                       {
+                               case HASH_SHA1:
+                                       return OID_ECDSA_WITH_SHA1;
+                               case HASH_SHA256:
+                                       return OID_ECDSA_WITH_SHA256;
+                               case HASH_SHA384:
+                                       return OID_ECDSA_WITH_SHA384;
+                               case HASH_SHA512:
+                                       return OID_ECDSA_WITH_SHA512;
+                               default:
+                                       return OID_UNKNOWN;
+                       }
                default:
-                       oid = OID_UNKNOWN;
+                       return OID_UNKNOWN;
        }
-       return oid;
 }