aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstate
diff options
context:
space:
mode:
authorlloyd <[email protected]>2011-03-21 16:01:16 +0000
committerlloyd <[email protected]>2011-03-21 16:01:16 +0000
commit7fd5a8658e3cd4c5a28099725255ae94a2ab9e46 (patch)
treea91497ae2c73fee6c290a7b3cf6ccdfc01388e2f /src/libstate
parent17bdf198acb8d4421af55a1a89f87ec24da4125d (diff)
Add back min_keylength_of, max_keylength_of, keylength_multiple_of
functions for backwards compatability.
Diffstat (limited to 'src/libstate')
-rw-r--r--src/libstate/lookup.cpp57
-rw-r--r--src/libstate/lookup.h30
2 files changed, 87 insertions, 0 deletions
diff --git a/src/libstate/lookup.cpp b/src/libstate/lookup.cpp
index 24a46e3e9..0d3f33573 100644
--- a/src/libstate/lookup.cpp
+++ b/src/libstate/lookup.cpp
@@ -62,6 +62,63 @@ size_t output_length_of(const std::string& name)
}
/*
+* Query the minimum allowed key length of an algorithm implementation
+*/
+size_t min_keylength_of(const std::string& name)
+ {
+ Algorithm_Factory& af = global_state().algorithm_factory();
+
+ if(const BlockCipher* bc = af.prototype_block_cipher(name))
+ return bc->key_spec().minimum_keylength();
+
+ if(const StreamCipher* sc = af.prototype_stream_cipher(name))
+ return sc->key_spec().minimum_keylength();
+
+ if(const MessageAuthenticationCode* mac = af.prototype_mac(name))
+ return mac->key_spec().minimum_keylength();
+
+ throw Algorithm_Not_Found(name);
+ }
+
+/*
+* Query the maximum allowed keylength of an algorithm implementation
+*/
+size_t max_keylength_of(const std::string& name)
+ {
+ Algorithm_Factory& af = global_state().algorithm_factory();
+
+ if(const BlockCipher* bc = af.prototype_block_cipher(name))
+ return bc->key_spec().maximum_keylength();
+
+ if(const StreamCipher* sc = af.prototype_stream_cipher(name))
+ return sc->key_spec().maximum_keylength();
+
+ if(const MessageAuthenticationCode* mac = af.prototype_mac(name))
+ return mac->key_spec().maximum_keylength();
+
+ throw Algorithm_Not_Found(name);
+ }
+
+/*
+* Query the number of byte a valid key must be a multiple of
+*/
+size_t keylength_multiple_of(const std::string& name)
+ {
+ Algorithm_Factory& af = global_state().algorithm_factory();
+
+ if(const BlockCipher* bc = af.prototype_block_cipher(name))
+ return bc->key_spec().keylength_multiple();
+
+ if(const StreamCipher* sc = af.prototype_stream_cipher(name))
+ return sc->key_spec().keylength_multiple();
+
+ if(const MessageAuthenticationCode* mac = af.prototype_mac(name))
+ return mac->key_spec().keylength_multiple();
+
+ throw Algorithm_Not_Found(name);
+ }
+
+/*
* Get a cipher object
*/
Keyed_Filter* get_cipher(const std::string& algo_spec,
diff --git a/src/libstate/lookup.h b/src/libstate/lookup.h
index 02c1708aa..e10c195b8 100644
--- a/src/libstate/lookup.h
+++ b/src/libstate/lookup.h
@@ -299,6 +299,36 @@ BOTAN_DLL size_t block_size_of(const std::string& algo_spec);
*/
BOTAN_DLL size_t output_length_of(const std::string& algo_spec);
+/**
+* Find out the minimum key size of a certain symmetric algorithm.
+* @deprecated Call algorithm_factory() directly
+*
+* @param algo_spec the name of the algorithm
+* @return minimum key length of the specified algorithm
+*/
+BOTAN_DEPRECATED("Retrieve object you want and then call key_spec")
+BOTAN_DLL size_t min_keylength_of(const std::string& algo_spec);
+
+/**
+* Find out the maximum key size of a certain symmetric algorithm.
+* @deprecated Call algorithm_factory() directly
+*
+* @param algo_spec the name of the algorithm
+* @return maximum key length of the specified algorithm
+*/
+BOTAN_DEPRECATED("Retrieve object you want and then call key_spec")
+BOTAN_DLL size_t max_keylength_of(const std::string& algo_spec);
+
+/**
+* Find out the size any valid key is a multiple of for a certain algorithm.
+* @deprecated Call algorithm_factory() directly
+*
+* @param algo_spec the name of the algorithm
+* @return size any valid key is a multiple of
+*/
+BOTAN_DEPRECATED("Retrieve object you want and then call key_spec")
+BOTAN_DLL size_t keylength_multiple_of(const std::string& algo_spec);
+
}
#endif