00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_KEYFACTORYSPI_H
00024 #define _CLASS_KEYFACTORYSPI_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/PrivateKey.h"
00033 using beecrypt::security::PrivateKey;
00034 #include "beecrypt/c++/security/PublicKey.h"
00035 using beecrypt::security::PublicKey;
00036 #include "beecrypt/c++/security/InvalidKeyException.h"
00037 #include "beecrypt/c++/security/spec/KeySpec.h"
00038 using beecrypt::security::spec::KeySpec;
00039 #include "beecrypt/c++/security/spec/InvalidKeySpecException.h"
00040 using beecrypt::security::spec::InvalidKeySpecException;
00041
00042 #include <typeinfo>
00043 using std::type_info;
00044
00045 namespace beecrypt {
00046 namespace security {
00049 class BEECRYPTCXXAPI KeyFactorySpi : public beecrypt::lang::Object
00050 {
00051 friend class KeyFactory;
00052
00053 protected:
00054 virtual PrivateKey* engineGeneratePrivate(const KeySpec& spec) throw (InvalidKeySpecException) = 0;
00055 virtual PublicKey* engineGeneratePublic(const KeySpec& spec) throw (InvalidKeySpecException) = 0;
00056
00057 virtual KeySpec* engineGetKeySpec(const Key& key, const type_info& info) throw (InvalidKeySpecException) = 0;
00058
00059 virtual Key* engineTranslateKey(const Key& key) throw (InvalidKeyException) = 0;
00060
00061 public:
00062 virtual ~KeyFactorySpi() {};
00063 };
00064 }
00065 }
00066
00067 #endif
00068
00069 #endif