Below is the file 'botan/pubkey.h' from this revision. You can also download the file.
/************************************************* * Public Key Interface Header File * * (C) 1999-2005 The Botan Project * *************************************************/ #ifndef BOTAN_PUBKEY_H__ #define BOTAN_PUBKEY_H__ #include <botan/base.h> #include <botan/pk_keys.h> #include <botan/pk_util.h> namespace Botan { /************************************************* * Public Key Encryptor * *************************************************/ class PK_Encryptor { public: SecureVector<byte> encrypt(const byte[], u32bit) const; SecureVector<byte> encrypt(const MemoryRegion<byte>&) const; virtual u32bit maximum_input_size() const = 0; virtual ~PK_Encryptor() {} private: virtual SecureVector<byte> enc(const byte[], u32bit) const = 0; }; /************************************************* * Public Key Decryptor * *************************************************/ class PK_Decryptor { public: SecureVector<byte> decrypt(const byte[], u32bit) const; SecureVector<byte> decrypt(const MemoryRegion<byte>&) const; virtual ~PK_Decryptor() {} private: virtual SecureVector<byte> dec(const byte[], u32bit) const = 0; }; /************************************************* * Public Key Signer * *************************************************/ class PK_Signer { public: SecureVector<byte> sign_message(const byte[], u32bit); SecureVector<byte> sign_message(const MemoryRegion<byte>&); void update(const byte[], u32bit); void update(const MemoryRegion<byte>&); SecureVector<byte> signature(); void set_output_format(Signature_Format); PK_Signer(const PK_Signing_Key&, const std::string&); ~PK_Signer() { delete emsa; } private: const PK_Signing_Key& key; Signature_Format sig_format; EMSA* emsa; }; /************************************************* * Public Key Verifier * *************************************************/ class PK_Verifier { public: bool verify_message(const byte[], u32bit, const byte[], u32bit); bool verify_message(const MemoryRegion<byte>&, const MemoryRegion<byte>&); void update(const byte[], u32bit); void update(const MemoryRegion<byte>&); bool check_signature(const byte[], u32bit); bool check_signature(const MemoryRegion<byte>&); void set_input_format(Signature_Format); PK_Verifier(const PK_Key&, const std::string&); virtual ~PK_Verifier() { delete emsa; } protected: virtual bool validate_signature(const MemoryRegion<byte>&, const byte[], u32bit) = 0; Signature_Format sig_format; EMSA* emsa; private: const PK_Key& key; }; /************************************************* * Key Agreement * *************************************************/ class PK_Key_Agreement { public: SymmetricKey derive_key(u32bit, const byte[], u32bit, const std::string& = "") const; SymmetricKey derive_key(u32bit, const byte[], u32bit, const byte[], u32bit) const; PK_Key_Agreement(const PK_Key_Agreement_Key&, const std::string&); private: const PK_Key_Agreement_Key& key; const std::string kdf_name; }; /************************************************* * Encryption with an MR algorithm and an EME * *************************************************/ class PK_Encryptor_MR_with_EME : public PK_Encryptor { public: u32bit maximum_input_size() const; PK_Encryptor_MR_with_EME(const PK_Encrypting_Key&, const std::string&); ~PK_Encryptor_MR_with_EME() { delete encoder; } private: SecureVector<byte> enc(const byte[], u32bit) const; const PK_Encrypting_Key& key; const EME* encoder; }; /************************************************* * Decryption with an MR algorithm and an EME * *************************************************/ class PK_Decryptor_MR_with_EME : public PK_Decryptor { public: PK_Decryptor_MR_with_EME(const PK_Decrypting_Key&, const std::string&); ~PK_Decryptor_MR_with_EME() { delete encoder; } private: SecureVector<byte> dec(const byte[], u32bit) const; const PK_Decrypting_Key& key; const EME* encoder; }; /************************************************* * Public Key Verifier with Message Recovery * *************************************************/ class PK_Verifier_with_MR : public PK_Verifier { public: PK_Verifier_with_MR(const PK_Verifying_with_MR_Key&, const std::string&); private: bool validate_signature(const MemoryRegion<byte>&, const byte[], u32bit); const PK_Verifying_with_MR_Key& key; }; /************************************************* * Public Key Verifier without Message Recovery * *************************************************/ class PK_Verifier_wo_MR : public PK_Verifier { public: PK_Verifier_wo_MR(const PK_Verifying_wo_MR_Key&, const std::string&); private: bool validate_signature(const MemoryRegion<byte>&, const byte[], u32bit); const PK_Verifying_wo_MR_Key& key; }; } #endif