Main Page | Modules | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

XENCCipher.hpp

Go to the documentation of this file.
00001 /*
00002  * Copyright 2003-2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 /*
00018  * XSEC
00019  *
00020  * XENCCipher := Interface definition for main encryption worker class
00021  *
00022  * $Id: XENCCipher.hpp 420033 2006-07-08 01:52:53Z blautenb $
00023  *
00024  */
00025 
00026 #ifndef XENCCIPHER_INCLUDE
00027 #define XENCCIPHER_INCLUDE
00028 
00029 // XSEC Includes
00030 
00031 #include <xsec/framework/XSECDefs.hpp>
00032 #include <xsec/xenc/XENCCipherData.hpp>
00033 #include <xsec/dsig/DSIGConstants.hpp>
00034 
00035 // Xerces
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 /* XENCCIPHER_INCLUDE */
00618 

Generated on Sun Jan 28 19:37:23 2007 for XML-Security-C by  doxygen 1.4.2