From cdefeefef362f1caffa7029e932ef6ad8c9beaff Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 1 Jan 2009 18:21:02 +0000 Subject: added aes-ctr cipher TODO: key derivation --- src/uanytun.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/uanytun.c') diff --git a/src/uanytun.c b/src/uanytun.c index 26f4bea..b72c7fb 100644 --- a/src/uanytun.c +++ b/src/uanytun.c @@ -55,6 +55,34 @@ #include "daemon.h" #include "sysexec.h" +#include + + +#define MIN_GCRYPT_VERSION "1.2.0" + +int init_libgcrypt() +{ + if(!gcry_check_version(MIN_GCRYPT_VERSION)) { + log_printf(NOTICE, "invalid Version of libgcrypt, should be >= %s", MIN_GCRYPT_VERSION); + return -1; + } + + gcry_error_t err = gcry_control(GCRYCTL_INIT_SECMEM, 16384, 0); + if(err) { + log_printf(ERR, "failed initialize secure memory: %s/%s", gcry_strerror(err), gcry_strsource(err)); + return -1; + } + // Tell Libgcrypt that initialization has completed. + err = gcry_control(GCRYCTL_INITIALIZATION_FINISHED); + if(err) { + log_printf(ERR, "failed to finish libgcrypt initialization: %s/%s", gcry_strerror(err), gcry_strsource(err)); + return -1; + } + + log_printf(NOTICE, "libgcrypt init finished"); + return 0; +} + int main_loop(tun_device_t* dev, udp_socket_t* sock, options_t* opt) { int return_value = 0; @@ -216,6 +244,14 @@ int main(int argc, char* argv[]) log_printf(NOTICE, "just started..."); + ret = init_libgcrypt(); + if(ret) { + log_printf(ERR, "error on libgcrpyt initialization, exitting"); + options_clear(&opt); + exit(ret); + } + + tun_device_t dev; ret = tun_init(&dev, opt.dev_name_, opt.dev_type_, opt.ifconfig_param_local_, opt.ifconfig_param_remote_netmask_); if(ret) { -- cgit v1.2.3