GSK Reference Manual | ||||
---|---|---|---|---|
#define GSK_BASE64_GET_ENCODED_LEN (length) #define GSK_BASE64_GET_MAX_DECODED_LEN (length) guint gsk_base64_decode (char *dst, guint dst_len, const char *src, gssize src_len); GByteArray* gsk_base64_decode_alloc (const char *src); void gsk_base64_encode (char *dst, const char *src, guint src_len); char* gsk_base64_encode_alloc (const char *src, gssize src_len);
A collection of methods to deal with base-64 encoding and decoding. Base-64 is defined in RFC 2045, Section 6.8.
The number of terminal = characters is specified in the FAQ such that a base-64 encoded string is always a multiple of 4 bytes long.
XXX: The encoding end of this class probably needs some fixing in light of RFC 2045.
#define GSK_BASE64_GET_ENCODED_LEN(length)
Get the number of bytes needed to encode in base-64 a binary block of data of a given length. This includes space for a terminal = sign, but does not include space for a NUL.
length : |
the length of the raw binary string. |
#define GSK_BASE64_GET_MAX_DECODED_LEN(length)
Get the maximum number of bytes a base-64 encoded string may require.
This assumes that there is no terminal = character, but there may be one,
causing the actual number of bytes once decoded to be smaller.
The actual number is returned by gsk_base64_decode()
.
length : |
the length of the base64 encoded string. |
guint gsk_base64_decode (char *dst, guint dst_len, const char *src, gssize src_len);
Decode a base64-encoded string into binary.
dst : |
output area for binary data.
Should be GSK_BASE64_GET_MAX_DECODED_LEN(src ) long at least.
|
dst_len : |
length of buffer allocated for dst .
|
src : |
base64 encoded data. |
src_len : |
length of the binary data, or -1 to assume that src is
NUL-terminated.
|
Returns : | number of bytes decoded. |
GByteArray* gsk_base64_decode_alloc (const char *src);
Decode a base64-encoded string into binary.
GSK_BASE64_GET_MAX_DECODED_LEN might not be the return value,
because it doesn't take a terminate '=' sign into account.
The return value should be exactly that if src
is not = terminated, or GSK_BASE64_GET_MAX_DECODED_LEN()
is only called on the length which precedes the = sign.
src : |
base64 encoded data, NUL terminated. |
Returns : | the byte-array with the binary data. |
void gsk_base64_encode (char *dst, const char *src, guint src_len);
base64 encodes binary data.
dst : |
output base64 encoded string. The result is NOT nul-terminated,
but is terminated with an = sign. dst should be exactly
GSK_BASE64_GET_ENCODED_LEN(src_len ) bytes long.
|
src : |
input binary data. |
src_len : |
length of src .
|
char* gsk_base64_encode_alloc (const char *src, gssize src_len);
base64 encodes binary data (that does not contain a NULL).
src : |
data to base64 encode. |
src_len : |
length of binary data to encode, or -1 to take src as a NUL-terminated string.
|
Returns : | an newly allocated base64 encoded NUL-terminated ASCII string. |