diff options
Diffstat (limited to 'include/pk_keys.h')
-rw-r--r-- | include/pk_keys.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/include/pk_keys.h b/include/pk_keys.h new file mode 100644 index 000000000..96fb2051e --- /dev/null +++ b/include/pk_keys.h @@ -0,0 +1,100 @@ +/************************************************* +* PK Key Types Header File * +* (C) 1999-2006 The Botan Project * +*************************************************/ + +#ifndef BOTAN_PK_KEYS_H__ +#define BOTAN_PK_KEYS_H__ + +#include <botan/base.h> +#include <botan/asn1_oid.h> + +namespace Botan { + +/************************************************* +* Generic PK Key * +*************************************************/ +class PK_Key + { + public: + virtual std::string algo_name() const = 0; + + virtual OID get_oid() const; + virtual u32bit max_input_bits() const { return 0; } + virtual bool check_key(bool) const { return true; } + virtual u32bit message_parts() const { return 1; } + virtual u32bit message_part_size() const { return 0; } + virtual ~PK_Key() {} + protected: + void check_loaded_public() const; + void check_loaded_private() const; + void check_generated_private() const; + }; + +/************************************************* +* PK Encrypting Key * +*************************************************/ +class PK_Encrypting_Key : public virtual PK_Key + { + public: + virtual SecureVector<byte> encrypt(const byte[], u32bit) const = 0; + virtual ~PK_Encrypting_Key() {} + }; + +/************************************************* +* PK Decrypting Key * +*************************************************/ +class PK_Decrypting_Key : public virtual PK_Key + { + public: + virtual SecureVector<byte> decrypt(const byte[], u32bit) const = 0; + virtual ~PK_Decrypting_Key() {} + }; + +/************************************************* +* PK Signing Key * +*************************************************/ +class PK_Signing_Key : public virtual PK_Key + { + public: + virtual SecureVector<byte> sign(const byte[], u32bit) const = 0; + virtual ~PK_Signing_Key() {} + }; + +/************************************************* +* PK Verifying Key, Message Recovery Version * +*************************************************/ +class PK_Verifying_with_MR_Key : public virtual PK_Key + { + public: + virtual SecureVector<byte> verify(const byte[], u32bit) const = 0; + virtual ~PK_Verifying_with_MR_Key() {} + }; + +/************************************************* +* PK Verifying Key, No Message Recovery Version * +*************************************************/ +class PK_Verifying_wo_MR_Key : public virtual PK_Key + { + public: + virtual bool verify(const byte[], u32bit, + const byte[], u32bit) const = 0; + virtual ~PK_Verifying_wo_MR_Key() {} + }; + +/************************************************* +* PK Secret Value Derivation Key * +*************************************************/ +class PK_Key_Agreement_Key : public virtual PK_Key + { + public: + virtual SecureVector<byte> derive_key(const byte[], u32bit) const = 0; + virtual MemoryVector<byte> public_value() const = 0; + virtual ~PK_Key_Agreement_Key() {} + }; + +typedef PK_Key_Agreement_Key PK_KA_Key; + +} + +#endif |