- Home
- Download
- News
- Documentation

- FAQ
- Tutorial
- API reference
- Examples

- XML Digital Signature

- Online Verifier

- XML Encryption
- XML Canonicalization
- Reporting Bugs
- Mailing list
- Related
- Authors

# buffer

## Name

buffer --

## Synopsis

    enum        xmlSecAllocMode;
    struct      xmlSecBuffer;
    void        xmlSecBufferSetDefaultAllocMode (xmlSecAllocMode defAllocMode,
                                                 xmlSecSize defInitialSize);
    xmlSecBufferPtr xmlSecBufferCreate          (xmlSecSize size);
    void        xmlSecBufferDestroy             (xmlSecBufferPtr buf);
    int         xmlSecBufferInitialize          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);
    void        xmlSecBufferFinalize            (xmlSecBufferPtr buf);
    xmlSecByte* xmlSecBufferGetData             (xmlSecBufferPtr buf);
    int         xmlSecBufferSetData             (xmlSecBufferPtr buf,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);
    xmlSecSize  xmlSecBufferGetSize             (xmlSecBufferPtr buf);
    int         xmlSecBufferSetSize             (xmlSecBufferPtr buf,
                                                 xmlSecSize size);
    xmlSecSize  xmlSecBufferGetMaxSize          (xmlSecBufferPtr buf);
    int         xmlSecBufferSetMaxSize          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);
    void        xmlSecBufferEmpty               (xmlSecBufferPtr buf);
    int         xmlSecBufferAppend              (xmlSecBufferPtr buf,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);
    int         xmlSecBufferPrepend             (xmlSecBufferPtr buf,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);
    int         xmlSecBufferRemoveHead          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);
    int         xmlSecBufferRemoveTail          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);
    int         xmlSecBufferReadFile            (xmlSecBufferPtr buf,
                                                 const char *filename);
    int         xmlSecBufferBase64NodeContentRead
                                                (xmlSecBufferPtr buf,
                                                 xmlNodePtr node);
    int         xmlSecBufferBase64NodeContentWrite
                                                (xmlSecBufferPtr buf,
                                                 xmlNodePtr node,
                                                 int columns);
    xmlOutputBufferPtr xmlSecBufferCreateOutputBuffer
                                                (xmlSecBufferPtr buf);

## Description

## Details

### enum xmlSecAllocMode

    typedef enum {
        xmlSecAllocModeExact = 0,
        xmlSecAllocModeDouble
    } xmlSecAllocMode;

The memory allocation mode (used by xmlSecBuffer and xmlSecList).

xmlSecAllocModeExact | the memory allocation mode that minimizes total allocated memory size.
xmlSecAllocModeDouble | the memory allocation mode that tries to minimize the number of malloc calls.

### struct xmlSecBuffer

    struct xmlSecBuffer {

        xmlSecByte* 	data;
        xmlSecSize 		size;
        xmlSecSize		maxSize;
        xmlSecAllocMode 	allocMode;
    };

Binary data buffer.

xmlSecByte *`data` | the pointer to buffer data.
xmlSecSize `size` | the current data size.
xmlSecSize `maxSize` | the max data size (allocated buffer size).
xmlSecAllocMode `allocMode` | the buffer memory allocation mode.

### xmlSecBufferSetDefaultAllocMode ()

    void        xmlSecBufferSetDefaultAllocMode (xmlSecAllocMode defAllocMode,
                                                 xmlSecSize defInitialSize);

Sets new global default allocation mode and minimal intial size.

defAllocMode : | the new default buffer allocation mode.
defInitialSize : | the new default buffer minimal intial size.

### xmlSecBufferCreate ()

    xmlSecBufferPtr xmlSecBufferCreate          (xmlSecSize size);

Allocates and initalizes new memory buffer with given size. Caller is responsible for calling xmlSecBufferDestroy function to free the buffer.

size : | the intial size.
Returns : | pointer to newly allocated buffer or NULL if an error occurs.

### xmlSecBufferDestroy ()

    void        xmlSecBufferDestroy             (xmlSecBufferPtr buf);

Desrtoys buffer object created with xmlSecBufferCreate function.

buf : | the pointer to buffer object.

### xmlSecBufferInitialize ()

    int         xmlSecBufferInitialize          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);

Initializes buffer object buf. Caller is responsible for calling xmlSecBufferFinalize function to free allocated resources.

buf : | the pointer to buffer object.
size : | the initial buffer size.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferFinalize ()

    void        xmlSecBufferFinalize            (xmlSecBufferPtr buf);

Frees allocated resource for a buffer intialized with xmlSecBufferInitialize function.

buf : | the pointer to buffer object.

### xmlSecBufferGetData ()

    xmlSecByte* xmlSecBufferGetData             (xmlSecBufferPtr buf);

Gets pointer to buffer's data.

buf : | the pointer to buffer object.
Returns : | pointer to buffer's data.

### xmlSecBufferSetData ()

    int         xmlSecBufferSetData             (xmlSecBufferPtr buf,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);

Sets the value of the buffer to data.

buf : | the pointer to buffer object.
data : | the data.
size : | the data size.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferGetSize ()

    xmlSecSize  xmlSecBufferGetSize             (xmlSecBufferPtr buf);

Gets the current buffer data size.

buf : | the pointer to buffer object.
Returns : | the current data size.

### xmlSecBufferSetSize ()

    int         xmlSecBufferSetSize             (xmlSecBufferPtr buf,
                                                 xmlSecSize size);

Sets new buffer data size. If necessary, buffer grows to have at least size bytes.

buf : | the pointer to buffer object.
size : | the new data size.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferGetMaxSize ()

    xmlSecSize  xmlSecBufferGetMaxSize          (xmlSecBufferPtr buf);

Gets the maximum (allocated) buffer size.

buf : | the pointer to buffer object.
Returns : | the maximum (allocated) buffer size.

### xmlSecBufferSetMaxSize ()

    int         xmlSecBufferSetMaxSize          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);

Sets new buffer maximum size. If necessary, buffer grows to have at least size bytes.

buf : | the pointer to buffer object.
size : | the new maximum size.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferEmpty ()

    void        xmlSecBufferEmpty               (xmlSecBufferPtr buf);

Empties the buffer.

buf : | the pointer to buffer object.

### xmlSecBufferAppend ()

    int         xmlSecBufferAppend              (xmlSecBufferPtr buf,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);

Appends the data after the current data stored in the buffer.

buf : | the pointer to buffer object.
data : | the data.
size : | the data size.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferPrepend ()

    int         xmlSecBufferPrepend             (xmlSecBufferPtr buf,
                                                 const xmlSecByte *data,
                                                 xmlSecSize size);

Prepends the data before the current data stored in the buffer.

buf : | the pointer to buffer object.
data : | the data.
size : | the data size.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferRemoveHead ()

    int         xmlSecBufferRemoveHead          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);

Removes size bytes from the beginning of the current buffer.

buf : | the pointer to buffer object.
size : | the number of bytes to be removed.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferRemoveTail ()

    int         xmlSecBufferRemoveTail          (xmlSecBufferPtr buf,
                                                 xmlSecSize size);

Removes size bytes from the end of current buffer.

buf : | the pointer to buffer object.
size : | the number of bytes to be removed.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferReadFile ()

    int         xmlSecBufferReadFile            (xmlSecBufferPtr buf,
                                                 const char *filename);

Reads the content of the file filename in the buffer.

buf : | the pointer to buffer object.
filename : | the filename.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferBase64NodeContentRead ()

    int         xmlSecBufferBase64NodeContentRead
                                                (xmlSecBufferPtr buf,
                                                 xmlNodePtr node);

Reads the content of the node, base64 decodes it and stores the result in the buffer.

buf : | the pointer to buffer object.
node : | the pointer to node.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferBase64NodeContentWrite ()

    int         xmlSecBufferBase64NodeContentWrite
                                                (xmlSecBufferPtr buf,
                                                 xmlNodePtr node,
                                                 int columns);

Sets the content of the node to the base64 encoded buffer data.

buf : | the pointer to buffer object.
node : | the pointer to a node.
columns : | the max line size fro base64 encoded data.
Returns : | 0 on success or a negative value if an error occurs.

### xmlSecBufferCreateOutputBuffer ()

    xmlOutputBufferPtr xmlSecBufferCreateOutputBuffer
                                                (xmlSecBufferPtr buf);

Creates new LibXML output buffer to store data in the buf. Caller is responsible for destroying buf when processing is done.

buf : | the pointer to buffer.
Returns : | pointer to newly allocated output buffer or NULL if an error occurs.