- 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 -- Binary buffer implementation.

## Synopsis

    enum                xmlSecAllocMode;
    struct              xmlSecBuffer;
    voidxmlSecBufferSetDefaultAllocMode     (xmlSecAllocMode defAllocMode,
                                                             xmlSecSize defInitialSize);
    xmlSecBufferPtr     xmlSecBufferCreate                  (xmlSecSize size);
    voidxmlSecBufferDestroy                 (xmlSecBufferPtr buf);
    intxmlSecBufferInitialize              (xmlSecBufferPtr buf,
                                                             xmlSecSize size);
    voidxmlSecBufferFinalize                (xmlSecBufferPtr buf);
    xmlSecByte*         xmlSecBufferGetData                 (xmlSecBufferPtr buf);
    intxmlSecBufferSetData                 (xmlSecBufferPtr buf,
                                                             const xmlSecByte *data,
                                                             xmlSecSize size);
    xmlSecSize          xmlSecBufferGetSize                 (xmlSecBufferPtr buf);
    intxmlSecBufferSetSize                 (xmlSecBufferPtr buf,
                                                             xmlSecSize size);
    xmlSecSize          xmlSecBufferGetMaxSize              (xmlSecBufferPtr buf);
    intxmlSecBufferSetMaxSize              (xmlSecBufferPtr buf,
                                                             xmlSecSize size);
    voidxmlSecBufferEmpty                   (xmlSecBufferPtr buf);
    intxmlSecBufferAppend                  (xmlSecBufferPtr buf,
                                                             const xmlSecByte *data,
                                                             xmlSecSize size);
    intxmlSecBufferPrepend                 (xmlSecBufferPtr buf,
                                                             const xmlSecByte *data,
                                                             xmlSecSize size);
    intxmlSecBufferRemoveHead              (xmlSecBufferPtr buf,
                                                             xmlSecSize size);
    intxmlSecBufferRemoveTail              (xmlSecBufferPtr buf,
                                                             xmlSecSize size);
    intxmlSecBufferReadFile                (xmlSecBufferPtr buf,
                                                             const char *filename);
    intxmlSecBufferBase64NodeContentRead   (xmlSecBufferPtr buf,
                                                             xmlNodePtr node);
    intxmlSecBufferBase64NodeContentWrite  (xmlSecBufferPtr buf,
                                                             xmlNodePtr node,
                                                             int columns);
    xmlOutputBufferPtrxmlSecBufferCreateOutputBuffer      (xmlSecBufferPtr buf);

## Description

Binary buffer implementation.

## 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.