From: Christian Grothoff Date: Mon, 1 Aug 2011 20:59:42 +0000 (+0000) Subject: LRN: added new file X-Git-Tag: initial-import-from-subversion-38251~17539 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=de5131875f4ee71b7b6fd21c3db59df1d55d1f3a;p=oweals%2Fgnunet.git LRN: added new file --- 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; +}