transform: Add a getter for the enum_names for a specific transform type
authorMartin Willi <martin@revosec.ch>
Mon, 13 Apr 2015 16:23:25 +0000 (18:23 +0200)
committerMartin Willi <martin@revosec.ch>
Wed, 15 Apr 2015 12:38:43 +0000 (14:38 +0200)
src/libstrongswan/crypto/transform.c
src/libstrongswan/crypto/transform.h

index 5625297..7c6678b 100644 (file)
@@ -14,6 +14,8 @@
  */
 
 #include <crypto/transform.h>
  */
 
 #include <crypto/transform.h>
+#include <crypto/hashers/hasher.h>
+#include <crypto/rngs/rng.h>
 
 ENUM_BEGIN(transform_type_names, UNDEFINED_TRANSFORM_TYPE, COMPRESSION_ALGORITHM,
        "UNDEFINED_TRANSFORM_TYPE",
 
 ENUM_BEGIN(transform_type_names, UNDEFINED_TRANSFORM_TYPE, COMPRESSION_ALGORITHM,
        "UNDEFINED_TRANSFORM_TYPE",
@@ -34,3 +36,33 @@ ENUM(extended_sequence_numbers_names, NO_EXT_SEQ_NUMBERS, EXT_SEQ_NUMBERS,
        "NO_EXT_SEQ",
        "EXT_SEQ",
 );
        "NO_EXT_SEQ",
        "EXT_SEQ",
 );
+
+
+/**
+ * See header
+ */
+enum_name_t* transform_get_enum_names(transform_type_t type)
+{
+       switch (type)
+       {
+               case HASH_ALGORITHM:
+                       return hash_algorithm_names;
+               case RANDOM_NUMBER_GENERATOR:
+                       return rng_quality_names;
+               case AEAD_ALGORITHM:
+               case ENCRYPTION_ALGORITHM:
+                       return encryption_algorithm_names;
+               case PSEUDO_RANDOM_FUNCTION:
+                       return pseudo_random_function_names;
+               case INTEGRITY_ALGORITHM:
+                       return integrity_algorithm_names;
+               case DIFFIE_HELLMAN_GROUP:
+                       return diffie_hellman_group_names;
+               case EXTENDED_SEQUENCE_NUMBERS:
+                       return extended_sequence_numbers_names;
+               case UNDEFINED_TRANSFORM_TYPE:
+               case COMPRESSION_ALGORITHM:
+                       break;
+       }
+       return NULL;
+}
index a585e97..0cb84f0 100644 (file)
@@ -47,6 +47,14 @@ enum transform_type_t {
 extern enum_name_t *transform_type_names;
 
 /**
 extern enum_name_t *transform_type_names;
 
 /**
+ * Get the enum names for a specific transform type.
+ *
+ * @param type         type of transform to get enum names for
+ * @return                     enum names
+ */
+enum_name_t *transform_get_enum_names(transform_type_t type);
+
+/**
  * Extended sequence numbers, as in IKEv2 RFC 3.3.2.
  */
 enum extended_sequence_numbers_t {
  * Extended sequence numbers, as in IKEv2 RFC 3.3.2.
  */
 enum extended_sequence_numbers_t {