Skip to content

Commit bfca67c

Browse files
committed
Directory layout for libopenvpn.
0 parents  commit bfca67c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+66790
-0
lines changed

Makefile.am

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
## Process this file with automake to produce Makefile.in
2+
# Makefile.am for The Machine Emulator host/openvpn:
3+
4+
AUTOMAKE_OPTIONS = 1.4 gnu
5+
6+
include $(top_srcdir)/lib/ltrc.inc
7+
8+
AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/tme/libopenvpn -I. -D_TME_IMPL
9+
10+
lib_LTLIBRARIES = libopenvpn.la
11+
libopenvpn_la_SOURCES = \
12+
base64.c \
13+
buffer.c \
14+
clinat.c \
15+
crypto.c \
16+
crypto_openssl.c \
17+
crypto_polarssl.c \
18+
dhcp.c \
19+
error.c \
20+
event.c \
21+
fdmisc.c \
22+
forward.c \
23+
fragment.c \
24+
gremlin.c
25+
helper.c \
26+
httpdigest.c \
27+
lladdr.c \
28+
init.c \
29+
interval.c \
30+
list.c \
31+
lzo.c \
32+
manage.c \
33+
mbuf.c \
34+
misc.c \
35+
platform.c \
36+
console.c \
37+
mroute.c \
38+
mss.c \
39+
mstats.c \
40+
mtcp.c \
41+
mtu.c \
42+
mudp.c \
43+
multi.c \
44+
ntlm.c \
45+
occ.c \
46+
pkcs11.c \
47+
pkcs11_openssl.c \
48+
pkcs11_polarssl.c \
49+
openvpn.c \
50+
options.c \
51+
otime.c \
52+
packet_id.c \
53+
perf.c \
54+
pf.c \
55+
ping.c \
56+
plugin.c \
57+
pool.c \
58+
proto.c \
59+
proxy.c \
60+
ps.c \
61+
push.c \
62+
reliable.c \
63+
route.c \
64+
schedule.c \
65+
session_id.c \
66+
shaper.c \
67+
sig.c \
68+
socket.c \
69+
socks.c \
70+
ssl.c \
71+
ssl_openssl.c \
72+
ssl_polarssl.c \
73+
ssl_verify.c \
74+
ssl_verify_openssl.c \
75+
ssl_verify_polarssl.c \
76+
status.c \
77+
tun.c
78+
79+
libopenvpn_la_LIBADD = \
80+
$(SOCKETS_LIBS) \
81+
$(OPTIONAL_LZO_LIBS) \
82+
$(OPTIONAL_PKCS11_HELPER_LIBS) \
83+
$(OPTIONAL_CRYPTO_LIBS) \
84+
$(OPTIONAL_SELINUX_LIBS) \
85+
$(OPTIONAL_SYSTEMD_LIBS) \
86+
$(OPTIONAL_DL_LIBS)
87+
88+
if WIN32
89+
libopenvpn_la_SOURCES += openvpn_win32_resources.rc
90+
libopenvpn_la_LIBADD += -lgdi32 -lws2_32 -lwininet -lcrypt32 -liphlpapi -lwinmm
91+
endif

base64.c

+169
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
/*
2+
* Copyright (c) 1995-2001 Kungliga Tekniska Högskolan
3+
* (Royal Institute of Technology, Stockholm, Sweden).
4+
* All rights reserved.
5+
*
6+
* Redistribution and use in source and binary forms, with or without
7+
* modification, are permitted provided that the following conditions
8+
* are met:
9+
*
10+
* 1. Redistributions of source code must retain the above copyright
11+
* notice, this list of conditions and the following disclaimer.
12+
*
13+
* 2. Redistributions in binary form must reproduce the above copyright
14+
* notice, this list of conditions and the following disclaimer in the
15+
* documentation and/or other materials provided with the distribution.
16+
*
17+
* 3. Neither the name of the Institute nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*/
33+
34+
#ifdef HAVE_CONFIG_H
35+
#include "config.h"
36+
#elif defined(_MSC_VER)
37+
#include "config-msvc.h"
38+
#endif
39+
40+
#include "syshead.h"
41+
42+
#if defined(ENABLE_HTTP_PROXY) || defined(ENABLE_PKCS11) || defined(ENABLE_CLIENT_CR) || defined(MANAGMENT_EXTERNAL_KEY)
43+
44+
#include "base64.h"
45+
46+
#include "memdbg.h"
47+
48+
static char base64_chars[] =
49+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
50+
/*
51+
* base64 encode input data of length size to malloced
52+
* buffer which is returned as *str. Returns string
53+
* length of *str.
54+
*/
55+
int
56+
openvpn_base64_encode(const void *data, int size, char **str)
57+
{
58+
char *s, *p;
59+
int i;
60+
int c;
61+
const unsigned char *q;
62+
63+
if (size < 0)
64+
return -1;
65+
p = s = (char *) malloc(size * 4 / 3 + 4);
66+
if (p == NULL)
67+
return -1;
68+
q = (const unsigned char *) data;
69+
i = 0;
70+
for (i = 0; i < size;) {
71+
c = q[i++];
72+
c *= 256;
73+
if (i < size)
74+
c += q[i];
75+
i++;
76+
c *= 256;
77+
if (i < size)
78+
c += q[i];
79+
i++;
80+
p[0] = base64_chars[(c & 0x00fc0000) >> 18];
81+
p[1] = base64_chars[(c & 0x0003f000) >> 12];
82+
p[2] = base64_chars[(c & 0x00000fc0) >> 6];
83+
p[3] = base64_chars[(c & 0x0000003f) >> 0];
84+
if (i > size)
85+
p[3] = '=';
86+
if (i > size + 1)
87+
p[2] = '=';
88+
p += 4;
89+
}
90+
*p = 0;
91+
*str = s;
92+
return strlen(s);
93+
}
94+
95+
static int
96+
pos(char c)
97+
{
98+
char *p;
99+
for (p = base64_chars; *p; p++)
100+
if (*p == c)
101+
return p - base64_chars;
102+
return -1;
103+
}
104+
105+
#define DECODE_ERROR 0xffffffff
106+
107+
static unsigned int
108+
token_decode(const char *token)
109+
{
110+
int i;
111+
unsigned int val = 0;
112+
int marker = 0;
113+
if (!token[0] || !token[1] || !token[2] || !token[3])
114+
return DECODE_ERROR;
115+
for (i = 0; i < 4; i++) {
116+
val *= 64;
117+
if (token[i] == '=')
118+
marker++;
119+
else if (marker > 0)
120+
return DECODE_ERROR;
121+
else
122+
val += pos(token[i]);
123+
}
124+
if (marker > 2)
125+
return DECODE_ERROR;
126+
return (marker << 24) | val;
127+
}
128+
/*
129+
* Decode base64 str, outputting data to buffer
130+
* at data of length size. Return length of
131+
* decoded data written or -1 on error or overflow.
132+
*/
133+
int
134+
openvpn_base64_decode(const char *str, void *data, int size)
135+
{
136+
const char *p;
137+
unsigned char *q;
138+
unsigned char *e = NULL;
139+
140+
q = data;
141+
if (size >= 0)
142+
e = q + size;
143+
for (p = str; *p && (*p == '=' || strchr(base64_chars, *p)); p += 4) {
144+
unsigned int val = token_decode(p);
145+
unsigned int marker = (val >> 24) & 0xff;
146+
if (val == DECODE_ERROR)
147+
return -1;
148+
if (e && q >= e)
149+
return -1;
150+
*q++ = (val >> 16) & 0xff;
151+
if (marker < 2)
152+
{
153+
if (e && q >= e)
154+
return -1;
155+
*q++ = (val >> 8) & 0xff;
156+
}
157+
if (marker < 1)
158+
{
159+
if (e && q >= e)
160+
return -1;
161+
*q++ = val & 0xff;
162+
}
163+
}
164+
return q - (unsigned char *) data;
165+
}
166+
167+
#else
168+
static void dummy(void) {}
169+
#endif /* ENABLE_HTTP_PROXY, ENABLE_PKCS11, ENABLE_CLIENT_CR */

0 commit comments

Comments
 (0)