diff options
Diffstat (limited to 'keyexchange/isakmpd-20041012/regress/rsakeygen')
3 files changed, 215 insertions, 0 deletions
diff --git a/keyexchange/isakmpd-20041012/regress/rsakeygen/.cvsignore b/keyexchange/isakmpd-20041012/regress/rsakeygen/.cvsignore new file mode 100644 index 0000000..0ecb82e --- /dev/null +++ b/keyexchange/isakmpd-20041012/regress/rsakeygen/.cvsignore @@ -0,0 +1,4 @@ +isakmpd_key +isakmpd_key.pub +rsakeygen +obj diff --git a/keyexchange/isakmpd-20041012/regress/rsakeygen/Makefile b/keyexchange/isakmpd-20041012/regress/rsakeygen/Makefile new file mode 100644 index 0000000..578a7b5 --- /dev/null +++ b/keyexchange/isakmpd-20041012/regress/rsakeygen/Makefile @@ -0,0 +1,83 @@ +# $OpenBSD: Makefile,v 1.15 2004/02/25 16:01:29 hshoexer Exp $ +# $EOM: Makefile,v 1.10 2000/03/28 21:23:24 ho Exp $ + +# +# Copyright (c) 1999 Niels Provos. All rights reserved. +# Copyright (c) 1999, 2001 Niklas Hallqvist. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# +# This code was written under funding by Ericsson Radio Systems. +# + +# RSA Key Generation + +PROG= rsakeygen +SRCS= libcrypto.c log.c rsakeygen.c sysdep.c util.c conf.c +TOPSRC= ${.CURDIR}/../.. +TOPOBJ!= cd ${TOPSRC}; printf "all:\n\t@pwd\n" |${MAKE} -f- +OS!= awk '/^OS=/ { print $$2 }' ${.CURDIR}/../../Makefile +FEATURES!= awk '/^FEATURES=/ { print $$0 }' ${.CURDIR}/../../Makefile | sed 's/FEATURES=.//' +.PATH: ${TOPSRC} ${TOPSRC}/sysdep/${OS} ${TOPOBJ} +CFLAGS+= -I${TOPSRC} -I${TOPSRC}/sysdep/${OS} -I${TOPOBJ} -Wall \ + -DUSE_DEBUG +NOMAN= +DEBUG= -g + +.if ${FEATURES:Mgmp} == "gmp" +CFLAGS+= -DMP_FLAVOUR=MP_FLAVOUR_GMP +LDADD+= -lgmp +DPADD+= ${LIBGMP} +.else +CFLAGS+= -DMP_FLAVOUR=MP_FLAVOUR_OPENSSL +.endif + +.include "${TOPSRC}/sysdep/${OS}/Makefile.sysdep" + +.ifdef HAVE_DLOPEN +CFLAGS+= -DHAVE_DLOPEN +SRCS+= dyn.c +.endif + +.ifdef USE_LIBCRYPTO +CFLAGS+= -DUSE_LIBCRYPTO +LDADD+= -lcrypto +DPADD+= ${LIBCRYPTO} +.endif + +.if !defined (HAVE_DLOPEN) && !defined (USE_LIBCRYPTO) +.BEGIN: + @echo RSA cannot be used in this environmet, skipping... + +PROG= +.else +# USE_X509 is required for libcrypto.h to include the correct headers, +# but it is not set by ${OS}/Makefile.sysdep - setting it manually here +# should be safe enough. +CFLAGS+= -DUSE_X509 +.endif + +LDADD+= ${DESLIB} +DPADD+= ${DESLIBDEP} + +.include <bsd.prog.mk> diff --git a/keyexchange/isakmpd-20041012/regress/rsakeygen/rsakeygen.c b/keyexchange/isakmpd-20041012/regress/rsakeygen/rsakeygen.c new file mode 100644 index 0000000..08548a0 --- /dev/null +++ b/keyexchange/isakmpd-20041012/regress/rsakeygen/rsakeygen.c @@ -0,0 +1,128 @@ +/* $OpenBSD: rsakeygen.c,v 1.19 2004/02/26 15:27:05 hshoexer Exp $ */ +/* $EOM: rsakeygen.c,v 1.10 2000/12/21 15:18:53 ho Exp $ */ + +/* + * Copyright (c) 1998, 1999 Niels Provos. All rights reserved. + * Copyright (c) 1999, 2001 Niklas Hallqvist. All rights reserved. + * Copyright (c) 2001 Håkan Olsson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This code was written under funding by Ericsson Radio Systems. + */ + +#include <sys/param.h> +#include <ctype.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include "libcrypto.h" +#include "log.h" +#include "math_mp.h" + +#define nibble2bin(y) (tolower (y) < 'a' ? (y) - '0' : tolower (y) - 'a' + 10) +#define hexchar2bin(x) ((nibble2bin ((x)[0]) << 4) + nibble2bin ((x)[1])) +#define nibble2c(x) ((x) >= 10 ? ('a' - 10 + (x)) : ('0' + (x))) + +#define TEST_STRING "!Dies ist ein Test" + +int +main (void) +{ + u_int8_t enc[256], dec[256], *asn, *foo; + int len; + FILE *fd; + int erg = 0; + RSA *key; + + libcrypto_init (); + + log_debug_cmd (LOG_CRYPTO, 99); + memset (dec, '\0', sizeof dec); + strlcpy (dec, TEST_STRING, 256); + + key = RSA_generate_key (1024, RSA_F4, NULL, NULL); + if (key == NULL) + { + printf("Failed to generate key\n"); + return 0; + } + + printf ("n: 0x"); + BN_print_fp (stdout, key->n); + printf ("\ne: 0x"); + BN_print_fp (stdout, key->e); + printf ("\n"); + + printf ("n: 0x"); + BN_print_fp (stdout, key->n); + printf ("\ne: 0x"); + BN_print_fp (stdout, key->e); + printf ("\nd: 0x"); + BN_print_fp (stdout, key->d); + printf ("\np: 0x"); + BN_print_fp (stdout, key->p); + printf ("\nq: 0x"); + BN_print_fp (stdout, key->q); + printf ("\n"); + + printf ("Testing Signing/Verifying: "); + /* Sign with Private Key */ + len = RSA_private_encrypt (strlen (dec) + 1, dec, enc, key, + RSA_PKCS1_PADDING); + if (len == -1) + printf ("SIGN FAILED "); + else + { + /* Decrypt/Verify with Public Key */ + erg = RSA_public_decrypt (len, enc, dec, key, RSA_PKCS1_PADDING); + + if (erg == -1 || strcmp (dec, TEST_STRING)) + printf ("VERIFY FAILED"); + else + printf ("OKAY"); + } + + printf ("\n"); + + len = i2d_RSAPublicKey (key, NULL); + foo = asn = malloc (len); + len = i2d_RSAPublicKey (key, &foo); + fd = fopen ("isakmpd_key.pub", "w"); + fwrite (asn, len, 1, fd); + fclose (fd); + free (asn); + + len = i2d_RSAPrivateKey (key, NULL); + foo = asn = malloc (len); + len = i2d_RSAPrivateKey (key, &foo); + fd = fopen ("isakmpd_key", "w"); + fwrite (asn, len, 1, fd); + fclose (fd); + free (asn); + + RSA_free (key); + + return 1; +} |