23 #include "sml_error.h" 24 #include "sml_error_internals.h" 26 #include "syncml_internals.h" 28 static SmlBool _smlBase64DecodeBinary(
const char *input,
unsigned int size,
char **output,
unsigned int *outsize,
SmlError **error);
29 static SmlBool _smlBase64EncodeBinary(
const char *input,
unsigned int size,
char **output,
SmlError **error);
32 SmlBool smlBase64Decode(
const char *input,
char **output,
unsigned int *outsize,
SmlError **error)
34 smlTrace(TRACE_ENTRY,
"%s(%p, %p, %p, %p)", __func__, input, output, outsize, error);
45 if (!_smlBase64DecodeBinary(input, strlen(input), output, outsize, error))
49 smlTrace(TRACE_EXIT,
"%s", __func__);
57 SmlBool smlBase64DecodeBinary(
const char *input,
unsigned int size,
char **output,
unsigned int *outsize,
SmlError **error)
59 return _smlBase64DecodeBinary(input, size, output, outsize, error);
66 static SmlBool _smlBase64DecodeBinary(
const char *input,
unsigned int size,
char **output,
unsigned int *outsize,
SmlError **error)
68 smlTrace(TRACE_ENTRY,
"%s(%p, %i, %p, %p, %p)", __func__, input, size, output, outsize, error);
71 if (!input || !size) {
78 *output = (
char *) g_base64_decode(input, &length);
80 smlErrorSet(error, SML_ERROR_GENERIC,
"Invalid base64 input");
91 memcpy(result, *output, *outsize);
94 *outsize = *outsize + 1;
96 smlTrace(TRACE_EXIT,
"%s", __func__);
106 SmlBool smlBase64Encode(
const char *input,
char **output,
SmlError **error)
108 smlTrace(TRACE_ENTRY,
"%s(%p, %p, %p)", __func__, input, output, error);
114 smlTrace(TRACE_EXIT,
"%s", __func__);
118 if (_smlBase64EncodeBinary(input, strlen(input), output, error)) {
119 smlTrace(TRACE_EXIT,
"%s", __func__);
128 SmlBool smlBase64EncodeBinary(
const char *input,
unsigned int size,
char **output,
SmlError **error)
130 return _smlBase64EncodeBinary(input, size, output, error);
137 static SmlBool _smlBase64EncodeBinary(
const char *input,
unsigned int size,
char **output,
SmlError **error)
139 smlTrace(TRACE_ENTRY,
"%s(%p, %i, %p, %p)", __func__, input, size, output, error);
149 *output = g_base64_encode((
const unsigned char *) input, size);
151 smlErrorSet(error, SML_ERROR_GENERIC,
"Base64 encoding failed.");
155 smlTrace(TRACE_EXIT,
"%s", __func__);
const char * smlErrorPrint(SmlError **error)
Returns the message of the error.
void smlTrace(SmlTraceType type, const char *message,...)
Used for tracing the application.
void * smlTryMalloc0(long n_bytes, SmlError **error)
Safely mallocs.
void smlErrorSet(SmlError **error, SmlErrorType type, const char *format,...)
Sets the error.