Botan  1.10.9
key_spec.h
Go to the documentation of this file.
1 /*
2 * Symmetric Key Length Specification
3 * (C) 2010 Jack Lloyd
4 *
5 * Distributed under the terms of the Botan license
6 */
7 
8 #ifndef BOTAN_KEY_LEN_SPECIFICATION_H__
9 #define BOTAN_KEY_LEN_SPECIFICATION_H__
10 
11 #include <botan/types.h>
12 
13 namespace Botan {
14 
15 /**
16 * Represents the length requirements on an algorithm key
17 */
18 class BOTAN_DLL Key_Length_Specification
19  {
20  public:
21  /**
22  * Constructor for fixed length keys
23  * @param keylen the supported key length
24  */
25  Key_Length_Specification(size_t keylen) :
26  min_keylen(keylen),
27  max_keylen(keylen),
28  keylen_mod(1)
29  {
30  }
31 
32  /**
33  * Constructor for variable length keys
34  * @param min_k the smallest supported key length
35  * @param max_k the largest supported key length
36  * @param k_mod the number of bytes the key must be a multiple of
37  */
39  size_t max_k,
40  size_t k_mod = 1) :
41  min_keylen(min_k),
42  max_keylen(max_k ? max_k : min_k),
43  keylen_mod(k_mod)
44  {
45  }
46 
47  /**
48  * @param length is a key length in bytes
49  * @return true iff this length is a valid length for this algo
50  */
51  bool valid_keylength(size_t length) const
52  {
53  return ((length >= min_keylen) &&
54  (length <= max_keylen) &&
55  (length % keylen_mod == 0));
56  }
57 
58  /**
59  * @return minimum key length in bytes
60  */
61  size_t minimum_keylength() const
62  {
63  return min_keylen;
64  }
65 
66  /**
67  * @return maximum key length in bytes
68  */
69  size_t maximum_keylength() const
70  {
71  return max_keylen;
72  }
73 
74  /**
75  * @return key length multiple in bytes
76  */
77  size_t keylength_multiple() const
78  {
79  return keylen_mod;
80  }
81 
82  private:
83  size_t min_keylen, max_keylen, keylen_mod;
84  };
85 
86 }
87 
88 #endif
size_t minimum_keylength() const
Definition: key_spec.h:61
Key_Length_Specification(size_t min_k, size_t max_k, size_t k_mod=1)
Definition: key_spec.h:38
bool valid_keylength(size_t length) const
Definition: key_spec.h:51
size_t maximum_keylength() const
Definition: key_spec.h:69
size_t keylength_multiple() const
Definition: key_spec.h:77
Key_Length_Specification(size_t keylen)
Definition: key_spec.h:25