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

XSECCryptoBase64 Class Reference
[Cryptographic Abstraction Layer]

#include <XSECCryptoBase64.hpp>

Inheritance diagram for XSECCryptoBase64:

Inheritance graph
[legend]
List of all members.

Detailed Description

Base64 encode/decode handler interface class.

The XSEC library will use implementations of this interface for translating bytes to/from base64 encoding.

There are many places where XML DSIG uses Base64 encoding for embedding data in the <Signature> structure. In some cases this object is used. In other cases, the library passes base64 code directly to the cryptographic handler.

Note:
The library may re-use Base64 objects. However it will always call the ??Init function prior to re-use. In addtion, the object does not need to be able to handle concurrent encode/decode operations.


Public Member Functions

 XSECCryptoBase64 ()
virtual ~XSECCryptoBase64 ()
Decoding Functions
virtual void decodeInit (void)=0
 Initialise the base64 object.
virtual unsigned int decode (const unsigned char *inData, unsigned int inLength, unsigned char *outData, unsigned int outLength)=0
 Decode some passed in data.
virtual unsigned int decodeFinish (unsigned char *outData, unsigned int outLength)=0
 Finish off a decode.
Encoding Functions
virtual void encodeInit (void)=0
 Initialise the base64 object for encoding.
virtual unsigned int encode (const unsigned char *inData, unsigned int inLength, unsigned char *outData, unsigned int outLength)=0
 Encode some passed in data.
virtual unsigned int encodeFinish (unsigned char *outData, unsigned int outLength)=0
 Finish off an encode.

Static Public Member Functions

Utility functions
static char * cleanBuffer (const char *buffer, unsigned int bufLen, unsigned int &retBufLen)
 Clean a buffer of base64 text.


Constructor & Destructor Documentation

XSECCryptoBase64::XSECCryptoBase64  )  [inline]
 

virtual XSECCryptoBase64::~XSECCryptoBase64  )  [inline, virtual]
 


Member Function Documentation

static char* XSECCryptoBase64::cleanBuffer const char *  buffer,
unsigned int  bufLen,
unsigned int &  retBufLen
[static]
 

Clean a buffer of base64 text.

Creates a new copy of the passed in buffer with new lines in accord with the MIME standard.

Parameters:
buffer The buffer of base64 text to clean
bufLen The number of characters to clean in the buffer (0 for strlen)
retBufLen The number of characters placed in the cleaned buffer
Returns:
A clean version of the buffer
Note:
This is NOT re-implemented in any of the crypto interfaces. It is a Base64 utility function only.

virtual unsigned int XSECCryptoBase64::decode const unsigned char *  inData,
unsigned int  inLength,
unsigned char *  outData,
unsigned int  outLength
[pure virtual]
 

Decode some passed in data.

The XSEC library will pass a block of data into the decoder and request that as much as possible be decoded into the outData buffer.

Due to the nature of base64, there may be data that cannot be fully decoded (not enough encoding through yet). The implementation is expected to keep this in memory until another call to decode() or a call to decodeFinish().

Parameters:
inData Pointer to the buffer holding encoded data.
inLength Length of the encoded data in the buffer
outData Buffer to place decoded data into
outLength Maximum amount of data that can be placed in the buffer.
Returns:
The number of bytes placed in the outData buffer.

Implemented in OpenSSLCryptoBase64, and XSCryptCryptoBase64.

virtual unsigned int XSECCryptoBase64::decodeFinish unsigned char *  outData,
unsigned int  outLength
[pure virtual]
 

Finish off a decode.

The library will call this when there is no more base64 data for the current decode.

Parameters:
outData Buffer to place any remaining decoded data
outLength Max amount of data to be placed in the buffer.
Returns:
Amount of data placed in the outData buffer

Implemented in OpenSSLCryptoBase64, and XSCryptCryptoBase64.

virtual void XSECCryptoBase64::decodeInit void   )  [pure virtual]
 

Initialise the base64 object.

The XSEC library will always call this function prior to decoding any data. This function will also be called when one decode (or encode) has been completed and the library wishes to re-use the object for another decode operation.

Implemented in OpenSSLCryptoBase64, and XSCryptCryptoBase64.

virtual unsigned int XSECCryptoBase64::encode const unsigned char *  inData,
unsigned int  inLength,
unsigned char *  outData,
unsigned int  outLength
[pure virtual]
 

Encode some passed in data.

The XSEC library will pass a block of data into the Encoder and request that as much as possible be encoded into the outData buffer.

Due to the nature of the implementation, there may be data that cannot be fully encoded (not enough data through yet). The implementation is expected to keep this in memory until another call to encode() or a call to encodeFinish().

Parameters:
inData Pointer to the buffer holding data to be encoded.
inLength Length of the data in the buffer
outData Buffer to place encoded data into
outLength Maximum amount of data that can be placed in the buffer.
Returns:
The number of bytes placed in the outData buffer.

Implemented in OpenSSLCryptoBase64, and XSCryptCryptoBase64.

virtual unsigned int XSECCryptoBase64::encodeFinish unsigned char *  outData,
unsigned int  outLength
[pure virtual]
 

Finish off an encode.

The library will call this when there is no more data for the current encode operation.

Parameters:
outData Buffer to place any remaining encoded data
outLength Max amount of data to be placed in the buffer.
Returns:
Amount of data placed in the outData buffer

Implemented in OpenSSLCryptoBase64, and XSCryptCryptoBase64.

virtual void XSECCryptoBase64::encodeInit void   )  [pure virtual]
 

Initialise the base64 object for encoding.

The XSEC library will always call this function prior to encoding any data. This function will also be called when one encode (or decode) has been completed and the library wishes to re-use the object for another encode operation.

Implemented in OpenSSLCryptoBase64, and XSCryptCryptoBase64.


The documentation for this class was generated from the following file:
Generated on Sun Jul 3 17:45:19 2005 for XML-Security-C by  doxygen 1.4.2