- Home
- Download
- News
- Documentation

- FAQ
- Tutorial
- API reference
- Examples

- XML Digital Signature

- Online Verifier

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

# base64

## Name

base64 --

## Synopsis

    #define     XMLSEC_BASE64_LINESIZE
    xmlSecBase64CtxPtr xmlSecBase64CtxCreate    (int encode,
                                                 int columns);
    void        xmlSecBase64CtxDestroy          (xmlSecBase64CtxPtr ctx);
    int         xmlSecBase64CtxInitialize       (xmlSecBase64CtxPtr ctx,
                                                 int encode,
                                                 int columns);
    void        xmlSecBase64CtxFinalize         (xmlSecBase64CtxPtr ctx);
    int         xmlSecBase64CtxUpdate           (xmlSecBase64CtxPtr ctx,
                                                 const xmlSecByte *in,
                                                 xmlSecSize inSize,
                                                 xmlSecByte *out,
                                                 xmlSecSize outSize);
    int         xmlSecBase64CtxFinal            (xmlSecBase64CtxPtr ctx,
                                                 xmlSecByte *out,
                                                 xmlSecSize outSize);
    xmlChar*    xmlSecBase64Encode              (const xmlSecByte *buf,
                                                 xmlSecSize len,
                                                 int columns);
    int         xmlSecBase64Decode              (const xmlChar *str,
                                                 xmlSecByte *buf,
                                                 xmlSecSize len);

## Description

## Details

### XMLSEC_BASE64_LINESIZE

    #define XMLSEC_BASE64_LINESIZE				64

The default maximum base64 encoded line size.

### xmlSecBase64CtxCreate ()

    xmlSecBase64CtxPtr xmlSecBase64CtxCreate    (int encode,
                                                 int columns);

Allocates and initializes new base64 context.

encode : | the encode/decode flag (1 - encode, 0 - decode)
columns : | the max line length.
Returns : | a pointer to newly created xmlSecBase64Ctx structure or NULL if an error occurs.

### xmlSecBase64CtxDestroy ()

    void        xmlSecBase64CtxDestroy          (xmlSecBase64CtxPtr ctx);

Destroys base64 context.

ctx : | the pointer to xmlSecBase64Ctx structure.

### xmlSecBase64CtxInitialize ()

    int         xmlSecBase64CtxInitialize       (xmlSecBase64CtxPtr ctx,
                                                 int encode,
                                                 int columns);

Initializes new base64 context.

ctx : | the pointer to xmlSecBase64Ctx structure,
encode : | the encode/decode flag (1 - encode, 0 - decode)
columns : | the max line length.
Returns : | 0 on success and a negative value otherwise.

### xmlSecBase64CtxFinalize ()

    void        xmlSecBase64CtxFinalize         (xmlSecBase64CtxPtr ctx);

Frees all the resources allocated by ctx.

ctx : | the pointer to xmlSecBase64Ctx structure,

### xmlSecBase64CtxUpdate ()

    int         xmlSecBase64CtxUpdate           (xmlSecBase64CtxPtr ctx,
                                                 const xmlSecByte *in,
                                                 xmlSecSize inSize,
                                                 xmlSecByte *out,
                                                 xmlSecSize outSize);

Encodes or decodes the next piece of data from input buffer.

ctx : | the pointer to xmlSecBase64Ctx structure
in : | the input buffer
inSize : | the input buffer size
out : | the output buffer
outSize : | the output buffer size
Returns : | the number of bytes written to output buffer or -1 if an error occurs.

### xmlSecBase64CtxFinal ()

    int         xmlSecBase64CtxFinal            (xmlSecBase64CtxPtr ctx,
                                                 xmlSecByte *out,
                                                 xmlSecSize outSize);

Encodes or decodes the last piece of data stored in the context and finalizes the result.

ctx : | the pointer to xmlSecBase64Ctx structure
out : | the output buffer
outSize : | the output buffer size
Returns : | the number of bytes written to output buffer or -1 if an error occurs.

### xmlSecBase64Encode ()

    xmlChar*    xmlSecBase64Encode              (const xmlSecByte *buf,
                                                 xmlSecSize len,
                                                 int columns);

Encodes the data from input buffer and allocates the string for the result. The caller is responsible for freeing returned buffer using `xmlFree()` function.

buf : | the input buffer.
len : | the input buffer size.
columns : | the output max line length (if 0 then no line breaks would be inserted)
Returns : | newly allocated string with base64 encoded data or NULL if an error occurs.

### xmlSecBase64Decode ()

    int         xmlSecBase64Decode              (const xmlChar *str,
                                                 xmlSecByte *buf,
                                                 xmlSecSize len);

Decodes input base64 encoded string and puts result into the output buffer.

str : | the input buffer with base64 encoded string
buf : | the output buffer
len : | the output buffer size
Returns : | the number of bytes written to the output buffer or a negative value if an error occurs