/usr/include/botan-1.10/botan/symkey.h is in libbotan1.10-dev 1.10.16-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | /*
* OctetString
* (C) 1999-2007 Jack Lloyd
*
* Distributed under the terms of the Botan license
*/
#ifndef BOTAN_SYMKEY_H__
#define BOTAN_SYMKEY_H__
#include <botan/secmem.h>
#include <string>
namespace Botan {
/**
* Octet String
*/
class BOTAN_DLL OctetString
{
public:
/**
* @return size of this octet string in bytes
*/
size_t length() const { return bits.size(); }
/**
* @return this object as a SecureVector<byte>
*/
SecureVector<byte> bits_of() const { return bits; }
/**
* @return start of this string
*/
const byte* begin() const { return &bits[0]; }
/**
* @return end of this string
*/
const byte* end() const { return &bits[bits.size()]; }
/**
* @return this encoded as hex
*/
std::string as_string() const;
/**
* XOR the contents of another octet string into this one
* @param other octet string
* @return reference to this
*/
OctetString& operator^=(const OctetString& other);
/**
* Force to have odd parity
*/
void set_odd_parity();
/**
* Change the contents of this octet string
* @param hex_string a hex encoded bytestring
*/
void change(const std::string& hex_string);
/**
* Change the contents of this octet string
* @param in the input
* @param length of in in bytes
*/
void change(const byte in[], size_t length);
/**
* Change the contents of this octet string
* @param in the input
*/
void change(const MemoryRegion<byte>& in) { bits = in; }
/**
* Create a new random OctetString
* @param rng is a random number generator
* @param len is the desired length in bytes
*/
OctetString(class RandomNumberGenerator& rng, size_t len);
/**
* Create a new OctetString
* @param str is a hex encoded string
*/
OctetString(const std::string& str = "") { change(str); }
/**
* Create a new OctetString
* @param in is an array
* @param len is the length of in in bytes
*/
OctetString(const byte in[], size_t len) { change(in, len); }
/**
* Create a new OctetString
* @param in a bytestring
*/
OctetString(const MemoryRegion<byte>& in) { change(in); }
private:
SecureVector<byte> bits;
};
/**
* Compare two strings
* @param x an octet string
* @param y an octet string
* @return if x is equal to y
*/
BOTAN_DLL bool operator==(const OctetString& x,
const OctetString& y);
/**
* Compare two strings
* @param x an octet string
* @param y an octet string
* @return if x is not equal to y
*/
BOTAN_DLL bool operator!=(const OctetString& x,
const OctetString& y);
/**
* Concatenate two strings
* @param x an octet string
* @param y an octet string
* @return x concatenated with y
*/
BOTAN_DLL OctetString operator+(const OctetString& x,
const OctetString& y);
/**
* XOR two strings
* @param x an octet string
* @param y an octet string
* @return x XORed with y
*/
BOTAN_DLL OctetString operator^(const OctetString& x,
const OctetString& y);
/**
* Alternate name for octet string showing intent to use as a key
*/
typedef OctetString SymmetricKey;
/**
* Alternate name for octet string showing intent to use as an IV
*/
typedef OctetString InitializationVector;
}
#endif
|