]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
hasher: Add function to determine length of hashes
authorTobias Brunner <tobias@strongswan.org>
Fri, 22 Sep 2017 07:46:14 +0000 (09:46 +0200)
committerTobias Brunner <tobias@strongswan.org>
Wed, 8 Nov 2017 15:48:10 +0000 (16:48 +0100)
src/libstrongswan/crypto/hashers/hasher.c
src/libstrongswan/crypto/hashers/hasher.h

index 3f49f36000383a5a37d4d6622a1001be1c8a661a..c04835b2c6a709733f111e9fb4c801e72b341705 100644 (file)
@@ -56,6 +56,44 @@ ENUM_NEXT(hash_algorithm_short_names, HASH_UNKNOWN, HASH_SHA3_512, HASH_IDENTITY
        "sha3_512");
 ENUM_END(hash_algorithm_short_names, HASH_SHA3_512);
 
+/*
+ * Described in header
+ */
+size_t hasher_hash_size(hash_algorithm_t alg)
+{
+       switch (alg)
+       {
+               case HASH_SHA1:
+                       return HASH_SIZE_SHA1;
+               case HASH_SHA256:
+                       return HASH_SIZE_SHA256;
+               case HASH_SHA384:
+                       return HASH_SIZE_SHA384;
+               case HASH_SHA512:
+                       return HASH_SIZE_SHA512;
+               case HASH_MD2:
+                       return HASH_SIZE_MD2;
+               case HASH_MD4:
+                       return HASH_SIZE_MD4;
+               case HASH_MD5:
+                       return HASH_SIZE_MD5;
+               case HASH_SHA224:
+                       return HASH_SIZE_SHA224;
+               case HASH_SHA3_224:
+                       return HASH_SIZE_SHA224;
+               case HASH_SHA3_256:
+                       return HASH_SIZE_SHA256;
+               case HASH_SHA3_384:
+                       return HASH_SIZE_SHA384;
+               case HASH_SHA3_512:
+                       return HASH_SIZE_SHA512;
+               case HASH_IDENTITY:
+               case HASH_UNKNOWN:
+                       break;
+       }
+       return 0;
+}
+
 /*
  * Described in header.
  */
index ec0c6320b96c6faa635fe5c6428f224858cc24bf..9d2df1d4ba752f4600ff26d5f23de51f3b2e68d7 100644 (file)
@@ -130,6 +130,14 @@ struct hasher_t {
        void (*destroy)(hasher_t *this);
 };
 
+/**
+ * Returns the size of the hash for the given algorithm.
+ *
+ * @param alg                  hash algorithm
+ * @return                             size of hash or 0 if unknown
+ */
+size_t hasher_hash_size(hash_algorithm_t alg);
+
 /**
  * Conversion of ASN.1 OID to hash algorithm.
  *