1
/*****************************************************************************
2
TRAVIS - Trajectory Analyzer and Visualizer
3
http://www.travis-analyzer.de/
5
Copyright (c) 2009-2013 Martin Brehm
6
2012-2013 Martin Thomas
8
This file written by Martin Brehm.
10
This program is free software: you can redistribute it and/or modify
11
it under the terms of the GNU General Public License as published by
12
the Free Software Foundation, either version 3 of the License, or
13
(at your option) any later version.
15
This program is distributed in the hope that it will be useful,
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
GNU General Public License for more details.
20
You should have received a copy of the GNU General Public License
21
along with this program. If not, see <http://www.gnu.org/licenses/>.
22
*****************************************************************************/
27
static const char BASE64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
28
static const int BASE64_INPUT_SIZE = 57;
32
return c && strchr(BASE64_table, c) != NULL;
35
inline char BASE64_value(char c)
37
const char *p = strchr(BASE64_table, c);
39
return p-BASE64_table;
45
int UnBase64(unsigned char *dest, const unsigned char *src, int srclen)
52
unsigned char *p = dest;
56
char a = BASE64_value(src[0]);
57
char b = BASE64_value(src[1]);
58
char c = BASE64_value(src[2]);
59
char d = BASE64_value(src[3]);
60
*p++ = (a << 2) | (b >> 4);
61
*p++ = (b << 4) | (c >> 2);
68
else if(!isbase64(src[2]))
73
else if(!isbase64(src[3]))
79
while(*src && (*src == 13 || *src == 10)) src++;
1
/*****************************************************************************
2
TRAVIS - Trajectory Analyzer and Visualizer
3
http://www.travis-analyzer.de/
5
Copyright (c) 2009-2014 Martin Brehm
6
2012-2014 Martin Thomas
8
This file written by Martin Brehm.
10
This program is free software: you can redistribute it and/or modify
11
it under the terms of the GNU General Public License as published by
12
the Free Software Foundation, either version 3 of the License, or
13
(at your option) any later version.
15
This program is distributed in the hope that it will be useful,
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
GNU General Public License for more details.
20
You should have received a copy of the GNU General Public License
21
along with this program. If not, see <http://www.gnu.org/licenses/>.
22
*****************************************************************************/
27
static const char BASE64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
28
static const int BASE64_INPUT_SIZE = 57;
32
return c && strchr(BASE64_table, c) != NULL;
35
inline char BASE64_value(char c)
37
const char *p = strchr(BASE64_table, c);
39
return p-BASE64_table;
45
int UnBase64(unsigned char *dest, const unsigned char *src, int srclen)
52
unsigned char *p = dest;
56
char a = BASE64_value(src[0]);
57
char b = BASE64_value(src[1]);
58
char c = BASE64_value(src[2]);
59
char d = BASE64_value(src[3]);
60
*p++ = (a << 2) | (b >> 4);
61
*p++ = (b << 4) | (c >> 2);
68
else if(!isbase64(src[2]))
73
else if(!isbase64(src[3]))
79
while(*src && (*src == 13 || *src == 10)) src++;