Botan  2.11.0
Crypto and TLS for C++11
symkey.h
Go to the documentation of this file.
1 /*
2 * OctetString
3 * (C) 1999-2007 Jack Lloyd
4 *
5 * Botan is released under the Simplified BSD License (see license.txt)
6 */
7 
8 #ifndef BOTAN_SYMKEY_H_
9 #define BOTAN_SYMKEY_H_
10 
11 #include <botan/secmem.h>
12 #include <string>
13 
14 namespace Botan {
15 
16 /**
17 * Octet String
18 */
19 class BOTAN_PUBLIC_API(2,0) OctetString final
20  {
21  public:
22  /**
23  * @return size of this octet string in bytes
24  */
25  size_t length() const { return m_data.size(); }
26  size_t size() const { return m_data.size(); }
27 
28  /**
29  * @return this object as a secure_vector<uint8_t>
30  */
31  secure_vector<uint8_t> bits_of() const { return m_data; }
32 
33  /**
34  * @return start of this string
35  */
36  const uint8_t* begin() const { return m_data.data(); }
37 
38  /**
39  * @return end of this string
40  */
41  const uint8_t* end() const { return begin() + m_data.size(); }
42 
43  /**
44  * @return this encoded as hex
45  */
46  std::string to_string() const;
47 
48  std::string BOTAN_DEPRECATED("Use OctetString::to_string") as_string() const
49  {
50  return this->to_string();
51  }
52 
53  /**
54  * XOR the contents of another octet string into this one
55  * @param other octet string
56  * @return reference to this
57  */
58  OctetString& operator^=(const OctetString& other);
59 
60  /**
61  * Force to have odd parity
62  */
63  void set_odd_parity();
64 
65  /**
66  * Create a new OctetString
67  * @param str is a hex encoded string
68  */
69  explicit OctetString(const std::string& str = "");
70 
71  /**
72  * Create a new random OctetString
73  * @param rng is a random number generator
74  * @param len is the desired length in bytes
75  */
76  OctetString(class RandomNumberGenerator& rng, size_t len);
77 
78  /**
79  * Create a new OctetString
80  * @param in is an array
81  * @param len is the length of in in bytes
82  */
83  OctetString(const uint8_t in[], size_t len);
84 
85  /**
86  * Create a new OctetString
87  * @param in a bytestring
88  */
89  OctetString(const secure_vector<uint8_t>& in) : m_data(in) {}
90 
91  /**
92  * Create a new OctetString
93  * @param in a bytestring
94  */
95  OctetString(const std::vector<uint8_t>& in) : m_data(in.begin(), in.end()) {}
96 
97  private:
98  secure_vector<uint8_t> m_data;
99  };
100 
101 /**
102 * Compare two strings
103 * @param x an octet string
104 * @param y an octet string
105 * @return if x is equal to y
106 */
107 BOTAN_PUBLIC_API(2,0) bool operator==(const OctetString& x,
108  const OctetString& y);
109 
110 /**
111 * Compare two strings
112 * @param x an octet string
113 * @param y an octet string
114 * @return if x is not equal to y
115 */
116 BOTAN_PUBLIC_API(2,0) bool operator!=(const OctetString& x,
117  const OctetString& y);
118 
119 /**
120 * Concatenate two strings
121 * @param x an octet string
122 * @param y an octet string
123 * @return x concatenated with y
124 */
125 BOTAN_PUBLIC_API(2,0) OctetString operator+(const OctetString& x,
126  const OctetString& y);
127 
128 /**
129 * XOR two strings
130 * @param x an octet string
131 * @param y an octet string
132 * @return x XORed with y
133 */
134 BOTAN_PUBLIC_API(2,0) OctetString operator^(const OctetString& x,
135  const OctetString& y);
136 
137 
138 /**
139 * Alternate name for octet string showing intent to use as a key
140 */
141 using SymmetricKey = OctetString;
142 
143 /**
144 * Alternate name for octet string showing intent to use as an IV
145 */
146 using InitializationVector = OctetString;
147 
148 }
149 
150 #endif
BigInt const BigInt & x
Definition: numthry.h:139
std::string size_t len
Definition: pk_keys.h:305
bool RandomNumberGenerator & rng
Definition: numthry.h:176
OctetString InitializationVector
Definition: symkey.h:146
int(* final)(unsigned char *, CTX *)
void const uint8_t in[]
Definition: mgf1.h:26
std::string to_string(ErrorType type)
Definition: exceptn.cpp:11
std::vector< uint8_t, Alloc > & operator^=(std::vector< uint8_t, Alloc > &out, const std::vector< uint8_t, Alloc2 > &in)
Definition: mem_ops.h:289
const char * str
Definition: ffi.h:769
Definition: alg_id.cpp:13
OctetString SymmetricKey
Definition: symkey.h:141
class BOTAN_PUBLIC_API(2, 0) AlgorithmIdentifier final bool BOTAN_PUBLIC_API(2, 0) operator
Name Constraints.
Definition: asn1_obj.h:66
const OctetString & y
Definition: symkey.h:126