From de5131875f4ee71b7b6fd21c3db59df1d55d1f3a Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 1 Aug 2011 20:59:42 +0000 Subject: [PATCH] LRN: added new file --- .../gnunet-transport-certificate-creation.c | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/transport/gnunet-transport-certificate-creation.c diff --git a/src/transport/gnunet-transport-certificate-creation.c b/src/transport/gnunet-transport-certificate-creation.c new file mode 100644 index 000000000..1256b93ba --- /dev/null +++ b/src/transport/gnunet-transport-certificate-creation.c @@ -0,0 +1,116 @@ +#include "platform.h" +#include "gnunet_disk_lib.h" +#include "gnunet_os_lib.h" + +/* GNUnet TLS certificate shell scricpt + Creates a TSL certificate to use with HTTPS transport plugin +*/ + +void removecerts (char *file1, char *file2) +{ + if (GNUNET_DISK_file_test (file1) == GNUNET_YES) + { + CHMOD (file1, 0777); + REMOVE (file1); + } + if (GNUNET_DISK_file_test (file2) == GNUNET_YES) + { + CHMOD (file2, 0777); + REMOVE (file2); + } +} + +int +main (int argc, char **argv) +{ + struct GNUNET_OS_Process *openssl; + enum GNUNET_OS_ProcessStatusType status_type; + unsigned long code; + +/* +if [ $# -ne 2 ]; then + exit 1 +fi +*/ + if (argc != 3) + return 1; + +/* +rm -f $1 $2 +*/ + removecerts (argv[1], argv[2]); + /* Create RSA Private Key */ +/* +openssl genrsa -out $1 1024 2> /dev/null +*/ + openssl = GNUNET_OS_start_process (NULL, NULL, "openssl", "openssl", "genrsa", "-out", argv[1], "1024", NULL); +/* +if [ $? -ne 0 ]; then + rm -f $1 $2 + exit 1 +fi +*/ + if (openssl == NULL) + return 2; + if (GNUNET_OS_process_wait (openssl) != GNUNET_OK) + { + GNUNET_OS_process_kill (openssl, SIGTERM); + removecerts (argv[1], argv[2]); + return 3; + } + if (GNUNET_OS_process_status (openssl, &status_type, &code) != GNUNET_OK) + { + GNUNET_OS_process_kill (openssl, SIGTERM); + removecerts (argv[1], argv[2]); + return 4; + } + if (status_type != GNUNET_OS_PROCESS_EXITED || code != 0) + { + GNUNET_OS_process_kill (openssl, SIGTERM); + removecerts (argv[1], argv[2]); + return 5; + } + GNUNET_OS_process_close (openssl); + + /* Create a self-signed certificate in batch mode using rsa key*/ +/* + openssl req -batch -days 365 -out $2 -new -x509 -key $1 2> /dev/null +*/ + openssl = GNUNET_OS_start_process (NULL, NULL, "openssl", "openssl", "req", "-batch", "-days", "365", "-out", argv[2], "-new", "-x509", "-key", argv[1], NULL); +/* +if [ $? -ne 0 ]; then + rm -f $1 $2 + exit 1 +fi +*/ + if (openssl == NULL) + return 6; + if (GNUNET_OS_process_wait (openssl) != GNUNET_OK) + { + GNUNET_OS_process_kill (openssl, SIGTERM); + removecerts (argv[1], argv[2]); + return 7; + } + if (GNUNET_OS_process_status (openssl, &status_type, &code) != GNUNET_OK) + { + GNUNET_OS_process_kill (openssl, SIGTERM); + removecerts (argv[1], argv[2]); + return 8; + } + if (status_type != GNUNET_OS_PROCESS_EXITED || code != 0) + { + GNUNET_OS_process_kill (openssl, SIGTERM); + removecerts (argv[1], argv[2]); + return 9; + } + GNUNET_OS_process_close (openssl); +/* +chmod 0400 $1 $2 +*/ + CHMOD (argv[1], 0400); + CHMOD (argv[2], 0400); +/* +exit 0 +*/ + return 0; +} -- 2.25.1