Botan  1.10.9
eme.h
Go to the documentation of this file.
1 /*
2 * EME Classes
3 * (C) 1999-2007 Jack Lloyd
4 *
5 * Distributed under the terms of the Botan license
6 */
7 
8 #ifndef BOTAN_PUBKEY_EME_ENCRYPTION_PAD_H__
9 #define BOTAN_PUBKEY_EME_ENCRYPTION_PAD_H__
10 
11 #include <botan/secmem.h>
12 #include <botan/rng.h>
13 
14 namespace Botan {
15 
16 /**
17 * Encoding Method for Encryption
18 */
19 class BOTAN_DLL EME
20  {
21  public:
22  /**
23  * Return the maximum input size in bytes we can support
24  * @param keybits the size of the key in bits
25  * @return upper bound of input in bytes
26  */
27  virtual size_t maximum_input_size(size_t keybits) const = 0;
28 
29  /**
30  * Encode an input
31  * @param in the plaintext
32  * @param in_length length of plaintext in bytes
33  * @param key_length length of the key in bits
34  * @param rng a random number generator
35  * @return encoded plaintext
36  */
37  SecureVector<byte> encode(const byte in[],
38  size_t in_length,
39  size_t key_length,
40  RandomNumberGenerator& rng) const;
41 
42  /**
43  * Encode an input
44  * @param in the plaintext
45  * @param key_length length of the key in bits
46  * @param rng a random number generator
47  * @return encoded plaintext
48  */
50  size_t key_length,
51  RandomNumberGenerator& rng) const;
52 
53  /**
54  * Decode an input
55  * @param in the encoded plaintext
56  * @param in_length length of encoded plaintext in bytes
57  * @param key_length length of the key in bits
58  * @return plaintext
59  */
60  SecureVector<byte> decode(const byte in[],
61  size_t in_length,
62  size_t key_length) const;
63 
64  /**
65  * Decode an input
66  * @param in the encoded plaintext
67  * @param key_length length of the key in bits
68  * @return plaintext
69  */
71  size_t key_length) const;
72 
73  virtual ~EME() {}
74  private:
75  /**
76  * Encode an input
77  * @param in the plaintext
78  * @param in_length length of plaintext in bytes
79  * @param key_length length of the key in bits
80  * @param rng a random number generator
81  * @return encoded plaintext
82  */
83  virtual SecureVector<byte> pad(const byte in[],
84  size_t in_length,
85  size_t key_length,
86  RandomNumberGenerator& rng) const = 0;
87 
88  /**
89  * Decode an input
90  * @param in the encoded plaintext
91  * @param in_length length of encoded plaintext in bytes
92  * @param key_length length of the key in bits
93  * @return plaintext
94  */
95  virtual SecureVector<byte> unpad(const byte in[],
96  size_t in_length,
97  size_t key_length) const = 0;
98  };
99 
100 }
101 
102 #endif
virtual ~EME()
Definition: eme.h:73
unsigned char byte
Definition: types.h:22
SecureVector< byte > decode(DataSource &source, std::string &label)
Definition: pem.cpp:56
Definition: eme.h:19
RandomNumberGenerator * rng
Definition: global_rng.cpp:165
std::string encode(const byte der[], size_t length, const std::string &label, size_t width)
Definition: pem.cpp:19