## base64 base64 — Base64 encoding/decoding functions and base64 transform implementation. |

## Stability Level

Stable, unless otherwise indicated

## Functions

int | xmlSecBase64GetDefaultLineSize ()
void | xmlSecBase64SetDefaultLineSize ()
xmlSecBase64CtxPtr | xmlSecBase64CtxCreate ()
void | xmlSecBase64CtxDestroy ()
int | xmlSecBase64CtxInitialize ()
void | xmlSecBase64CtxFinalize ()
int | xmlSecBase64CtxUpdate ()
int | xmlSecBase64CtxFinal ()
xmlChar * | xmlSecBase64Encode ()
int | xmlSecBase64Decode ()

## Types and Values

#define | XMLSEC_BASE64_LINESIZE

## Description

## Functions

### xmlSecBase64GetDefaultLineSize ()

    int
    xmlSecBase64GetDefaultLineSize (void);

Gets the current default line size.

#### Returns

the current default line size.

### xmlSecBase64SetDefaultLineSize ()

    void
    xmlSecBase64SetDefaultLineSize (int columns);

Sets the current default line size.

#### Parameters

columns | number of columns |

### xmlSecBase64CtxCreate ()

    xmlSecBase64CtxPtr
    xmlSecBase64CtxCreate (int encode,
                           int columns);

Allocates and initializes new base64 context.

#### Parameters

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.

#### Parameters

ctx | the pointer to xmlSecBase64Ctx structure. |

### xmlSecBase64CtxInitialize ()

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

Initializes new base64 context.

#### Parameters

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

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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.

#### Parameters

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

## Types and Values

### XMLSEC_BASE64_LINESIZE

    #define XMLSEC_BASE64_LINESIZE                          64

The default maximum base64 encoded line size.