diff options
Diffstat (limited to 'src/pk_pad')
-rw-r--r-- | src/pk_pad/info.txt | 10 | ||||
-rw-r--r-- | src/pk_pad/pk_pad.cpp | 48 | ||||
-rw-r--r-- | src/pk_pad/pk_pad.h | 58 |
3 files changed, 116 insertions, 0 deletions
diff --git a/src/pk_pad/info.txt b/src/pk_pad/info.txt new file mode 100644 index 000000000..d28ddd9fc --- /dev/null +++ b/src/pk_pad/info.txt @@ -0,0 +1,10 @@ +realname "Public Key Signature and Encryption Padding" + +define PK_PADDING + +load_on auto + +<add> +pk_pad.cpp +pk_pad.h +</add> diff --git a/src/pk_pad/pk_pad.cpp b/src/pk_pad/pk_pad.cpp new file mode 100644 index 000000000..23dc9a95b --- /dev/null +++ b/src/pk_pad/pk_pad.cpp @@ -0,0 +1,48 @@ +/************************************************* +* EME/EMSA Base Class Source File * +* (C) 1999-2008 Jack Lloyd * +*************************************************/ + +#include <botan/pk_pad.h> + +namespace Botan { + +/************************************************* +* Encode a message * +*************************************************/ +SecureVector<byte> EME::encode(const byte msg[], u32bit msg_len, + u32bit key_bits, + RandomNumberGenerator& rng) const + { + return pad(msg, msg_len, key_bits, rng); + } + +/************************************************* +* Encode a message * +*************************************************/ +SecureVector<byte> EME::encode(const MemoryRegion<byte>& msg, + u32bit key_bits, + RandomNumberGenerator& rng) const + { + return pad(msg, msg.size(), key_bits, rng); + } + +/************************************************* +* Decode a message * +*************************************************/ +SecureVector<byte> EME::decode(const byte msg[], u32bit msg_len, + u32bit key_bits) const + { + return unpad(msg, msg_len, key_bits); + } + +/************************************************* +* Decode a message * +*************************************************/ +SecureVector<byte> EME::decode(const MemoryRegion<byte>& msg, + u32bit key_bits) const + { + return unpad(msg, msg.size(), key_bits); + } + +} diff --git a/src/pk_pad/pk_pad.h b/src/pk_pad/pk_pad.h new file mode 100644 index 000000000..ed1742155 --- /dev/null +++ b/src/pk_pad/pk_pad.h @@ -0,0 +1,58 @@ +/************************************************* +* EME/EMSA Classes Header File * +* (C) 1999-2007 Jack Lloyd * +*************************************************/ + +#ifndef BOTAN_PUBKEY_PAD_H__ +#define BOTAN_PUBKEY_PAD_H__ + +#include <botan/base.h> +#include <botan/rng.h> + +namespace Botan { + +/************************************************* +* Encoding Method for Encryption * +*************************************************/ +class BOTAN_DLL EME + { + public: + virtual u32bit maximum_input_size(u32bit) const = 0; + + SecureVector<byte> encode(const byte[], u32bit, u32bit, + RandomNumberGenerator&) const; + SecureVector<byte> encode(const MemoryRegion<byte>&, u32bit, + RandomNumberGenerator&) const; + + SecureVector<byte> decode(const byte[], u32bit, u32bit) const; + SecureVector<byte> decode(const MemoryRegion<byte>&, u32bit) const; + + virtual ~EME() {} + private: + virtual SecureVector<byte> pad(const byte[], u32bit, u32bit, + RandomNumberGenerator&) const = 0; + + virtual SecureVector<byte> unpad(const byte[], u32bit, u32bit) const = 0; + }; + +/************************************************* +* Encoding Method for Signatures, Appendix * +*************************************************/ +class BOTAN_DLL EMSA + { + public: + virtual void update(const byte[], u32bit) = 0; + virtual SecureVector<byte> raw_data() = 0; + + virtual SecureVector<byte> encoding_of(const MemoryRegion<byte>&, + u32bit, + RandomNumberGenerator& rng) = 0; + + virtual bool verify(const MemoryRegion<byte>&, const MemoryRegion<byte>&, + u32bit) throw() = 0; + virtual ~EMSA() {} + }; + +} + +#endif |