Permalink
Browse files

git-svn-id: svn://cherokee-project.com/cherokee/trunk@3259 5dc97367-9…

…7f1-0310-9951-d761b3857238
  • Loading branch information...
1 parent 6af69c5 commit 91be2fadfd26eb62e8c17c9c4994e8e1db5f9dee @alobbs alobbs committed May 25, 2009
View
@@ -1,5 +1,12 @@
2009-05-25 Alvaro Lopez Ortega <alvaro@octality.com>
+ * cherokee/Makefile.am, cherokee/cryptor_libssl_dh_1024.c,
+ cherokee/cryptor_libssl_dh_512.c, cherokee/cryptor_libssl.c,
+ cherokee/cryptor_libssl_dh_2048.c, admin/PageAdvanced.py,
+ cherokee/cryptor_libssl_dh_4096.c, contrib/make-dh_params.sh: Add
+ support for DH parameters. Patch by Arnaud Cornet. Thanks!!
+ http://code.google.com/p/cherokee/issues/detail?id=457
+
* cherokee/rule_exists.c, cherokee/rule_exists.h: Adds a new
parameter to allow the rule to select only files, or any sort of
directory entries.
View
@@ -27,7 +27,11 @@
("server!iocache!min_file_size", validations.is_positive_int),
("server!iocache!max_file_size", validations.is_positive_int),
("server!iocache!lasting_stat", validations.is_positive_int),
- ("server!iocache!lasting_mmap", validations.is_positive_int)
+ ("server!iocache!lasting_mmap", validations.is_positive_int),
+ ("server!tls!dh_param512", (validations.is_local_file_exists, 'cfg')),
+ ("server!tls!dh_param1024", (validations.is_local_file_exists, 'cfg')),
+ ("server!tls!dh_param2048", (validations.is_local_file_exists, 'cfg')),
+ ("server!tls!dh_param4096", (validations.is_local_file_exists, 'cfg'))
]
WARNING = N_('<p><b>WARNING</b>: This section contains advanced configuration parameters. Changing things is not recommended unless you really know what you are doing.</p>')
@@ -53,6 +57,10 @@
NOTE_IO_MAX_SIZE = N_('Files over this size will not be cached.')
NOTE_IO_LAST_STAT = N_('How long the file information should last cached without refreshing it.')
NOTE_IO_LAST_MMAP = N_('How long the file content should last cached.')
+NOTE_DH512 = N_('Path DH parameters PEM file (512 bits).')
+NOTE_DH1024 = N_('Path DH parameters PEM file (1024 bits).')
+NOTE_DH2048 = N_('Path DH parameters PEM file (2048 bits).')
+NOTE_DH4096 = N_('Path DH parameters PEM file (4096 bits).')
HELPS = [('config_advanced', N_('Advanced'))]
@@ -111,12 +119,21 @@ def _render_special_files (self):
self.AddPropEntry (table, _('PID file'), 'server!pid_file', _(NOTE_PID_FILE))
return self.Indent(table)
+ def _render_tls (self):
+ table = TableProps()
+ self.AddPropEntry (table, _('Diffie Hellman parameters (512 bits)'), 'server!tls!dh_param512', _(NOTE_DH512))
+ self.AddPropEntry (table, _('Diffie Hellman parameters (1024 bits)'), 'server!tls!dh_param1024', _(NOTE_DH1024))
+ self.AddPropEntry (table, _('Diffie Hellman parameters (2048 bits)'), 'server!tls!dh_param2048', _(NOTE_DH2048))
+ self.AddPropEntry (table, _('Diffie Hellman parameters (4096 bits)'), 'server!tls!dh_param4096', _(NOTE_DH4096))
+ return self.Indent(table)
+
def _render_content (self):
tabs = []
tabs += [(_('Connections'), self._render_performance())]
tabs += [(_('Resources'), self._render_resources())]
tabs += [(_('I/O cache'), self._render_iocache())]
tabs += [(_('Special Files'), self._render_special_files())]
+ tabs += [(_('TLS'), self._render_tls())]
txt = "<h1>%s</h1>" % (_('Advanced configuration'))
txt += self.Dialog(WARNING, 'warning')
View
@@ -1024,6 +1024,12 @@ cryptor_libssl = \
cryptor_libssl.c \
cryptor_libssl.h
+cryptor_libssl_dist = \
+cryptor_libssl_dh_512.c \
+cryptor_libssl_dh_1024.c \
+cryptor_libssl_dh_2048.c \
+cryptor_libssl_dh_4096.c
+
libplugin_libssl_la_LDFLAGS = $(module_ldflags) $(TLS_LIBS)
libplugin_libssl_la_SOURCES = $(cryptor_libssl)
libplugin_libssl_la_CFLAGS = $(TLS_CFLAGS)
@@ -1627,6 +1633,7 @@ $(validator_mysql) \
$(handler_dbslayer) \
$(cherokeedeps_DATA) \
$(WINDOWS_PORT_FILES) \
+$(cryptor_libssl_dist) \
loader.autoconf.h \
loader.autoconf.inc
View
@@ -48,6 +48,15 @@
#define ENTRIES "crypto,ssl"
+static DH *dh_param_512 = NULL;
+static DH *dh_param_1024 = NULL;
+static DH *dh_param_2048 = NULL;
+static DH *dh_param_4096 = NULL;
+
+#include "cryptor_libssl_dh_512.c"
+#include "cryptor_libssl_dh_1024.c"
+#include "cryptor_libssl_dh_2048.c"
+#include "cryptor_libssl_dh_4096.c"
static ret_t
_free (cherokee_cryptor_libssl_t *cryp)
@@ -64,16 +73,84 @@ _free (cherokee_cryptor_libssl_t *cryp)
return ret_ok;
}
+static ret_t
+try_read_dh_param(cherokee_config_node_t *conf,
+ DH **dh,
+ int bitsize)
+{
+ ret_t ret;
+ cherokee_buffer_t *buf;
+ FILE *paramfile = NULL;
+ cherokee_buffer_t confentry = CHEROKEE_BUF_INIT;
+
+ cherokee_buffer_add_va (&confentry, "dh_param%d", bitsize);
+
+ /* Read the configuration parameter
+ */
+ ret = cherokee_config_node_read (conf, confentry.buf, &buf);
+ if (ret != ret_ok) {
+ ret = ret_ok;
+ goto out;
+ }
+
+ /* Read the file
+ */
+ paramfile = fopen (buf->buf, "r");
+ if (paramfile == NULL) {
+ TRACE(ENTRIES, "Cannot open file %s\n", buf->buf);
+ ret = ret_file_not_found;
+ goto out;
+ }
+
+ /* Process the content
+ */
+ *dh = PEM_read_DHparams (paramfile, NULL, NULL, NULL);
+ if (*dh == NULL) {
+ TRACE(ENTRIES, "Failed to load PEM %s\n", buf->buf);
+ ret = ret_error;
+ goto out;
+ }
+
+ ret = ret_ok;
+
+out:
+ /* Clean up
+ */
+ if (paramfile != NULL) {
+ fclose (paramfile);
+ }
+
+ cherokee_buffer_mrproper (&confentry);
+ return ret;
+}
static ret_t
_configure (cherokee_cryptor_t *cryp,
cherokee_config_node_t *conf,
cherokee_server_t *srv)
{
UNUSED(cryp);
- UNUSED(conf);
UNUSED(srv);
+ ret_t ret;
+ cherokee_buffer_t *buf;
+
+ ret = try_read_dh_param (conf, &dh_param_512, 512);
+ if (ret != ret_ok)
+ return ret;
+
+ ret = try_read_dh_param (conf, &dh_param_1024, 1024);
+ if (ret != ret_ok)
+ return ret;
+
+ ret = try_read_dh_param (conf, &dh_param_2048, 2048);
+ if (ret != ret_ok)
+ return ret;
+
+ ret = try_read_dh_param (conf, &dh_param_4096, 4096);
+ if (ret != ret_ok)
+ return ret;
+
return ret_ok;
}
@@ -157,6 +234,25 @@ openssl_sni_servername_cb (SSL *ssl, int *ad, void *arg)
}
#endif
+static DH *
+tmp_dh_cb (SSL *ssl, int export, int keylen)
+{
+ switch (keylen) {
+ case 512:
+ if (dh_param_512) return dh_param_512;
+ return get_dh512();
+ case 1024:
+ if (dh_param_1024) return dh_param_1024;
+ return get_dh1024();
+ case 2048:
+ if (dh_param_2048) return dh_param_2048;
+ return get_dh2048();
+ case 4096:
+ if (dh_param_4096) return dh_param_4096;
+ return get_dh4096();
+ }
+ return NULL;
+}
static ret_t
_vserver_new (cherokee_cryptor_t *cryp,
@@ -170,7 +266,7 @@ _vserver_new (cherokee_cryptor_t *cryp,
CHEROKEE_NEW_STRUCT (n, cryptor_vserver_libssl);
UNUSED(cryp);
-
+
/* Init
*/
ret = cherokee_cryptor_vserver_init_base (CRYPTOR_VSRV(n));
@@ -187,6 +283,10 @@ _vserver_new (cherokee_cryptor_t *cryp,
return ret_error;
}
+ /* Callback to be used when a DH parameters are required
+ */
+ SSL_CTX_set_tmp_dh_callback (n->context, tmp_dh_cb);
+
/* Work around all known bugs
*/
SSL_CTX_set_options (n->context, SSL_OP_ALL);
@@ -0,0 +1,38 @@
+/* openssl dhparam -C -2 1024 */
+#ifndef HEADER_DH_H
+#include <openssl/dh.h>
+#endif
+static DH *get_dh1024()
+ {
+ static unsigned char dh1024_p[]={
+ 0x85,0x08,0xFF,0x6C,0xC1,0x0C,0x23,0x55,0xC5,0xF8,0x3D,0x47,
+ 0x6F,0x23,0x36,0xDA,0x98,0xF3,0xE4,0x56,0xCD,0xA0,0xF3,0x02,
+ 0x18,0xB0,0xCB,0xD2,0x92,0x4B,0xDC,0x76,0x2B,0x24,0x2B,0x20,
+ 0xD9,0x6D,0x5B,0x59,0xC8,0x04,0xD1,0x67,0xFA,0x53,0x5D,0x46,
+ 0xA9,0x3A,0x62,0x72,0x1D,0xE6,0x58,0x20,0xD7,0x60,0xF0,0xAD,
+ 0xCE,0x52,0xD5,0x7B,0x21,0x80,0x5A,0x18,0x78,0x86,0x17,0xD5,
+ 0xE7,0xEE,0x7D,0xC7,0x35,0xEB,0x4D,0xC1,0x4D,0x47,0x2A,0x89,
+ 0x3D,0xB1,0x70,0x41,0xCE,0x04,0x27,0xDB,0x34,0x6D,0xA3,0x0E,
+ 0x76,0xE6,0x56,0xF3,0x79,0x0B,0x95,0x59,0x97,0x4F,0x24,0x06,
+ 0xF4,0xB8,0xB7,0x5B,0xEF,0x7E,0x06,0x43,0x2A,0x8E,0x33,0x69,
+ 0x71,0x65,0x35,0xBF,0xCB,0xCD,0xB0,0x5B,
+ };
+ static unsigned char dh1024_g[]={
+ 0x02,
+ };
+ DH *dh;
+
+ if ((dh=DH_new()) == NULL) return(NULL);
+ dh->p=BN_bin2bn(dh1024_p,sizeof(dh1024_p),NULL);
+ dh->g=BN_bin2bn(dh1024_g,sizeof(dh1024_g),NULL);
+ if ((dh->p == NULL) || (dh->g == NULL))
+ { DH_free(dh); return(NULL); }
+ return(dh);
+ }
+/*
+-----BEGIN DH PARAMETERS-----
+MIGHAoGBAIUI/2zBDCNVxfg9R28jNtqY8+RWzaDzAhiwy9KSS9x2KyQrINltW1nI
+BNFn+lNdRqk6YnId5lgg12Dwrc5S1XshgFoYeIYX1efufcc1603BTUcqiT2xcEHO
+BCfbNG2jDnbmVvN5C5VZl08kBvS4t1vvfgZDKo4zaXFlNb/LzbBbAgEC
+-----END DH PARAMETERS-----
+*/
@@ -0,0 +1,52 @@
+/* openssl dhparam -C -2 2048 */
+#ifndef HEADER_DH_H
+#include <openssl/dh.h>
+#endif
+static DH *get_dh2048()
+ {
+ static unsigned char dh2048_p[]={
+ 0xC8,0xF1,0xD4,0x48,0xB6,0x11,0x5B,0x2B,0x9E,0x3D,0xE4,0x49,
+ 0x0A,0xC4,0x8A,0x0B,0xFF,0xAC,0x09,0x4F,0x88,0x91,0x08,0xB8,
+ 0x7D,0x71,0xB7,0x7D,0x87,0x44,0x09,0x70,0x15,0xFF,0x0C,0xAF,
+ 0x9D,0xCD,0xC0,0x19,0x67,0xC2,0x4D,0xF3,0x8E,0x95,0x4E,0x60,
+ 0xA3,0x99,0xC2,0x94,0x39,0x0A,0xAE,0x7D,0x71,0x88,0x87,0xBE,
+ 0x53,0x39,0x86,0x5B,0xEE,0xA4,0xC1,0xA4,0x9B,0x33,0x19,0xCD,
+ 0x64,0xFB,0x30,0xA1,0x87,0xA7,0x07,0x2D,0x34,0x82,0xD8,0xE6,
+ 0xF1,0xBB,0x9F,0x3D,0xA7,0x45,0x97,0x42,0xAE,0x1A,0x46,0x55,
+ 0xA6,0x67,0x18,0x70,0x60,0x5B,0xCA,0x0D,0x21,0xF0,0xEB,0xF3,
+ 0xF5,0x68,0xED,0x61,0xC0,0x51,0x4E,0x28,0x24,0x9E,0x77,0x23,
+ 0x7C,0xD1,0xE5,0x5A,0x0A,0xEF,0xC7,0xCC,0x0E,0x86,0xA8,0xBC,
+ 0x92,0x9F,0x8C,0xA5,0xE8,0xBD,0x75,0xB7,0x7F,0x75,0x81,0x56,
+ 0xD2,0xF9,0x68,0xA9,0x98,0x98,0x3D,0xA8,0xBC,0xBC,0xD4,0x81,
+ 0xD9,0xBE,0x0F,0x09,0x25,0x47,0x43,0xB8,0xEB,0x5C,0xE4,0xA0,
+ 0x10,0x57,0xEF,0xD8,0xDB,0x6A,0x01,0xD0,0x2A,0x7D,0xCC,0x27,
+ 0x8A,0x81,0x1C,0xEA,0xDF,0x21,0xBF,0xA1,0xF0,0xBF,0xC1,0xA1,
+ 0x12,0xFF,0xB2,0xAD,0x4F,0x41,0xF5,0x82,0x9D,0xC0,0xEE,0x2D,
+ 0x1C,0x56,0x2E,0x90,0x33,0x70,0x1A,0xFE,0x6D,0xBC,0xA4,0x8D,
+ 0x89,0x1A,0x18,0xAB,0xA9,0xAB,0xBD,0x1D,0xA6,0x57,0xD7,0x77,
+ 0x59,0xD6,0x7C,0xC7,0xEB,0x34,0x2F,0xD8,0x53,0x30,0x1A,0x2E,
+ 0x7C,0x83,0xB9,0x40,0x7A,0x2E,0xA4,0x1D,0x85,0x68,0x69,0x66,
+ 0xF8,0xAA,0x70,0x6B,
+ };
+ static unsigned char dh2048_g[]={
+ 0x02,
+ };
+ DH *dh;
+
+ if ((dh=DH_new()) == NULL) return(NULL);
+ dh->p=BN_bin2bn(dh2048_p,sizeof(dh2048_p),NULL);
+ dh->g=BN_bin2bn(dh2048_g,sizeof(dh2048_g),NULL);
+ if ((dh->p == NULL) || (dh->g == NULL))
+ { DH_free(dh); return(NULL); }
+ return(dh);
+ }
+/*
+-----BEGIN DH PARAMETERS-----
+MIIBCAKCAQEAyPHUSLYRWyuePeRJCsSKC/+sCU+IkQi4fXG3fYdECXAV/wyvnc3A
+GWfCTfOOlU5go5nClDkKrn1xiIe+UzmGW+6kwaSbMxnNZPswoYenBy00gtjm8buf
+PadFl0KuGkZVpmcYcGBbyg0h8Ovz9WjtYcBRTigknncjfNHlWgrvx8wOhqi8kp+M
+pei9dbd/dYFW0vloqZiYPai8vNSB2b4PCSVHQ7jrXOSgEFfv2NtqAdAqfcwnioEc
+6t8hv6Hwv8GhEv+yrU9B9YKdwO4tHFYukDNwGv5tvKSNiRoYq6mrvR2mV9d3WdZ8
+x+s0L9hTMBoufIO5QHoupB2FaGlm+KpwawIBAg==
+-----END DH PARAMETERS-----
+*/
@@ -0,0 +1,78 @@
+/* openssl dhparam -C -2 4096 */
+#ifndef HEADER_DH_H
+#include <openssl/dh.h>
+#endif
+static DH *get_dh4096()
+ {
+ static unsigned char dh4096_p[]={
+ 0xD2,0xB2,0x5E,0x24,0x83,0x8E,0x04,0x17,0x39,0xAB,0x99,0x5A,
+ 0xAB,0x0C,0x15,0x3C,0x95,0xE0,0xE4,0x48,0x3F,0xE4,0x22,0x48,
+ 0xCA,0x19,0xCA,0xD0,0x9E,0xA7,0x09,0xD0,0x97,0x0F,0x31,0x49,
+ 0xD3,0xC7,0x6C,0x58,0xA6,0x37,0x13,0x63,0x0E,0x5F,0xE5,0xDE,
+ 0x16,0x8E,0xB6,0xEE,0x1B,0x12,0xB3,0x25,0x90,0x2D,0x51,0xBF,
+ 0xEE,0x91,0x69,0x93,0x7E,0x83,0xF1,0x02,0xD0,0xDC,0xD9,0x2C,
+ 0xFC,0xF6,0x3E,0x34,0xB3,0x45,0x29,0xB8,0x4F,0x73,0x68,0xE9,
+ 0x39,0x6E,0xFC,0xC1,0x5A,0x16,0xB8,0xC4,0x30,0x0A,0x29,0x05,
+ 0x31,0x6F,0x93,0x09,0x31,0x67,0x98,0xA0,0x12,0x97,0x5D,0x8A,
+ 0x13,0xFF,0x7D,0x4A,0x51,0xA3,0x82,0x88,0xFA,0x6A,0xEF,0x08,
+ 0x7A,0xB8,0xA0,0x67,0x5B,0xB8,0x0F,0x2D,0x4A,0x84,0x0E,0x85,
+ 0x94,0xB7,0x90,0x0D,0x61,0x65,0x89,0x80,0xF6,0xF7,0xF2,0x28,
+ 0xF3,0x69,0x8C,0x4C,0xCD,0x4F,0x16,0xD4,0x7B,0x23,0x1A,0xBF,
+ 0x5A,0xFC,0x36,0xD3,0x39,0x14,0xA2,0x17,0xFA,0x65,0x79,0xFC,
+ 0x8D,0xD0,0x67,0x6A,0x36,0x72,0x30,0x47,0x2F,0x23,0xB0,0x2F,
+ 0xEA,0x1F,0x60,0xBD,0x20,0xA1,0x38,0x6C,0xE7,0x6B,0xF1,0x14,
+ 0x2E,0x41,0x39,0xEB,0x87,0x91,0xE2,0x88,0x17,0x88,0x55,0x07,
+ 0x1C,0x2D,0xA7,0xBB,0x5E,0x97,0x0A,0x10,0x4A,0x17,0xD6,0x60,
+ 0x27,0xCB,0xC4,0xF9,0x07,0xAD,0xA2,0x58,0x0F,0xBE,0xE3,0x0A,
+ 0xC8,0xCA,0xEB,0x5D,0x2E,0xD7,0x02,0xE1,0x2F,0xFC,0x7C,0xD1,
+ 0x4F,0xB0,0x65,0xF0,0x6A,0xED,0xDE,0xEE,0xD1,0x45,0x69,0x89,
+ 0xB6,0x70,0x7D,0x32,0x73,0x62,0x46,0xE4,0x91,0x0D,0x59,0xFD,
+ 0xB1,0x38,0x83,0x69,0xA8,0xAF,0xCF,0x24,0x10,0xD2,0x11,0x6B,
+ 0xC3,0x42,0xF0,0xF8,0xB6,0xC2,0xB9,0xF0,0xB1,0x0D,0x1C,0x5D,
+ 0xA5,0x22,0x40,0xA0,0xCB,0x3A,0x26,0xD7,0xD3,0x48,0xB1,0xA4,
+ 0x18,0x96,0xED,0xF0,0xEB,0x39,0x41,0x5D,0x1C,0xEE,0xC4,0xCA,
+ 0x23,0x57,0x91,0xBE,0x1E,0x5E,0x78,0xE7,0xE4,0x1B,0x75,0xB5,
+ 0x7C,0x28,0x41,0x2D,0xAE,0x9F,0xE7,0xD3,0xFD,0xE6,0x8D,0xE7,
+ 0x75,0x7F,0x8C,0xFE,0x6F,0x8F,0xEF,0x29,0xB9,0x51,0xAB,0xCB,
+ 0x37,0x12,0x10,0xD6,0x60,0xE8,0xD1,0xB2,0x9C,0x3E,0xA9,0xF5,
+ 0x6A,0x4E,0x43,0x12,0x46,0x3E,0x23,0x43,0x26,0x2C,0x9D,0xEB,
+ 0x73,0x7A,0x0C,0xD1,0x40,0x58,0x5F,0xE5,0x2C,0xE5,0x0E,0xFF,
+ 0xA8,0x61,0xBD,0x88,0x87,0x29,0x13,0x75,0x31,0xAA,0x78,0x8D,
+ 0xAD,0x59,0x8C,0x9D,0x8C,0xB1,0x14,0xC5,0xC5,0x60,0x80,0xB7,
+ 0x4C,0xAE,0x82,0xA5,0xC4,0x5A,0xEE,0x76,0x4D,0x7C,0xF0,0x1B,
+ 0x97,0x70,0x53,0xCE,0x4E,0x38,0x46,0x15,0xAF,0x0D,0x09,0xD0,
+ 0xCB,0x48,0x26,0xA8,0x88,0xA4,0x78,0x31,0xCC,0x24,0x57,0x68,
+ 0x52,0x52,0x27,0x4F,0x75,0xA0,0x59,0xD3,0x8F,0x34,0x02,0xB5,
+ 0xD5,0x9C,0xF7,0x6B,0xD7,0xC2,0x43,0x67,0x6D,0x01,0xFD,0xA2,
+ 0xB6,0xD9,0x32,0xD5,0xB9,0x4A,0x1B,0xB8,0xC8,0x44,0x81,0x37,
+ 0x30,0xDB,0xB5,0xDC,0x2C,0x3A,0x5C,0xCE,0xF5,0x5A,0xAB,0x00,
+ 0xE9,0xD3,0x8C,0x4A,0x7C,0x49,0x36,0x84,0xBF,0xD0,0xE0,0x45,
+ 0x2C,0x74,0xC9,0x6D,0x09,0xDE,0xA1,0x33,
+ };
+ static unsigned char dh4096_g[]={
+ 0x02,
+ };
+ DH *dh;
+
+ if ((dh=DH_new()) == NULL) return(NULL);
+ dh->p=BN_bin2bn(dh4096_p,sizeof(dh4096_p),NULL);
+ dh->g=BN_bin2bn(dh4096_g,sizeof(dh4096_g),NULL);
+ if ((dh->p == NULL) || (dh->g == NULL))
+ { DH_free(dh); return(NULL); }
+ return(dh);
+ }
+/*
+-----BEGIN DH PARAMETERS-----
+MIICCAKCAgEA0rJeJIOOBBc5q5laqwwVPJXg5Eg/5CJIyhnK0J6nCdCXDzFJ08ds
+WKY3E2MOX+XeFo627hsSsyWQLVG/7pFpk36D8QLQ3Nks/PY+NLNFKbhPc2jpOW78
+wVoWuMQwCikFMW+TCTFnmKASl12KE/99SlGjgoj6au8IerigZ1u4Dy1KhA6FlLeQ
+DWFliYD29/Io82mMTM1PFtR7Ixq/Wvw20zkUohf6ZXn8jdBnajZyMEcvI7Av6h9g
+vSChOGzna/EULkE564eR4ogXiFUHHC2nu16XChBKF9ZgJ8vE+QetolgPvuMKyMrr
+XS7XAuEv/HzRT7Bl8Grt3u7RRWmJtnB9MnNiRuSRDVn9sTiDaaivzyQQ0hFrw0Lw
++LbCufCxDRxdpSJAoMs6JtfTSLGkGJbt8Os5QV0c7sTKI1eRvh5eeOfkG3W1fChB
+La6f59P95o3ndX+M/m+P7ym5UavLNxIQ1mDo0bKcPqn1ak5DEkY+I0MmLJ3rc3oM
+0UBYX+Us5Q7/qGG9iIcpE3UxqniNrVmMnYyxFMXFYIC3TK6CpcRa7nZNfPAbl3BT
+zk44RhWvDQnQy0gmqIikeDHMJFdoUlInT3WgWdOPNAK11Zz3a9fCQ2dtAf2ittky
+1blKG7jIRIE3MNu13Cw6XM71WqsA6dOMSnxJNoS/0OBFLHTJbQneoTMCAQI=
+-----END DH PARAMETERS-----
+*/
Oops, something went wrong.

0 comments on commit 91be2fa

Please sign in to comment.