Botan 1.10.17
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
14namespace Botan {
15
16/**
17* Encoding Method for Encryption
18*/
19class 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
SecureVector< byte > decode(const byte in[], size_t in_length, size_t key_length) const
Definition eme.cpp:35
virtual size_t maximum_input_size(size_t keybits) const =0
SecureVector< byte > encode(const byte in[], size_t in_length, size_t key_length, RandomNumberGenerator &rng) const
Definition eme.cpp:15