19 const char *
Base64Map(
void) {
return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";}
20 const char *
base64Map =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
27 int outputOffset, charCount;
33 write3Count=dataLength/3;
34 for (j=0; j < write3Count; j++)
37 outputData[outputOffset++]=
base64Map[inputData[j*3+0] >> 2];
38 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
41 outputData[outputOffset++]=
base64Map[((inputData[j*3+0] << 4) | (inputData[j*3+1] >> 4)) & 63];
42 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
45 outputData[outputOffset++]=
base64Map[((inputData[j*3+1] << 2) | (inputData[j*3+2] >> 6)) & 63];
46 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
49 outputData[outputOffset++]=
base64Map[inputData[j*3+2] & 63];
50 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
53 if (dataLength % 3==1)
56 outputData[outputOffset++]=
base64Map[inputData[j*3+0] >> 2];
57 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
60 outputData[outputOffset++]=
base64Map[((inputData[j*3+0] << 4) | (inputData[j*3+1] >> 4)) & 63];
61 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
64 outputData[outputOffset++]=
'=';
65 outputData[outputOffset++]=
'=';
67 else if (dataLength % 3==2)
72 outputData[outputOffset++]=
base64Map[inputData[j*3+0] >> 2];
73 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
76 outputData[outputOffset++]=
base64Map[((inputData[j*3+0] << 4) | (inputData[j*3+1] >> 4)) & 63];
77 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
80 outputData[outputOffset++]=
base64Map[(inputData[j*3+1] << 2) & 63];
81 if ((++charCount % 76)==0) {outputData[outputOffset++]=
'\r'; outputData[outputOffset++]=
'\n'; charCount=0;}
84 outputData[outputOffset++]=
'=';
89 outputData[outputOffset++]=
'\r';
90 outputData[outputOffset++]=
'\n';
91 outputData[outputOffset]=0;