tango.util.encode.Base64

License:

BSD style: see license.txt

Author:

Jeff Davey

Standards:

rfc3548, rfc2045

Since:

0.99.7

This module is used to decode and encode base64 char[] arrays.

Example:

1
2
3
4
5
6
7
char[] blah = "Hello there, my name is Jeff.";
scope encodebuf = new char[allocateEncodeSize(cast(ubyte[])blah)];
char[] encoded = encode(cast(ubyte[])blah, encodebuf);

scope decodebuf = new ubyte[encoded.length];
if (cast(char[])decode(encoded, decodebuf) == "Hello there, my name is Jeff.")
    Stdout("yay").newline;
size_t allocateEncodeSize(const(ubyte[]) data)
calculates and returns the size needed to encode the length of the array passed.

Parameters:

dataAn array that will be encoded
size_t allocateEncodeSize(size_t length)
calculates and returns the size needed to encode the length passed.

Parameters:

lengthNumber of bytes to be encoded
size_t encodeChunk(const(ubyte[]) data, char[] buff, ref size_t bytesEncoded)
encodes data into buff and returns the number of bytes encoded. this will not terminate and pad any "leftover" bytes, and will instead only encode up to the highest number of bytes divisible by three.
returns the number of bytes left to encode

Parameters:

datawhat is to be encoded
buffbuffer large enough to hold encoded data
bytesEncodedref that returns how much of the buffer was filled
char[] encode(const(ubyte[]) data, char[] buff)
encodes data and returns as an ASCII base64 string.

Parameters:

datawhat is to be encoded
buffbuffer large enough to hold encoded data

Example:

1
2
3
char[512] encodebuf;
char[] myEncodedString = encode(cast(ubyte[])"Hello, how are you today?", encodebuf);
Stdout(myEncodedString).newline; // SGVsbG8sIGhvdyBhcmUgeW91IHRvZGF5Pw==
char[] encode(const(ubyte[]) data)
encodes data and returns as an ASCII base64 string.

Parameters:

datawhat is to be encoded

Example:

1
2
char[] myEncodedString = encode(cast(ubyte[])"Hello, how are you today?");
Stdout(myEncodedString).newline; // SGVsbG8sIGhvdyBhcmUgeW91IHRvZGF5Pw==
ubyte[] decode(const(char[]) data)
decodes an ASCCI base64 string and returns it as ubyte[] data. Pre-allocates the size of the array.
This decoder will ignore non-base64 characters. So: SGVsbG8sIGhvd yBhcmUgeW91IH RvZGF5Pw==

Is valid.

Parameters:

datawhat is to be decoded

Example:

1
2
char[] myDecodedString = cast(char[])decode("SGVsbG8sIGhvdyBhcmUgeW91IHRvZGF5Pw==");
Stdout(myDecodedString).newline; // Hello, how are you today?
ubyte[] decode(const(char[]) data, ubyte[] buff)
decodes an ASCCI base64 string and returns it as ubyte[] data.
This decoder will ignore non-base64 characters. So: SGVsbG8sIGhvd yBhcmUgeW91IH RvZGF5Pw==

Is valid.

Parameters:

datawhat is to be decoded
buffa big enough array to hold the decoded data

Example:

1
2
3
ubyte[512] decodebuf;
char[] myDecodedString = cast(char[])decode("SGVsbG8sIGhvdyBhcmUgeW91IHRvZGF5Pw==", decodebuf);
Stdout(myDecodedString).newline; // Hello, how are you today?