00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_ALGORITHMPARAMETERS_H
00024 #define _CLASS_ALGORITHMPARAMETERS_H
00025
00026 #ifdef __cplusplus
00027
00028 #include "beecrypt/c++/security/AlgorithmParametersSpi.h"
00029 using beecrypt::security::AlgorithmParametersSpi;
00030 #include "beecrypt/c++/security/Provider.h"
00031 using beecrypt::security::Provider;
00032 #include "beecrypt/c++/security/NoSuchAlgorithmException.h"
00033 using beecrypt::security::NoSuchAlgorithmException;
00034 #include "beecrypt/c++/security/NoSuchProviderException.h"
00035 using beecrypt::security::NoSuchProviderException;
00036
00037 #include <typeinfo>
00038 using std::type_info;
00039
00040 namespace beecrypt {
00041 namespace security {
00044 class BEECRYPTCXXAPI AlgorithmParameters : public beecrypt::lang::Object
00045 {
00046 public:
00047 static AlgorithmParameters* getInstance(const String& algorithm) throw (NoSuchAlgorithmException);
00048 static AlgorithmParameters* getInstance(const String& algorithm, const String& provider) throw (NoSuchAlgorithmException, NoSuchProviderException);
00049 static AlgorithmParameters* getInstance(const String& algorithm, const Provider& provider) throw (NoSuchAlgorithmException);
00050
00051 private:
00052 AlgorithmParametersSpi* _aspi;
00053 const Provider* _prov;
00054 String _algo;
00055
00056 protected:
00057 AlgorithmParameters(AlgorithmParametersSpi* spi, const Provider* provider, const String& algorithm);
00058
00059 public:
00060 virtual ~AlgorithmParameters();
00061
00062 AlgorithmParameterSpec* getParameterSpec(const type_info&) throw (InvalidParameterSpecException);
00063
00064 void init(const AlgorithmParameterSpec& spec) throw (InvalidParameterSpecException);
00065 void init(const byte* data, size_t size);
00066 void init(const byte* data, size_t size, const String& format);
00067
00068 const String& getAlgorithm() const throw ();
00069 const Provider& getProvider() const throw ();
00070 };
00071 }
00072 }
00073
00074 #endif
00075
00076 #endif