Botan  2.6.0
Crypto and TLS for C++11
Public Member Functions | List of all members
Botan::OctetString Class Referencefinal

#include <symkey.h>

Public Member Functions

std::string as_string () const
 
const uint8_t * begin () const
 
secure_vector< uint8_t > bits_of () const
 
const uint8_t * end () const
 
size_t length () const
 
 OctetString (const std::string &str="")
 
 OctetString (class RandomNumberGenerator &rng, size_t len)
 
 OctetString (const uint8_t in[], size_t len)
 
 OctetString (const secure_vector< uint8_t > &in)
 
 OctetString (const std::vector< uint8_t > &in)
 
OctetStringoperator^= (const OctetString &other)
 
void set_odd_parity ()
 
size_t size () const
 

Detailed Description

Octet String

Definition at line 19 of file symkey.h.

Constructor & Destructor Documentation

◆ OctetString() [1/5]

Botan::OctetString::OctetString ( const std::string &  str = "")
explicit

Create a new OctetString

Parameters
stris a hex encoded string

Definition at line 27 of file symkey.cpp.

References Botan::hex_decode().

28  {
29  m_data.resize(1 + hex_string.length() / 2);
30  m_data.resize(hex_decode(m_data.data(), hex_string));
31  }
size_t hex_decode(uint8_t output[], const char input[], size_t input_length, size_t &input_consumed, bool ignore_ws)
Definition: hex.cpp:49

◆ OctetString() [2/5]

Botan::OctetString::OctetString ( class RandomNumberGenerator rng,
size_t  len 
)

Create a new random OctetString

Parameters
rngis a random number generator
lenis the desired length in bytes

Definition at line 18 of file symkey.cpp.

References Botan::RandomNumberGenerator::random_vec().

20  {
21  m_data = rng.random_vec(len);
22  }

◆ OctetString() [3/5]

Botan::OctetString::OctetString ( const uint8_t  in[],
size_t  len 
)

Create a new OctetString

Parameters
inis an array
lenis the length of in in bytes

Definition at line 36 of file symkey.cpp.

37  {
38  m_data.assign(in, in + n);
39  }

◆ OctetString() [4/5]

Botan::OctetString::OctetString ( const secure_vector< uint8_t > &  in)
inline

Create a new OctetString

Parameters
ina bytestring

Definition at line 84 of file symkey.h.

84 : m_data(in) {}

◆ OctetString() [5/5]

Botan::OctetString::OctetString ( const std::vector< uint8_t > &  in)
inline

Create a new OctetString

Parameters
ina bytestring

Definition at line 90 of file symkey.h.

90 : m_data(in.begin(), in.end()) {}

Member Function Documentation

◆ as_string()

std::string Botan::OctetString::as_string ( ) const
Returns
this encoded as hex

Definition at line 77 of file symkey.cpp.

References Botan::hex_encode().

78  {
79  return hex_encode(m_data.data(), m_data.size());
80  }
void hex_encode(char output[], const uint8_t input[], size_t input_length, bool uppercase)
Definition: hex.cpp:14

◆ begin()

const uint8_t* Botan::OctetString::begin ( ) const
inline

◆ bits_of()

secure_vector<uint8_t> Botan::OctetString::bits_of ( ) const
inline

◆ end()

const uint8_t* Botan::OctetString::end ( ) const
inline
Returns
end of this string

Definition at line 41 of file symkey.h.

Referenced by Botan::ECIES_KA_Operation::derive_secret().

41 { return begin() + m_data.size(); }
const uint8_t * begin() const
Definition: symkey.h:36

◆ length()

size_t Botan::OctetString::length ( ) const
inline

◆ operator^=()

OctetString & Botan::OctetString::operator^= ( const OctetString other)

XOR the contents of another octet string into this one

Parameters
otheroctet string
Returns
reference to this

Definition at line 85 of file symkey.cpp.

References begin(), length(), Botan::xor_buf(), and Botan::zeroise().

86  {
87  if(&k == this) { zeroise(m_data); return (*this); }
88  xor_buf(m_data.data(), k.begin(), std::min(length(), k.length()));
89  return (*this);
90  }
void xor_buf(uint8_t out[], const uint8_t in[], size_t length)
Definition: mem_ops.h:174
size_t length() const
Definition: symkey.h:25
void zeroise(std::vector< T, Alloc > &vec)
Definition: secmem.h:183

◆ set_odd_parity()

void Botan::OctetString::set_odd_parity ( )

Force to have odd parity

Definition at line 44 of file symkey.cpp.

45  {
46  const uint8_t ODD_PARITY[256] = {
47  0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x07, 0x07, 0x08, 0x08, 0x0B, 0x0B,
48  0x0D, 0x0D, 0x0E, 0x0E, 0x10, 0x10, 0x13, 0x13, 0x15, 0x15, 0x16, 0x16,
49  0x19, 0x19, 0x1A, 0x1A, 0x1C, 0x1C, 0x1F, 0x1F, 0x20, 0x20, 0x23, 0x23,
50  0x25, 0x25, 0x26, 0x26, 0x29, 0x29, 0x2A, 0x2A, 0x2C, 0x2C, 0x2F, 0x2F,
51  0x31, 0x31, 0x32, 0x32, 0x34, 0x34, 0x37, 0x37, 0x38, 0x38, 0x3B, 0x3B,
52  0x3D, 0x3D, 0x3E, 0x3E, 0x40, 0x40, 0x43, 0x43, 0x45, 0x45, 0x46, 0x46,
53  0x49, 0x49, 0x4A, 0x4A, 0x4C, 0x4C, 0x4F, 0x4F, 0x51, 0x51, 0x52, 0x52,
54  0x54, 0x54, 0x57, 0x57, 0x58, 0x58, 0x5B, 0x5B, 0x5D, 0x5D, 0x5E, 0x5E,
55  0x61, 0x61, 0x62, 0x62, 0x64, 0x64, 0x67, 0x67, 0x68, 0x68, 0x6B, 0x6B,
56  0x6D, 0x6D, 0x6E, 0x6E, 0x70, 0x70, 0x73, 0x73, 0x75, 0x75, 0x76, 0x76,
57  0x79, 0x79, 0x7A, 0x7A, 0x7C, 0x7C, 0x7F, 0x7F, 0x80, 0x80, 0x83, 0x83,
58  0x85, 0x85, 0x86, 0x86, 0x89, 0x89, 0x8A, 0x8A, 0x8C, 0x8C, 0x8F, 0x8F,
59  0x91, 0x91, 0x92, 0x92, 0x94, 0x94, 0x97, 0x97, 0x98, 0x98, 0x9B, 0x9B,
60  0x9D, 0x9D, 0x9E, 0x9E, 0xA1, 0xA1, 0xA2, 0xA2, 0xA4, 0xA4, 0xA7, 0xA7,
61  0xA8, 0xA8, 0xAB, 0xAB, 0xAD, 0xAD, 0xAE, 0xAE, 0xB0, 0xB0, 0xB3, 0xB3,
62  0xB5, 0xB5, 0xB6, 0xB6, 0xB9, 0xB9, 0xBA, 0xBA, 0xBC, 0xBC, 0xBF, 0xBF,
63  0xC1, 0xC1, 0xC2, 0xC2, 0xC4, 0xC4, 0xC7, 0xC7, 0xC8, 0xC8, 0xCB, 0xCB,
64  0xCD, 0xCD, 0xCE, 0xCE, 0xD0, 0xD0, 0xD3, 0xD3, 0xD5, 0xD5, 0xD6, 0xD6,
65  0xD9, 0xD9, 0xDA, 0xDA, 0xDC, 0xDC, 0xDF, 0xDF, 0xE0, 0xE0, 0xE3, 0xE3,
66  0xE5, 0xE5, 0xE6, 0xE6, 0xE9, 0xE9, 0xEA, 0xEA, 0xEC, 0xEC, 0xEF, 0xEF,
67  0xF1, 0xF1, 0xF2, 0xF2, 0xF4, 0xF4, 0xF7, 0xF7, 0xF8, 0xF8, 0xFB, 0xFB,
68  0xFD, 0xFD, 0xFE, 0xFE };
69 
70  for(size_t j = 0; j != m_data.size(); ++j)
71  m_data[j] = ODD_PARITY[m_data[j]];
72  }

◆ size()

size_t Botan::OctetString::size ( ) const
inline

Definition at line 26 of file symkey.h.

Referenced by Botan::rfc3394_keyunwrap(), and Botan::rfc3394_keywrap().

26 { return m_data.size(); }

The documentation for this class was generated from the following files: