00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_ALGORITHMPARAMETERSSPI_H
00024 #define _CLASS_ALGORITHMPARAMETERSSPI_H
00025
00026 #include "beecrypt/api.h"
00027
00028 #ifdef __cplusplus
00029
00030 #include "beecrypt/c++/lang/Object.h"
00031 using beecrypt::lang::Object;
00032 #include "beecrypt/c++/security/spec/AlgorithmParameterSpec.h"
00033 using beecrypt::security::spec::AlgorithmParameterSpec;
00034 #include "beecrypt/c++/security/spec/InvalidParameterSpecException.h"
00035 using beecrypt::security::spec::InvalidParameterSpecException;
00036
00037 #include <typeinfo>
00038 using std::type_info;
00039
00040 namespace beecrypt {
00041 namespace security {
00044 class BEECRYPTCXXAPI AlgorithmParametersSpi : public beecrypt::lang::Object
00045 {
00046 friend class BEECRYPTCXXAPI AlgorithmParameters;
00047
00048 protected:
00049 virtual AlgorithmParameterSpec* engineGetParameterSpec(const type_info& info) = 0;
00050
00051 virtual void engineInit(const AlgorithmParameterSpec& spec) throw (InvalidParameterSpecException) = 0;
00052 virtual void engineInit(const byte* data, size_t size) = 0;
00053 virtual void engineInit(const byte* data, size_t size, const String& format) = 0;
00054
00055 public:
00056 virtual ~AlgorithmParametersSpi() {};
00057 };
00058 }
00059 }
00060
00061 #endif
00062
00063 #endif