00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_SECRETKEYFACTORYSPI_H
00024 #define _CLASS_SECRETKEYFACTORYSPI_H
00025
00026 #include "beecrypt/api.h"
00027
00028 #ifdef __cplusplus
00029
00030 #include "beecrypt/c++/crypto/SecretKey.h"
00031 using beecrypt::crypto::SecretKey;
00032 #include "beecrypt/c++/lang/Object.h"
00033 using beecrypt::lang::Object;
00034 #include "beecrypt/c++/security/InvalidKeyException.h"
00035 using beecrypt::security::InvalidKeyException;
00036 #include "beecrypt/c++/security/spec/KeySpec.h"
00037 using beecrypt::security::spec::KeySpec;
00038 #include "beecrypt/c++/security/spec/InvalidKeySpecException.h"
00039 using beecrypt::security::spec::InvalidKeySpecException;
00040
00041 #include <typeinfo>
00042 using std::type_info;
00043
00044 namespace beecrypt {
00045 namespace crypto {
00048 class BEECRYPTCXXAPI SecretKeyFactorySpi : public beecrypt::lang::Object
00049 {
00050 friend class SecretKeyFactory;
00051
00052 protected:
00053 virtual SecretKey* engineGenerateSecret(const KeySpec&) throw (InvalidKeySpecException) = 0;
00054 virtual KeySpec* engineGetKeySpec(const SecretKey&, const type_info&) throw (InvalidKeySpecException) = 0;
00055 virtual SecretKey* engineTranslateKey(const SecretKey&) throw (InvalidKeyException) = 0;
00056
00057 public:
00058 virtual ~SecretKeyFactorySpi() {};
00059 };
00060 }
00061 }
00062
00063 #endif
00064
00065 #endif