3 #include "ace/OS_Memory.h"
4 #include "ace/OS_NS_string.h"
5 #include "ACEXML/common/XML_Codecs.h"
9 ACEXML_Base64::encode (const ACEXML_Char
* input
,
14 size_t len
= ACE_OS::strlen (input
);
20 std::unique_ptr
<ACE_Byte
[]> cleanup_buf (buf
);
22 for (size_t i
= 0; i
< len
; ++i
)
23 buf
[i
] = (ACE_Byte
)input
[i
];
26 size_t encode_len
= 0;
27 ACE_Byte
* encodedBuf
= ACE_Base64::encode (buf
, len
, &encode_len
);
32 ACEXML_Char
* result
= 0;
33 ACE_NEW_RETURN (result
,
34 ACEXML_Char
[encode_len
+1],
37 for (size_t j
= 0; j
< encode_len
; ++j
)
38 result
[j
] = (ACEXML_Char
)encodedBuf
[j
];
39 result
[encode_len
] = 0;
41 *output_len
= encode_len
;
48 ACEXML_Base64::decode (const ACEXML_Char
* input
,
54 size_t len
= ACE_OS::strlen (input
);
62 std::unique_ptr
<ACE_Byte
[]> cleanup (buf
);
64 for (size_t i
= 0; i
< len
; ++i
)
65 buf
[i
] = (ACE_Byte
)input
[i
];
69 size_t decode_len
= 0;
71 ACE_Byte
* decodedBuf
= ACE_Base64::decode (buf
, &decode_len
);
76 ACEXML_Char
* result
= 0;
78 ACE_NEW_RETURN (result
,
79 ACEXML_Char
[decode_len
+1],
82 for (size_t j
= 0; j
< decode_len
; ++j
)
83 result
[j
] = (ACEXML_Char
)decodedBuf
[j
];
85 result
[decode_len
] = 0;
87 *output_len
= decode_len
;