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[]=
"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 obuf[4];
int i;
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++) {
if(*intext) {
if(*indata) {
inputparts++;
ibuf[i] = *intext;
intext++;
ibuf[i] = *indata;
indata++;
insize--;
}
else
ibuf[i] = 0;
@ -90,5 +111,8 @@ void base64Encode(char *intext, char *output)
output += 4;
}
*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 ---- */

View File

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