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:
parent
def69c3087
commit
37249c3a41
34
lib/base64.c
34
lib/base64.c
@ -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 ---- */
|
||||||
|
@ -40,5 +40,5 @@
|
|||||||
* ------------------------------------------------------------
|
* ------------------------------------------------------------
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void base64Encode(char *intext, char *output);
|
int base64Encode(char *indata, int insize, char **output);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user