00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef XSECCRYPTOSYMMETRICKEY_INCLUDE
00032 #define XSECCRYPTOSYMMETRICKEY_INCLUDE
00033
00034 #include <xsec/framework/XSECDefs.hpp>
00035 #include <xsec/dsig/DSIGConstants.hpp>
00036 #include <xsec/enc/XSECCryptoKey.hpp>
00037
00052 class DSIG_EXPORT XSECCryptoSymmetricKey : public XSECCryptoKey {
00053
00054 public :
00055
00063 enum SymmetricKeyType {
00064
00065 KEY_NONE,
00066 KEY_3DES_192,
00067 KEY_AES_128,
00068 KEY_AES_192,
00069 KEY_AES_256
00071 };
00072
00073 enum SymmetricKeyMode {
00074
00075 MODE_NONE,
00076 MODE_ECB,
00077 MODE_CBC
00079 };
00080
00081
00084
00089 XSECCryptoSymmetricKey() {};
00090
00098 virtual ~XSECCryptoSymmetricKey() {};
00099
00101
00104
00109 virtual KeyType getKeyType() {return KEY_SYMMETRIC;}
00110
00115 virtual const XMLCh * getProviderName() = 0;
00116
00125 virtual XSECCryptoKey * clone() = 0;
00126
00128
00131
00140 virtual SymmetricKeyType getSymmetricKeyType(void) = 0;
00141
00153 virtual void setKey(const unsigned char * key, unsigned int keyLen) = 0;
00154
00172 virtual bool decryptInit(bool doPad = true,
00173 SymmetricKeyMode mode = MODE_CBC,
00174 const unsigned char * iv = NULL) = 0;
00175
00196 virtual unsigned int decrypt(const unsigned char * inBuf,
00197 unsigned char * plainBuf,
00198 unsigned int inLength,
00199 unsigned int maxOutLength) = 0;
00200
00216 virtual unsigned int decryptFinish(unsigned char * plainBuf,
00217 unsigned int maxOutLength) = 0;
00218
00235 virtual bool encryptInit(bool doPad = true,
00236 SymmetricKeyMode mode = MODE_CBC,
00237 const unsigned char * iv = NULL) = 0;
00238
00259 virtual unsigned int encrypt(const unsigned char * inBuf,
00260 unsigned char * cipherBuf,
00261 unsigned int inLength,
00262 unsigned int maxOutLength) = 0;
00263
00285 virtual unsigned int encryptFinish(unsigned char * plainBuf,
00286 unsigned int maxOutLength) = 0;
00287
00289
00290 };
00291
00292
00293 #endif