summaryrefslogtreecommitdiff
path: root/make
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-05 20:07:25 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-05 20:07:25 +0000
commitf22b48724942fc07423c7a3c4540500c5bb4200a (patch)
treefe295c46f0f0afc27b827b0f7829c22a70e813d2 /make
parentb0e469b0bbdbc76692364e1f52ef613cc02a2a06 (diff)
Fix for feature request in bug #262, needs a bit of QA. Simpler prompting for gnutls cert generation in configure, we now use our nice configuration system to prompt for the more important details,
which we use to fill in a certtool template. Much nicer. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6890 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'make')
-rw-r--r--make/configure.pm14
-rw-r--r--make/gnutlscert.pm114
2 files changed, 127 insertions, 1 deletions
diff --git a/make/configure.pm b/make/configure.pm
index d151629f8..dd2dc9089 100644
--- a/make/configure.pm
+++ b/make/configure.pm
@@ -11,7 +11,7 @@ package make::configure;
use Exporter 'import';
use POSIX;
use make::utilities;
-@EXPORT = qw(promptnumeric dumphash is_dir getmodules getrevision getcompilerflags getlinkerflags getdependencies resolve_directory yesno showhelp);
+@EXPORT = qw(promptnumeric dumphash is_dir getmodules getrevision getcompilerflags getlinkerflags getdependencies resolve_directory yesno showhelp promptstring);
my $no_svn = 0;
@@ -148,6 +148,18 @@ sub promptnumeric($$)
}
}
+sub promptstring($$)
+{
+ my ($prompt,$default) = @_;
+ my $var;
+ print "$prompt\n";
+ print "[\033[1;32m$default\033[0m] -> ";
+ chomp($var = <STDIN>);
+ $var = $default if $var eq "";
+ print "\n";
+ return $var;
+}
+
sub dumphash()
{
print "\n\033[1;32mPre-build configuration is complete!\033[0m\n\n";
diff --git a/make/gnutlscert.pm b/make/gnutlscert.pm
new file mode 100644
index 000000000..d05f6f6a2
--- /dev/null
+++ b/make/gnutlscert.pm
@@ -0,0 +1,114 @@
+package make::gnutlscert;
+
+use Exporter 'import';
+use make::configure;
+@EXPORT = qw(make_gnutls_cert);
+
+
+sub make_gnutls_cert()
+{
+ open (FH, ">certtool.template");
+ my $timestr = time();
+ my $org = promptstring("Please enter the organization name", "My IRC Network");
+ my $unit = promptstring("Please enter the unit Name", "Server Admins");
+ my $state = promptstring("Pleae enter your state (two letter code)", "CA");
+ my $country = promptstring("Please enter your country", "Oompa Loompa Land");
+ my $commonname = promptstring("Please enter the certificate common name (hostname)", "irc.mynetwork.com");
+ my $email = promptstring("Please enter a contact email address", "oompa\@loompa.com");
+ print FH <<__END__;
+# X.509 Certificate options
+#
+# DN options
+
+# The organization of the subject.
+organization = "$org"
+
+# The organizational unit of the subject.
+unit = "$unit"
+
+# The locality of the subject.
+# locality =
+
+# The state of the certificate owner.
+state = "$state"
+
+# The country of the subject. Two letter code.
+country = $country
+
+# The common name of the certificate owner.
+cn = "$commonname"
+
+# A user id of the certificate owner.
+#uid = "clauper"
+
+# If the supported DN OIDs are not adequate you can set
+# any OID here.
+# For example set the X.520 Title and the X.520 Pseudonym
+# by using OID and string pairs.
+#dn_oid = "2.5.4.12" "Dr." "2.5.4.65" "jackal"
+
+# This is deprecated and should not be used in new
+# certificates.
+# pkcs9_email = "none\@none.org"
+
+# The serial number of the certificate
+serial = $timestr
+
+# In how many days, counting from today, this certificate will expire.
+expiration_days = 700
+
+# X.509 v3 extensions
+
+# A dnsname in case of a WWW server.
+#dns_name = "www.none.org"
+
+# An IP address in case of a server.
+#ip_address = "192.168.1.1"
+
+# An email in case of a person
+email = "$email"
+
+# An URL that has CRLs (certificate revocation lists)
+# available. Needed in CA certificates.
+#crl_dist_points = "http://www.getcrl.crl/getcrl/"
+
+# Whether this is a CA certificate or not
+#ca
+
+# Whether this certificate will be used for a TLS client
+tls_www_client
+
+# Whether this certificate will be used for a TLS server
+tls_www_server
+
+# Whether this certificate will be used to sign data (needed
+# in TLS DHE ciphersuites).
+signing_key
+
+# Whether this certificate will be used to encrypt data (needed
+# in TLS RSA ciphersuites). Note that it is prefered to use different
+# keys for encryption and signing.
+encryption_key
+
+# Whether this key will be used to sign other certificates.
+cert_signing_key
+
+# Whether this key will be used to sign CRLs.
+crl_signing_key
+
+# Whether this key will be used to sign code.
+code_signing_key
+
+# Whether this key will be used to sign OCSP data.
+ocsp_signing_key
+
+# Whether this key will be used for time stamping.
+time_stamping_key
+__END__
+close(FH);
+system("certtool --generate-privkey --outfile key.pem");
+system("certtool --generate-self-signed --load-privkey key.pem --outfile cert.pem --template certtool.template");
+unlink("certtool.template");
+}
+
+1;