CipherSpi.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_BEE_CRYPTO_CIPHERSPI_H
00024 #define _CLASS_BEE_CRYPTO_CIPHERSPI_H
00025
00026 #include "beecrypt/api.h"
00027
00028 #ifdef __cplusplus
00029
00030 #include "beecrypt/c++/array.h"
00031 using beecrypt::array;
00032 #include "beecrypt/c++/crypto/BadPaddingException.h"
00033 using beecrypt::crypto::BadPaddingException;
00034 #include "beecrypt/c++/crypto/IllegalBlockSizeException.h"
00035 using beecrypt::crypto::IllegalBlockSizeException;
00036 #include "beecrypt/c++/crypto/NoSuchPaddingException.h"
00037 using beecrypt::crypto::NoSuchPaddingException;
00038 #include "beecrypt/c++/lang/IllegalStateException.h"
00039 using beecrypt::lang::IllegalStateException;
00040 #include "beecrypt/c++/lang/Object.h"
00041 using beecrypt::lang::Object;
00042 #include "beecrypt/c++/security/AlgorithmParameters.h"
00043 using beecrypt::security::AlgorithmParameters;
00044 #include "beecrypt/c++/security/InvalidAlgorithmParameterException.h"
00045 using beecrypt::security::InvalidAlgorithmParameterException;
00046 #include "beecrypt/c++/security/InvalidKeyException.h"
00047 using beecrypt::security::InvalidKeyException;
00048 #include "beecrypt/c++/security/Key.h"
00049 using beecrypt::security::Key;
00050 #include "beecrypt/c++/security/SecureRandom.h"
00051 using beecrypt::security::SecureRandom;
00052 #include "beecrypt/c++/security/ShortBufferException.h"
00053 using beecrypt::security::ShortBufferException;
00054
00055 namespace beecrypt {
00056 namespace crypto {
00059 class BEECRYPTCXXAPI CipherSpi : public Object
00060 {
00061 friend class Cipher;
00062
00063 protected:
00064 virtual bytearray* engineDoFinal(const byte* input, int inputOffset, int inputLength) throw (IllegalBlockSizeException, BadPaddingException) = 0;
00065 virtual int engineDoFinal(const byte* input, int inputOffset, int inputLength, bytearray& output, int outputOffset) throw (ShortBufferException, IllegalBlockSizeException, BadPaddingException) = 0;
00066
00067
00068 virtual int engineGetBlockSize() const throw () = 0;
00069 virtual bytearray* engineGetIV() = 0;
00070 virtual int engineGetKeySize(const Key& key) const throw (InvalidKeyException);
00071 virtual int engineGetOutputSize(int inputLength) throw () = 0;
00072 virtual AlgorithmParameters* engineGetParameters() throw () = 0;
00073
00074 virtual void engineInit(int opmode, const Key& key, SecureRandom* random) throw (InvalidKeyException) = 0;
00075 virtual void engineInit(int opmode, const Key& key, AlgorithmParameters* params, SecureRandom* random) throw (InvalidKeyException, InvalidAlgorithmParameterException) = 0;
00076 virtual void engineInit(int opmode, const Key& key, const AlgorithmParameterSpec& params, SecureRandom* random) throw (InvalidKeyException, InvalidAlgorithmParameterException) = 0;
00077
00078 virtual void engineSetMode(const String& mode) throw (NoSuchAlgorithmException) = 0;
00079 virtual void engineSetPadding(const String& padding) throw (NoSuchPaddingException) = 0;
00080
00081
00082
00083 virtual bytearray* engineUpdate(const byte* input, int inputOffset, int inputLength) = 0;
00084 virtual int engineUpdate(const byte* input, int inputOffset, int inputLength, bytearray& output, int outputOffset) throw (ShortBufferException) = 0;
00085
00086
00087
00088
00089 public:
00090 virtual ~CipherSpi() {}
00091 };
00092 }
00093 }
00094
00095 #endif
00096
00097 #endif