/************************************************* * Public Key Operations Header File * * (C) 1999-2008 Jack Lloyd * *************************************************/ #ifndef BOTAN_PK_OPS_H__ #define BOTAN_PK_OPS_H__ #include #include #if defined(BOTAN_HAS_ECDSA) #include #endif namespace Botan { /************************************************* * IF Operation * *************************************************/ class BOTAN_DLL IF_Operation { public: virtual BigInt public_op(const BigInt&) const = 0; virtual BigInt private_op(const BigInt&) const = 0; virtual IF_Operation* clone() const = 0; virtual ~IF_Operation() {} }; /************************************************* * DSA Operation * *************************************************/ class BOTAN_DLL DSA_Operation { public: virtual bool verify(const byte[], u32bit, const byte[], u32bit) const = 0; virtual SecureVector sign(const byte[], u32bit, const BigInt&) const = 0; virtual DSA_Operation* clone() const = 0; virtual ~DSA_Operation() {} }; /************************************************* * NR Operation * *************************************************/ class BOTAN_DLL NR_Operation { public: virtual SecureVector verify(const byte[], u32bit) const = 0; virtual SecureVector sign(const byte[], u32bit, const BigInt&) const = 0; virtual NR_Operation* clone() const = 0; virtual ~NR_Operation() {} }; /************************************************* * ElGamal Operation * *************************************************/ class BOTAN_DLL ELG_Operation { public: virtual SecureVector encrypt(const byte[], u32bit, const BigInt&) const = 0; virtual BigInt decrypt(const BigInt&, const BigInt&) const = 0; virtual ELG_Operation* clone() const = 0; virtual ~ELG_Operation() {} }; /************************************************* * DH Operation * *************************************************/ class BOTAN_DLL DH_Operation { public: virtual BigInt agree(const BigInt&) const = 0; virtual DH_Operation* clone() const = 0; virtual ~DH_Operation() {} }; #if defined(BOTAN_HAS_ECDSA) /************************************************* * ECDSA Operation * *************************************************/ class BOTAN_DLL ECDSA_Operation { public: virtual bool verify(const byte sig[], u32bit sig_len, const byte msg[], u32bit msg_len) const = 0; virtual SecureVector sign(const byte message[], u32bit mess_len) const = 0; virtual ECDSA_Operation* clone() const = 0; virtual ~ECDSA_Operation() {} }; /************************************************* * ECKAEG Operation * *************************************************/ class BOTAN_DLL ECKAEG_Operation { public: virtual SecureVector agree(const PointGFp&) const = 0; virtual ECKAEG_Operation* clone() const = 0; virtual ~ECKAEG_Operation() {} }; #endif } #endif