/************************************************* * PK Utility Classes Header File * * (C) 1999-2007 Jack Lloyd * *************************************************/ #ifndef BOTAN_PUBKEY_UTIL_H__ #define BOTAN_PUBKEY_UTIL_H__ #include namespace Botan { /************************************************* * Encoding Method for Encryption * *************************************************/ class EME { public: virtual u32bit maximum_input_size(u32bit) const = 0; SecureVector encode(const byte[], u32bit, u32bit) const; SecureVector encode(const MemoryRegion&, u32bit) const; SecureVector decode(const byte[], u32bit, u32bit) const; SecureVector decode(const MemoryRegion&, u32bit) const; virtual ~EME() {} private: virtual SecureVector pad(const byte[], u32bit, u32bit) const = 0; virtual SecureVector unpad(const byte[], u32bit, u32bit) const = 0; }; /************************************************* * Encoding Method for Signatures, Appendix * *************************************************/ class EMSA { public: virtual void update(const byte[], u32bit) = 0; virtual SecureVector raw_data() = 0; virtual SecureVector encoding_of(const MemoryRegion&, u32bit) = 0; virtual bool verify(const MemoryRegion&, const MemoryRegion&, u32bit) throw(); virtual ~EMSA() {} }; /************************************************* * Key Derivation Function * *************************************************/ class KDF { public: SecureVector derive_key(u32bit, const MemoryRegion&, const std::string& = "") const; SecureVector derive_key(u32bit, const MemoryRegion&, const MemoryRegion&) const; SecureVector derive_key(u32bit, const MemoryRegion&, const byte[], u32bit) const; SecureVector derive_key(u32bit, const byte[], u32bit, const std::string& = "") const; SecureVector derive_key(u32bit, const byte[], u32bit, const byte[], u32bit) const; virtual ~KDF() {} private: virtual SecureVector derive(u32bit, const byte[], u32bit, const byte[], u32bit) const = 0; }; /************************************************* * Mask Generation Function * *************************************************/ class MGF { public: virtual void mask(const byte[], u32bit, byte[], u32bit) const = 0; virtual ~MGF() {} }; } #endif