X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;ds=sidebyside;f=src%2Faddagent%2Fb64.c;h=de5d033042281688ee8974458f2d0b793d2e76d0;hb=3f728675941dc69d4e544d3a880a56240a6e394a;hp=45ecb49e493caf0cfe94037e0f435a14854e205c;hpb=927951d1c1ad45ba9e7325f07d996154a91c911b;p=ossec-hids.git diff --git a/src/addagent/b64.c b/src/addagent/b64.c old mode 100755 new mode 100644 index 45ecb49..de5d033 --- a/src/addagent/b64.c +++ b/src/addagent/b64.c @@ -1,5 +1,3 @@ -/* @(#) $Id: ./src/addagent/b64.c, 2011/09/08 dcid Exp $ - */ /* * Copyright (C), 2000-2004 by the monit project group. * All Rights Reserved. @@ -19,6 +17,10 @@ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* base64 encoding/decoding + * Author: Jan-Henrik Haukeland + */ + #include #include #include @@ -26,244 +28,198 @@ #define TRUE 1 #define FALSE 0 -char *decode_base64(const char *src); -char *encode_base64(int size, char *src); - -/* Private prototypes */ +/* Prototypes */ static int is_base64(char c); static char encode(unsigned char u); static unsigned char decode(char c); - -/** - * Implementation of base64 encoding/decoding. - * - * @author Jan-Henrik Haukeland, - * - * @version \$Id$ - * - * @file - */ - +/* Global variables */ +char *decode_base64(const char *src); +char *encode_base64(int size, char *src); -/** - * Base64 encode and return size data in 'src'. The caller must free the +/* Base64 encode and return size data in 'src'. The caller must free the * returned string. - * @param size The size of the data in src - * @param src The data to be base64 encode - * @return encoded string otherwise NULL + * Returns encoded string otherwise NULL */ -char *encode_base64(int size, char *src) { - +char *encode_base64(int size, char *src) +{ int i; char *out, *p; - if(!src) + if (!src) { return NULL; + } - if(!size) - size= strlen((char *)src); + if (!size) { + size = strlen((char *)src); + } - out = (char *)calloc(sizeof(char), size*4/3+4); - if(!out) + out = (char *)calloc(sizeof(char), size * 4 / 3 + 4); + if (!out) { return NULL; + } p = out; - for(i = 0; i < size; i+=3) { - - unsigned char b1=0, b2=0, b3=0, b4=0, b5=0, b6=0, b7=0; + for (i = 0; i < size; i += 3) { + unsigned char b1 = 0, b2 = 0, b3 = 0, b4 = 0, b5 = 0, b6 = 0, b7 = 0; b1 = src[i]; - if(i+1>2; - b5= ((b1&0x3)<<4)|(b2>>4); - b6= ((b2&0xf)<<2)|(b3>>6); - b7= b3&0x3f; + b4 = b1 >> 2; + b5 = ((b1 & 0x3) << 4) | (b2 >> 4); + b6 = ((b2 & 0xf) << 2) | (b3 >> 6); + b7 = b3 & 0x3f; - *p++= encode(b4); - *p++= encode(b5); + *p++ = encode(b4); + *p++ = encode(b5); - if(i+1>4) ); + *p++ = ((b1 << 2) | (b2 >> 4) ); - if(c3 != '=') { - *p++=(((b2&0xf)<<4)|(b3>>2) ); + if (c3 != '=') { + *p++ = (((b2 & 0xf) << 4) | (b3 >> 2) ); } - if(c4 != '=') { - *p++=(((b3&0x3)<<6)|b4 ); + if (c4 != '=') { + *p++ = (((b3 & 0x3) << 6) | b4 ); } } free(buf); - /*return(p-dest); */ - return(dest); - + return (dest); } - - return(NULL); - + return (NULL); } - - /* ----------------------------------------------------------------- Private */ - -static char encode(unsigned char u) { - - if(u < 26) return 'A'+u; - if(u < 52) return 'a'+(u-26); - if(u < 62) return '0'+(u-52); - if(u == 62) return '+'; +static char encode(unsigned char u) +{ + if (u < 26) { + return 'A' + u; + } + if (u < 52) { + return 'a' + (u - 26); + } + if (u < 62) { + return '0' + (u - 52); + } + if (u == 62) { + return '+'; + } return '/'; - } - -/** - * Decode a base64 character - */ -static unsigned char decode(char c) { - - if(c >= 'A' && c <= 'Z') return(c - 'A'); - if(c >= 'a' && c <= 'z') return(c - 'a' + 26); - if(c >= '0' && c <= '9') return(c - '0' + 52); - if(c == '+') return 62; +/* Decode a base64 character */ +static unsigned char decode(char c) +{ + if (c >= 'A' && c <= 'Z') { + return (c - 'A'); + } + if (c >= 'a' && c <= 'z') { + return (c - 'a' + 26); + } + if (c >= '0' && c <= '9') { + return (c - '0' + 52); + } + if (c == '+') { + return 62; + } return 63; - } - -/** - * Return TRUE if 'c' is a valid base64 character, otherwise FALSE - */ -static int is_base64(char c) { - - if((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || - (c >= '0' && c <= '9') || (c == '+') || - (c == '/') || (c == '=')) { +/* Returns TRUE if 'c' is a valid base64 character, otherwise FALSE */ +static int is_base64(char c) +{ + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || + (c >= '0' && c <= '9') || (c == '+') || + (c == '/') || (c == '=')) { return TRUE; - } - return FALSE; - -} - - -/* -int main(int argc, char **argv) -{ - char *s; - char *d; - - if(argc < 2) - { - printf("%s string\n",argv[0]); - exit(1); - } - s = encode_base64(strlen(argv[1]), argv[1]); - - printf("b64:\n%s\n",s); - - - d = decode_base64(s); - printf("decode:%s\n",d); - - exit(0); } -*/ - - -/* EOF */