xof: Add helper to determine MGF1 XOF type from hash algorithm
authorTobias Brunner <tobias@strongswan.org>
Mon, 25 Sep 2017 16:06:40 +0000 (18:06 +0200)
committerTobias Brunner <tobias@strongswan.org>
Wed, 8 Nov 2017 15:48:10 +0000 (16:48 +0100)
src/libstrongswan/crypto/xofs/xof.c
src/libstrongswan/crypto/xofs/xof.h

index 1e9c283..7915985 100644 (file)
@@ -1,4 +1,5 @@
 /*
+ * Copyright (C) 2017 Tobias Brunner
  * Copyright (C) 2016 Andreas Steffen
  * HSR Hochschule fuer Technik Rapperswil
  *
@@ -25,3 +26,31 @@ ENUM(ext_out_function_names, XOF_UNDEFINED, XOF_CHACHA20,
        "XOF_CHACHA20"
 );
 
+/*
+ * Described in header
+ */
+ext_out_function_t xof_mgf1_from_hash_algorithm(hash_algorithm_t alg)
+{
+       switch (alg)
+       {
+               case HASH_SHA1:
+                       return XOF_MGF1_SHA1;
+               case HASH_SHA256:
+                       return XOF_MGF1_SHA256;
+               case HASH_SHA512:
+                       return XOF_MGF1_SHA512;
+               case HASH_SHA224:
+               case HASH_SHA384:
+               case HASH_IDENTITY:
+               case HASH_UNKNOWN:
+               case HASH_MD2:
+               case HASH_MD4:
+               case HASH_MD5:
+               case HASH_SHA3_224:
+               case HASH_SHA3_256:
+               case HASH_SHA3_384:
+               case HASH_SHA3_512:
+                       break;
+       }
+       return XOF_UNDEFINED;
+}
index 8c9ae01..83c9ab8 100644 (file)
@@ -1,4 +1,5 @@
 /*
+ * Copyright (C) 2017 Tobias Brunner
  * Copyright (C) 2016 Andreas Steffen
  * HSR Hochschule fuer Technik Rapperswil
  *
@@ -111,4 +112,12 @@ struct xof_t {
        void (*destroy)(xof_t *this);
 };
 
+/**
+ * Determine an MGF1 XOF type for the given hash algorithm.
+ *
+ * @param alg                  hash algorithm to map
+ * @return                             MGF1 XOF type if available, XOF_UNDEFINED otherwise
+ */
+ext_out_function_t xof_mgf1_from_hash_algorithm(hash_algorithm_t alg);
+
 #endif /** XOF_H_ @}*/