- Made Makefile.am stub for doc/es/
- Merged genauth into tincd - Updated dutch translation
This commit is contained in:
parent
9f64499e40
commit
fba19c30c9
9 changed files with 711 additions and 477 deletions
|
@ -1,9 +1,8 @@
|
|||
## Produce this file with automake to get Makefile.in
|
||||
# $Id: Makefile.am,v 1.4.4.2 2000/10/11 10:35:15 guus Exp $
|
||||
# $Id: Makefile.am,v 1.4.4.3 2000/10/20 16:49:20 guus Exp $
|
||||
|
||||
sbin_PROGRAMS = tincd genauth
|
||||
sbin_PROGRAMS = tincd
|
||||
|
||||
genauth_SOURCES = genauth.c
|
||||
tincd_SOURCES = conf.c connlist.c meta.c net.c netutl.c protocol.c subnet.c tincd.c
|
||||
|
||||
INCLUDES = -I$(top_builddir) -I$(top_srcdir)/cipher -I$(top_srcdir)/lib -I$(top_srcdir)/intl
|
||||
|
|
113
src/genauth.c
113
src/genauth.c
|
@ -1,113 +0,0 @@
|
|||
/*
|
||||
genauth.c -- generate public/private keypairs
|
||||
Copyright (C) 1998,1999,2000 Ivo Timmermans <zarq@iname.com>
|
||||
2000 Guus Sliepen <guus@sliepen.warande.net>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
$Id: genauth.c,v 1.7.4.4 2000/10/20 15:34:35 guus Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <openssl/rsa.h>
|
||||
#include <openssl/rand.h>
|
||||
|
||||
#include <xalloc.h>
|
||||
|
||||
#include "system.h"
|
||||
|
||||
#define RSA_PUBLIC_EXPONENT 65535
|
||||
|
||||
void indicator(int a, int b, void *p)
|
||||
{
|
||||
switch(a)
|
||||
{
|
||||
case 0:
|
||||
fprintf(stderr, ".");
|
||||
break;
|
||||
case 1:
|
||||
fprintf(stderr, "+");
|
||||
break;
|
||||
case 2:
|
||||
fprintf(stderr, "-");
|
||||
break;
|
||||
case 3:
|
||||
switch(b)
|
||||
{
|
||||
case 0:
|
||||
fprintf(stderr, " p\n");
|
||||
break;
|
||||
case 1:
|
||||
fprintf(stderr, " q\n");
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "?");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "?");
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int bits;
|
||||
RSA *key;
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
bindtextdomain (PACKAGE, LOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
|
||||
if(argc > 2 || (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))))
|
||||
{
|
||||
fprintf(stderr, _("Usage: %s bits\n"), argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!argv[1])
|
||||
argv[1] = "1024";
|
||||
|
||||
bits = atol(argv[1]);
|
||||
|
||||
if(bits<32)
|
||||
{
|
||||
fprintf(stderr, _("Illegal number: %s\n"), argv[1]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
bits = ((bits - 1) | 7) + 1; /* Align to bytes for easy mallocing and reading */
|
||||
|
||||
fprintf(stderr, _("Seeding the PRNG: please press some keys or move\nthe mouse if this program seems to have halted...\n"));
|
||||
|
||||
RAND_load_file("/dev/random", 1024); /* OpenSSL PRNG state apparently uses 1024 bytes */
|
||||
|
||||
fprintf(stderr, _("Generating %d bits keys:\n"), bits);
|
||||
|
||||
key = RSA_generate_key(bits, RSA_PUBLIC_EXPONENT, indicator, NULL);
|
||||
|
||||
fprintf(stderr, _("Done.\n"));
|
||||
|
||||
printf(_("Public key: %s\n"), BN_bn2hex(key->n));
|
||||
printf(_("Private key: %s\n"), BN_bn2hex(key->d));
|
||||
printf(_("Public exp: %s\n"), BN_bn2hex(key->e));
|
||||
|
||||
fflush(stdin); /* Flush any input caused by random keypresses */
|
||||
|
||||
return 0;
|
||||
}
|
99
src/tincd.c
99
src/tincd.c
|
@ -17,7 +17,7 @@
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
$Id: tincd.c,v 1.10.4.12 2000/10/15 00:59:37 guus Exp $
|
||||
$Id: tincd.c,v 1.10.4.13 2000/10/20 16:49:20 guus Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -31,6 +31,8 @@
|
|||
#include <syslog.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/rsa.h>
|
||||
|
||||
#ifdef HAVE_SYS_IOCTL_H
|
||||
# include <sys/ioctl.h>
|
||||
|
@ -63,6 +65,9 @@ static int kill_tincd = 0;
|
|||
/* If zero, don't detach from the terminal. */
|
||||
static int do_detach = 1;
|
||||
|
||||
/* If nonzero, generate public/private keypair for this host/net. */
|
||||
static int generate_keys = 0;
|
||||
|
||||
char *identname; /* program name for syslog */
|
||||
char *pidfilename; /* pid file location */
|
||||
static pid_t ppid; /* pid of non-detached part */
|
||||
|
@ -80,10 +85,10 @@ static struct option const long_options[] =
|
|||
{
|
||||
{ "kill", no_argument, NULL, 'k' },
|
||||
{ "net", required_argument, NULL, 'n' },
|
||||
{ "timeout", required_argument, NULL, 'p' },
|
||||
{ "help", no_argument, &show_help, 1 },
|
||||
{ "version", no_argument, &show_version, 1 },
|
||||
{ "no-detach", no_argument, &do_detach, 0 },
|
||||
{ "keygen", optional_argument, NULL, 'K'},
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
|
||||
|
@ -99,9 +104,9 @@ usage(int status)
|
|||
" -D, --no-detach Don't fork and detach.\n"
|
||||
" -d Increase debug level.\n"
|
||||
" -k, --kill Attempt to kill a running tincd and exit.\n"
|
||||
" -n, --net=NETNAME Connect to net NETNAME.\n"
|
||||
" -t, --timeout=TIMEOUT Seconds to wait before giving a timeout.\n"));
|
||||
printf(_(" --help Display this help and exit.\n"
|
||||
" -n, --net=NETNAME Connect to net NETNAME.\n"));
|
||||
printf(_(" -K, --keygen[=BITS] Generate public/private RSA keypair.\n"
|
||||
" --help Display this help and exit.\n"
|
||||
" --version Output version information and exit.\n\n"));
|
||||
printf(_("Report bugs to tinc@nl.linux.org.\n"));
|
||||
}
|
||||
|
@ -115,7 +120,7 @@ parse_options(int argc, char **argv, char **envp)
|
|||
int option_index = 0;
|
||||
config_t *p;
|
||||
|
||||
while((r = getopt_long(argc, argv, "c:Ddkn:t:", long_options, &option_index)) != EOF)
|
||||
while((r = getopt_long(argc, argv, "c:Ddkn:K::", long_options, &option_index)) != EOF)
|
||||
{
|
||||
switch(r)
|
||||
{
|
||||
|
@ -138,12 +143,19 @@ parse_options(int argc, char **argv, char **envp)
|
|||
netname = xmalloc(strlen(optarg)+1);
|
||||
strcpy(netname, optarg);
|
||||
break;
|
||||
case 't': /* timeout */
|
||||
if(!(p = add_config_val(&config, TYPE_INT, optarg)))
|
||||
{
|
||||
printf(_("Invalid timeout value `%s'.\n"), optarg);
|
||||
usage(1);
|
||||
}
|
||||
case 'K': /* generate public/private keypair */
|
||||
if(optarg)
|
||||
{
|
||||
generate_keys = atoi(optarg);
|
||||
if(generate_keys < 512)
|
||||
{
|
||||
fprintf(stderr, _("Invalid argument! BITS must be a number equal to or greater than 512.\n"));
|
||||
usage(1);
|
||||
}
|
||||
generate_keys &= ~7; /* Round it to bytes */
|
||||
}
|
||||
else
|
||||
generate_keys = 1024;
|
||||
break;
|
||||
case '?':
|
||||
usage(1);
|
||||
|
@ -153,6 +165,66 @@ parse_options(int argc, char **argv, char **envp)
|
|||
}
|
||||
}
|
||||
|
||||
/* This function prettyprints the key generation process */
|
||||
|
||||
void indicator(int a, int b, void *p)
|
||||
{
|
||||
switch(a)
|
||||
{
|
||||
case 0:
|
||||
fprintf(stderr, ".");
|
||||
break;
|
||||
case 1:
|
||||
fprintf(stderr, "+");
|
||||
break;
|
||||
case 2:
|
||||
fprintf(stderr, "-");
|
||||
break;
|
||||
case 3:
|
||||
switch(b)
|
||||
{
|
||||
case 0:
|
||||
fprintf(stderr, " p\n");
|
||||
break;
|
||||
case 1:
|
||||
fprintf(stderr, " q\n");
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "?");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "?");
|
||||
}
|
||||
}
|
||||
|
||||
/* Generate a public/private RSA keypair, and possibly store it into the configuration file. */
|
||||
|
||||
int keygen(int bits)
|
||||
{
|
||||
RSA *rsa_key;
|
||||
|
||||
fprintf(stderr, _("Seeding the PRNG: please press some keys or move\nthe mouse if this program seems to have halted...\n"));
|
||||
RAND_load_file("/dev/random", 1024); /* OpenSSL PRNG state apparently uses 1024 bytes, but it seems pretty sufficient anyway :) */
|
||||
|
||||
fprintf(stderr, _("Generating %d bits keys:\n"), bits);
|
||||
rsa_key = RSA_generate_key(bits, 0xFFFF, indicator, NULL);
|
||||
if(!rsa_key)
|
||||
{
|
||||
fprintf(stderr, _("Error during key generation!"));
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, _("Done.\n"));
|
||||
|
||||
fprintf(stderr, _("Please copy the private key to tinc.conf and the\npublic key to your host configuration file:\n\n"));
|
||||
printf("PublicKey = %s\n", BN_bn2hex(rsa_key->n));
|
||||
printf("PrivateKey = %s\n", BN_bn2hex(rsa_key->d));
|
||||
|
||||
fflush(stdin);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void memory_full(int size)
|
||||
{
|
||||
syslog(LOG_ERR, _("Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."), cp_file, cp_line, size);
|
||||
|
@ -351,6 +423,9 @@ main(int argc, char **argv, char **envp)
|
|||
|
||||
make_names();
|
||||
|
||||
if(generate_keys)
|
||||
exit(keygen(generate_keys));
|
||||
|
||||
if(kill_tincd)
|
||||
exit(kill_other());
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue