## 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_ex ()
int | xmlSecBase64CtxFinal_ex ()
xmlChar * | xmlSecBase64Encode ()
int | xmlSecBase64Decode_ex ()
int | xmlSecBase64DecodeInPlace ()

## 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_ex ()

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

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 |
outWritten | the pointer to store the number of bytes written into the output |

#### Returns

0 on success and a negative value otherwise.

### xmlSecBase64CtxFinal_ex ()

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

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 |
outWritten | the pointer to store the number of bytes written into the output |

#### Returns

0 on success and a negative value otherwise.

### xmlSecBase64Encode ()

    xmlChar *
    xmlSecBase64Encode (const xmlSecByte *in,
                        xmlSecSize inSize,
                        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

in | the input buffer. |
inSize | 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_ex ()

    int
    xmlSecBase64Decode_ex (const xmlChar *str,
                           xmlSecByte *out,
                           xmlSecSize outSize,
                           xmlSecSize *outWritten);

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

#### Parameters

str | the input buffer with base64 encoded string |
out | the output buffer |
outSize | the output buffer size |
outWritten | the pointer to store the number of bytes written into the output. |

#### Returns

0 on success and a negative value otherwise.

### xmlSecBase64DecodeInPlace ()

    int
    xmlSecBase64DecodeInPlace (xmlChar *str,
                               xmlSecSize *outWritten);

Decodes input base64 encoded string from `str` "in-place" (i.e. puts results into `str` buffer).

#### Parameters

str | the input/output buffer |
outWritten | the pointer to store the number of bytes written into the output. |

#### Returns

0 on success and a negative value otherwise.

## Types and Values

### XMLSEC_BASE64_LINESIZE

    #define XMLSEC_BASE64_LINESIZE                          64

The default maximum base64 encoded line size.