1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

new interface to the base64 encoder

This commit is contained in:
Daniel Stenberg 2000-09-21 08:46:44 +00:00
parent def69c3087
commit 37249c3a41
2 changed files with 30 additions and 6 deletions

View File

@ -44,19 +44,40 @@
static char table64[]= static char table64[]=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
void base64Encode(char *intext, char *output) /*
* base64Encode()
*
* Returns the length of the newly created base64 string. The third argument
* is a pointer to an allocated area holding the base64 data. If something
* went wrong, -1 is returned.
*
* Modifed my version to resemble the krb4 one. The krb4 sources then won't
* need its own.
*
*/
int base64Encode(char *indata, int insize, char **outptr)
{ {
unsigned char ibuf[3]; unsigned char ibuf[3];
unsigned char obuf[4]; unsigned char obuf[4];
int i; int i;
int inputparts; int inputparts;
char *output;
char *base64data;
while(*intext) { if(0 == insize)
insize = strlen(indata);
base64data = output = (char*)malloc(insize*4/3+4);
if(NULL == output)
return -1;
while(insize > 0) {
for (i = inputparts = 0; i < 3; i++) { for (i = inputparts = 0; i < 3; i++) {
if(*intext) { if(*indata) {
inputparts++; inputparts++;
ibuf[i] = *intext; ibuf[i] = *indata;
intext++; indata++;
insize--;
} }
else else
ibuf[i] = 0; ibuf[i] = 0;
@ -90,5 +111,8 @@ void base64Encode(char *intext, char *output)
output += 4; output += 4;
} }
*output=0; *output=0;
*outptr = base64data; /* make it return the actual data memory */
return strlen(base64data); /* return the length of the new data */
} }
/* ---- End of Base64 Encoding ---- */ /* ---- End of Base64 Encoding ---- */

View File

@ -40,5 +40,5 @@
* ------------------------------------------------------------ * ------------------------------------------------------------
****************************************************************************/ ****************************************************************************/
void base64Encode(char *intext, char *output); int base64Encode(char *indata, int insize, char **output);
#endif #endif