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 #ifndef XENCCIPHER_INCLUDE
00027 #define XENCCIPHER_INCLUDE
00028
00029
00030
00031 #include <xsec/framework/XSECDefs.hpp>
00032 #include <xsec/xenc/XENCCipherData.hpp>
00033 #include <xsec/dsig/DSIGConstants.hpp>
00034
00035
00036
00037 XSEC_DECLARE_XERCES_CLASS(DOMElement);
00038 XSEC_DECLARE_XERCES_CLASS(DOMDocument);
00039 XSEC_DECLARE_XERCES_CLASS(BinInputStream);
00040
00041 class XSECCryptoKey;
00042 class XENCEncryptedData;
00043 class XENCEncryptedKey;
00044 class XSECKeyInfoResolver;
00045 class XSECBinTXFMInputStream;
00046 class TXFMChain;
00047
00075 class XENCCipher {
00076
00077 public:
00078
00081
00082 virtual ~XENCCipher() {};
00083
00085
00088
00108 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * decryptElement(
00109 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * element
00110 ) = 0;
00111
00127 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * decryptElementDetached(
00128 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * element
00129 ) = 0;
00130
00150 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * decryptElement(void) = 0;
00151
00170 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * decryptElementDetached(void) = 0;
00171
00189 virtual XSECBinTXFMInputStream * decryptToBinInputStream(
00190 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * element
00191 ) = 0;
00192
00204 virtual int decryptKey(
00205 XENCEncryptedKey * encryptedKey,
00206 XMLByte * rawKey,
00207 int maxKeySize
00208 ) = 0;
00209
00222 virtual int decryptKey(
00223 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * keyNode,
00224 XMLByte * rawKey,
00225 int maxKeySize
00226 ) = 0;
00227
00229
00232
00252 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * encryptElement(
00253 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * element,
00254 encryptionMethod em,
00255 const XMLCh * algorithmURI = NULL
00256 ) = 0;
00257
00277 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * encryptElementDetached(
00278 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * element,
00279 encryptionMethod em,
00280 const XMLCh * algorithmURI = NULL
00281 ) = 0;
00282
00303 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * encryptElementContent(
00304 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * element,
00305 encryptionMethod em,
00306 const XMLCh * algorithmURI = NULL
00307 ) = 0;
00308
00330 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * encryptElementContentDetached(
00331 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * element,
00332 encryptionMethod em,
00333 const XMLCh * algorithmURI = NULL
00334 ) = 0;
00335
00351 virtual XENCEncryptedKey * encryptKey(
00352 const unsigned char * keyBuffer,
00353 unsigned int keyLen,
00354 encryptionMethod em,
00355 const XMLCh * algorithmURI = NULL
00356 ) = 0;
00357
00373 virtual XENCEncryptedData * encryptBinInputStream(
00374 XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream * plainText,
00375 encryptionMethod em,
00376 const XMLCh * algorithmURI = NULL
00377 ) = 0;
00378
00397 virtual XENCEncryptedData * encryptTXFMChain(
00398 TXFMChain * plainText,
00399 encryptionMethod em,
00400 const XMLCh * algorithmURI = NULL
00401 ) = 0;
00402
00404
00406
00416 virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * getDocument(void) = 0;
00417
00427 virtual const XMLCh * getXENCNSPrefix(void) const = 0;
00428
00438 virtual XENCEncryptedData * getEncryptedData(void) = 0;
00439
00446 virtual bool getPrettyPrint(void) = 0;
00447
00461 virtual bool getExclusiveC14nSerialisation(void) = 0;
00462
00464
00467
00478 virtual void setKey(XSECCryptoKey * key) = 0;
00479
00493 virtual void setKEK(XSECCryptoKey * key) = 0;
00494
00509 virtual void setKeyInfoResolver(const XSECKeyInfoResolver * resolver) = 0;
00510
00518 virtual void setXENCNSPrefix(const XMLCh * prefix) = 0;
00519
00531 virtual void setPrettyPrint(bool flag) = 0;
00532
00546 virtual void setExclusiveC14nSerialisation(bool flag) = 0;
00547
00549
00552
00573 virtual XENCEncryptedData * createEncryptedData(XENCCipherData::XENCCipherDataType type,
00574 const XMLCh * algorithm,
00575 const XMLCh * value) = 0;
00576
00588 virtual XENCEncryptedKey * loadEncryptedKey(
00589 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * keyNode
00590 ) = 0;
00591
00606 virtual XENCEncryptedData * loadEncryptedData(
00607 XERCES_CPP_NAMESPACE_QUALIFIER DOMElement * dataNode
00608 ) = 0;
00609
00610
00612
00613 };
00614
00615
00616
00617 #endif
00618