[libevent-rpc-perl] 01/09: Imported Upstream version 1.06

gregor herrmann gregoa at debian.org
Sun Sep 20 22:04:17 UTC 2015


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to branch master
in repository libevent-rpc-perl.

commit 71c293d2e0b7b9735e6dc8ef6ba7ccff62fa3117
Author: gregor herrmann <gregoa at debian.org>
Date:   Sun Sep 20 23:48:51 2015 +0200

    Imported Upstream version 1.06
---
 Changes                                 |  15 ++-
 MANIFEST                                |   1 +
 META.json                               |  47 +++++++++
 META.yml                                |  51 +++++-----
 Makefile.PL                             |   2 +-
 README                                  | 166 --------------------------------
 examples/Test_class.pm                  |   1 -
 examples/client.pl                      |   1 -
 examples/server.pl                      |   1 -
 lib/Event/RPC.pm                        |   2 +-
 lib/Event/RPC/Client.pm                 |  24 ++++-
 lib/Event/RPC/Logger.pm                 |   1 -
 lib/Event/RPC/Loop.pm                   |   1 -
 lib/Event/RPC/Loop/AnyEvent.pm          |   1 -
 lib/Event/RPC/Loop/Event.pm             |   1 -
 lib/Event/RPC/Loop/Glib.pm              |   1 -
 lib/Event/RPC/Message.pm                |   1 -
 lib/Event/RPC/Server.pm                 |  45 +++++----
 t/04.cnct-auth-ssl-verifypeer-wrongca.t |   2 +-
 t/Event_RPC_Test.pm                     |   1 -
 t/Event_RPC_Test_Server.pm              | 153 +++++++++++++++--------------
 t/ssl/ca.crt                            |  58 +++++------
 t/ssl/ca.key                            | 100 +++++++++----------
 t/ssl/server-noca.crt                   |  45 ++++++---
 t/ssl/server.crt                        |  47 +++++----
 t/ssl/server.csr                        |  35 +++++--
 t/ssl/server.key                        |  65 ++++++++++---
 27 files changed, 425 insertions(+), 443 deletions(-)

diff --git a/Changes b/Changes
index be458bb..a8913d8 100644
--- a/Changes
+++ b/Changes
@@ -1,7 +1,18 @@
-$Id: Changes,v 1.21 2014-01-28 15:40:22 joern Exp $
-
 Revision history and release notes for Event::RPC:
 
+1.06 Sun Sep 20, 2015, joern
+    Features:
+    - New 'ssl_opts' attribute for Server and Client to
+      give more control over the SSL connection.
+
+    Bugfixes:
+    - Some tests failed due to stronger hostname verifcation
+      in IO::Socket:SSL >= 2.017. Fixed that by adding
+      proper certificates with cn 'localhost' and a test
+      which verifies the failing connection with wrong
+      hostname. Thanks to ppisar[...]redhat.com. This
+      fixes rt #106874.
+
 1.05 Tue Feb 28, 2014, joern
     Features:
     - New Method set_max_packet_size (Client and Server)
diff --git a/MANIFEST b/MANIFEST
index 0b7bab4..e471360 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -41,3 +41,4 @@ examples/Test_class.pm
 examples/ssl/server.key
 examples/ssl/server.csr
 examples/ssl/server.crt
+META.json                                Module JSON meta-data (added by MakeMaker)
diff --git a/META.json b/META.json
new file mode 100644
index 0000000..ce318f3
--- /dev/null
+++ b/META.json
@@ -0,0 +1,47 @@
+{
+   "abstract" : "unknown",
+   "author" : [
+      "unknown"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690",
+   "license" : [
+      "unknown"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "Event-RPC",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "Event" : "0",
+            "Glib" : "0",
+            "IO::Socket::INET" : "0",
+            "IO::Socket::SSL" : "0",
+            "Net::SSLeay" : "0",
+            "Storable" : "0",
+            "Test::More" : "0"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "version" : "1.06"
+}
diff --git a/META.yml b/META.yml
index 6ca2f36..47e4ea2 100644
--- a/META.yml
+++ b/META.yml
@@ -1,27 +1,28 @@
---- #YAML:1.0
-name:               Event-RPC
-version:            1.05
-abstract:           ~
-author:  []
-license:            unknown
-distribution_type:  module
-configure_requires:
-    ExtUtils::MakeMaker:  0
+---
+abstract: unknown
+author:
+  - unknown
 build_requires:
-    ExtUtils::MakeMaker:  0
-requires:
-    Event:             0
-    Glib:              0
-    IO::Socket::INET:  0
-    IO::Socket::SSL:   0
-    Net::SSLeay:       0
-    Storable:          0
-    Test::More:        0
-no_index:
-    directory:
-        - t
-        - inc
-generated_by:       ExtUtils::MakeMaker version 6.57_05
+  ExtUtils::MakeMaker: '0'
+configure_requires:
+  ExtUtils::MakeMaker: '0'
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690'
+license: unknown
 meta-spec:
-    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
-    version:  1.4
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: '1.4'
+name: Event-RPC
+no_index:
+  directory:
+    - t
+    - inc
+requires:
+  Event: '0'
+  Glib: '0'
+  IO::Socket::INET: '0'
+  IO::Socket::SSL: '0'
+  Net::SSLeay: '0'
+  Storable: '0'
+  Test::More: '0'
+version: '1.06'
diff --git a/Makefile.PL b/Makefile.PL
index e20ba8e..fd42b1a 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,4 +1,4 @@
-# $Id: Makefile.PL,v 1.3 2005/12/18 13:47:35 joern Exp $
+# $Id: Makefile.PL,v 1.2 2005/04/15 21:11:49 joern Exp $
 
 use strict;
 use ExtUtils::MakeMaker;
diff --git a/README b/README
deleted file mode 100644
index f7beba6..0000000
--- a/README
+++ /dev/null
@@ -1,166 +0,0 @@
-NAME
-    Event::RPC - Event based transparent Client/Server RPC framework
-
-SYNOPSIS
-      #-- Server Code
-      use Event::RPC::Server;
-      use My::TestModule;
-      my $server = Event::RPC::Server->new (
-          port    => 5555,
-          classes => { "My::TestModule" => { ... } },
-      );
-      $server->start;
-
-      ----------------------------------------------------------
-  
-      #-- Client Code
-      use Event::RPC::Client;
-      my $client = Event::RPC::Client->new (
-          server   => "localhost",
-          port     => 5555,
-      );
-      $client->connect;
-
-      #-- Call methods of My::TestModule on the server
-      my $obj = My::TestModule->new ( foo => "bar" );
-      my $foo = $obj->get_foo;
-
-ABSTRACT
-    Event::RPC supports you in developing Event based networking
-    client/server applications with transparent object/method access from
-    the client to the server. Network communication is optionally encrypted
-    using IO::Socket::SSL. Several event loop managers are supported due to
-    an extensible API. Currently Event, Glib and AnyEvent are implemented.
-    The latter lets you use nearly every event loop implementation available
-    for Perl. AnyEvent was invented after Event::RPC was created and thus
-    Event::RPC started using it's own abstraction model.
-
-DESCRIPTION
-    Event::RPC consists of a server and a client library. The server exports
-    a list of classes and methods, which are allowed to be called over the
-    network. More specific it acts as a proxy for objects created on the
-    server side (on demand of the connected clients) which handles client
-    side methods calls with transport of method arguments and return values.
-
-    The object proxy handles refcounting and destruction of objects created
-    by clients properly. Objects as method parameters and return values are
-    handled as well (although with some limitations, see below).
-
-    For the client the whole thing is totally transparent - once connected
-    to the server it doesn't know whether it calls methods on local or
-    remote objects.
-
-    Also the methods on the server newer know whether they are called
-    locally or from a connected client. Your application logic is not
-    affected by Event::RPC at all, at least if it has a rudimentary clean OO
-    design.
-
-    For details on implementing servers and clients please refer to the man
-    pages of Event::RPC::Server and Event::RPC::Client.
-
-REQUIREMENTS
-    Event::RPC needs either one of the following modules on the server
-    (they're not necessary on the client):
-
-      Event
-      Glib
-      AnyEvent
-
-    They're needed for event handling resp. mainloop implementation. If you
-    like to use SSL encryption you need to install
-
-      IO::Socket::SSL
-
-    As well Event::RPC makes heavy use of the
-
-      Storable
-
-    module, which is part of the Perl standard library. It's important that
-    both client and server use exactly the same version of the Storable
-    module! Otherwise Event::RPC client/server communication will fail
-    badly.
-
-INSTALLATION
-    You get the latest installation tarballs and online documentation at
-    this location:
-
-      http://www.exit1.org/Event-RPC/
-
-    If your system meets the requirements mentioned above, installation is
-    just:
-
-      perl Makefile.PL
-      make test
-      make install
-
-    To test a specific Event loop implementation, export the variable
-    EVENT_RPC_LOOP:
-
-      export EVENT_RPC_LOOP=Event::RPC::Loop::Glib
-      make test
-
-    Otherwise Event::RPC will fallback to the most appropriate module
-    installed on your system.
-
-EXAMPLES
-    The tarball includes an examples/ directory which contains two programs:
-
-      server.pl
-      client.pl
-
-    Just execute them with --help to get the usage. They do some very simple
-    communication but are good to test your setup, in particular in a mixed
-    environment.
-
-LIMITATIONS
-    Although the classes and objects on the server are accessed
-    transparently by the client there are some limitations should be aware
-    of. With a clean object oriented design these should be no problem in
-    real applications:
-
-  Direct object data manipulation is forbidden
-    All objects reside on the server and they keep there! The client just
-    has specially wrapped proxy objects, which trigger the necessary magic
-    to access the object's methods on the server. Complete objects are never
-    transferred from the server to the client, so something like this does
-    not work:
-
-      $object->{data} = "changed data";
-
-    (assuming $object is a hash ref on the server).
-
-    Only method calls are transferred to the server, so even for "simple"
-    data manipulation a method call is necessary:
-
-      $object->set_data ("changed data");
-
-    As well for reading an object attribute. Accessing a hash key will fail:
-
-      my $data = $object->{data};
-
-    Instead call a method which returns the 'data' member:
-
-      my $data = $object->get_data;
-
-  Methods may exchange objects, but not in a too complex structure
-    Event::RPC handles methods which return objects. The only requirement is
-    that they are declared as a Object returner on the server (refer to
-    Event::RPC::Server for details), but not if the object is hidden inside
-    a deep complex data structure.
-
-    An array or hash ref of objects is Ok, but not more. This would require
-    to much expensive runtime data inspection.
-
-    Object receiving parameters are more restrictive, since even hiding them
-    inside one array or hash ref is not allowed. They must be passed as a
-    direkt argument of the method subroutine.
-
-AUTHORS
-      J�rn Reder <joern at zyn dot de>
-
-COPYRIGHT AND LICENSE
-    Copyright (C) 2002-2006 by Joern Reder, All Rights Reserved.
-
-    This library is free software; you can redistribute it and/or modify it
-    under the same terms as Perl itself.
-
diff --git a/examples/Test_class.pm b/examples/Test_class.pm
index efc53fb..d639af9 100644
--- a/examples/Test_class.pm
+++ b/examples/Test_class.pm
@@ -1,4 +1,3 @@
-# $Id: Test_class.pm,v 1.2 2005/12/18 13:10:14 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2005 J�rn Reder <joern AT zyn.de>.
diff --git a/examples/client.pl b/examples/client.pl
index 5419a29..8652b8a 100755
--- a/examples/client.pl
+++ b/examples/client.pl
@@ -1,6 +1,5 @@
 #!/usr/bin/perl -w
 
-# $Id: client.pl,v 1.4 2005/12/18 14:01:13 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2005 J�rn Reder <joern AT zyn.de>.
diff --git a/examples/server.pl b/examples/server.pl
index 32edb8a..6b0ef9e 100755
--- a/examples/server.pl
+++ b/examples/server.pl
@@ -1,6 +1,5 @@
 #!/usr/bin/perl -w
 
-# $Id: server.pl,v 1.3 2005/12/18 14:01:13 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2005 J�rn Reder <joern AT zyn.de>.
diff --git a/lib/Event/RPC.pm b/lib/Event/RPC.pm
index 9c48d4f..ec9c359 100644
--- a/lib/Event/RPC.pm
+++ b/lib/Event/RPC.pm
@@ -1,6 +1,6 @@
 package Event::RPC;
 
-$VERSION  = "1.05";
+$VERSION  = "1.06";
 $PROTOCOL = "1.00";
 
 sub crypt {
diff --git a/lib/Event/RPC/Client.pm b/lib/Event/RPC/Client.pm
index 93abe3b..7eb37a6 100644
--- a/lib/Event/RPC/Client.pm
+++ b/lib/Event/RPC/Client.pm
@@ -1,4 +1,3 @@
-# $Id: Client.pm,v 1.20 2014-01-28 15:40:10 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
@@ -31,6 +30,7 @@ sub get_error_cb                { shift->{error_cb}                     }
 sub get_ssl                     { shift->{ssl}                          }
 sub get_ssl_ca_file             { shift->{ssl_ca_file}                  }
 sub get_ssl_ca_path             { shift->{ssl_ca_path}                  }
+sub get_ssl_opts                { shift->{ssl_opts}                     }
 sub get_auth_user               { shift->{auth_user}                    }
 sub get_auth_pass               { shift->{auth_pass}                    }
 sub get_connected               { shift->{connected}                    }
@@ -49,6 +49,7 @@ sub set_error_cb                { shift->{error_cb}             = $_[1] }
 sub set_ssl                     { shift->{ssl}                  = $_[1] }
 sub set_ssl_ca_file             { shift->{ssl_ca_file}          = $_[1] }
 sub set_ssl_ca_path             { shift->{ssl_ca_path}          = $_[1] }
+sub set_ssl_opts                { shift->{ssl_opts}             = $_[1] }
 sub set_auth_user               { shift->{auth_user}            = $_[1] }
 sub set_auth_pass               { shift->{auth_pass}            = $_[1] }
 sub set_connected               { shift->{connected}            = $_[1] }
@@ -71,8 +72,8 @@ sub new {
     my %par   = @_;
     my  ($server, $host, $port, $classes, $class_map, $error_cb, $timeout) =
     @par{'server','host','port','classes','class_map','error_cb','timeout'};
-    my  ($ssl, $ssl_ca_file, $auth_user, $auth_pass) =
-    @par{'ssl','ssl_ca_file','auth_user','auth_pass'};
+    my  ($ssl, $ssl_ca_file, $ssl_opts, $auth_user, $auth_pass) =
+    @par{'ssl','ssl_ca_file','ssl_opts','auth_user','auth_pass'};
 
     $server ||= '';
     $host   ||= '';
@@ -91,6 +92,7 @@ sub new {
         class_map      => $class_map,
         ssl            => $ssl,
         ssl_ca_file    => $ssl_ca_file,
+        ssl_opts       => $ssl_opts,
         auth_user      => $auth_user,
         auth_pass      => $auth_pass,
         error_cb       => $error_cb,
@@ -132,13 +134,16 @@ sub connect {
             );
         }
 
+        my $ssl_opts = $self->get_ssl_opts;
+
         $sock = IO::Socket::SSL->new(
             Proto    => 'tcp',
             PeerPort => $port,
             PeerAddr => $server,
             Type     => SOCK_STREAM,
             Timeout  => $timeout,
-            @verify_opts
+            @verify_opts,
+            ($ssl_opts?%{$ssl_opts}:()),
         )
         or croak "Can't open SSL connection to $server:$port: $IO::Socket::SSL::ERROR";
     }
@@ -469,6 +474,7 @@ Event::RPC::Client - Client API to connect to Event::RPC Servers
     ssl         => 1,
     ssl_ca_file => "some/ca.crt",
     ssl_ca_path => "some/ca/dir",
+    ssl_opts    => { SSL_verifycn_name => 'server-hostname' },
 
     timeout     => 10,
 
@@ -623,6 +629,16 @@ Path of a directory containing several trusted certificates with
 a proper index. Please refer to the OpenSSL documentation for
 details about setting up such a directory.
 
+=item B<ssl_opts>
+
+This optional parameter takes a hash reference of options
+passed to IO::Socket::SSL->new(...) to have more control
+over the SSL connection. For example you can set the
+'SSL_verifycn_name' here if the server certificate common
+name doesn't match to the hostname you use to resolve
+the server IP or use you have to use a static server IP
+address or something like that. 
+
 =back
 
 =head2 AUTHENTICATION OPTIONS
diff --git a/lib/Event/RPC/Logger.pm b/lib/Event/RPC/Logger.pm
index e7be77e..697e504 100644
--- a/lib/Event/RPC/Logger.pm
+++ b/lib/Event/RPC/Logger.pm
@@ -1,4 +1,3 @@
-# $Id: Logger.pm,v 1.7 2014-01-28 15:37:33 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
diff --git a/lib/Event/RPC/Loop.pm b/lib/Event/RPC/Loop.pm
index 1195f04..4224d6c 100644
--- a/lib/Event/RPC/Loop.pm
+++ b/lib/Event/RPC/Loop.pm
@@ -1,4 +1,3 @@
-# $Id: Loop.pm,v 1.5 2014-01-28 15:37:33 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
diff --git a/lib/Event/RPC/Loop/AnyEvent.pm b/lib/Event/RPC/Loop/AnyEvent.pm
index 5dd2e7c..cee5732 100644
--- a/lib/Event/RPC/Loop/AnyEvent.pm
+++ b/lib/Event/RPC/Loop/AnyEvent.pm
@@ -1,4 +1,3 @@
-# $Id: AnyEvent.pm,v 1.2 2014-01-28 15:37:33 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
diff --git a/lib/Event/RPC/Loop/Event.pm b/lib/Event/RPC/Loop/Event.pm
index 2543359..5e6686f 100644
--- a/lib/Event/RPC/Loop/Event.pm
+++ b/lib/Event/RPC/Loop/Event.pm
@@ -1,4 +1,3 @@
-# $Id: Event.pm,v 1.5 2014-01-28 15:37:33 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
diff --git a/lib/Event/RPC/Loop/Glib.pm b/lib/Event/RPC/Loop/Glib.pm
index 443c7ad..f6ce0c2 100644
--- a/lib/Event/RPC/Loop/Glib.pm
+++ b/lib/Event/RPC/Loop/Glib.pm
@@ -1,4 +1,3 @@
-# $Id: Glib.pm,v 1.5 2014-01-28 15:37:33 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
diff --git a/lib/Event/RPC/Message.pm b/lib/Event/RPC/Message.pm
index 8779e5c..8ff66af 100644
--- a/lib/Event/RPC/Message.pm
+++ b/lib/Event/RPC/Message.pm
@@ -1,4 +1,3 @@
-# $Id: Message.pm,v 1.9 2014-01-28 15:40:10 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
diff --git a/lib/Event/RPC/Server.pm b/lib/Event/RPC/Server.pm
index c1e8cbc..9910b5b 100644
--- a/lib/Event/RPC/Server.pm
+++ b/lib/Event/RPC/Server.pm
@@ -1,4 +1,3 @@
-# $Id: Server.pm,v 1.15 2014-01-28 15:40:10 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2006 J�rn Reder <joern AT zyn.de>.
@@ -37,6 +36,7 @@ sub get_ssl                     { shift->{ssl}                          }
 sub get_ssl_key_file            { shift->{ssl_key_file}                 }
 sub get_ssl_cert_file           { shift->{ssl_cert_file}                }
 sub get_ssl_passwd_cb           { shift->{ssl_passwd_cb}                }
+sub get_ssl_opts                { shift->{ssl_opts}                     }
 sub get_auth_required           { shift->{auth_required}                }
 sub get_auth_passwd_href        { shift->{auth_passwd_href}             }
 sub get_auth_module             { shift->{auth_module}                  }
@@ -63,6 +63,7 @@ sub set_ssl                     { shift->{ssl}                  = $_[1] }
 sub set_ssl_key_file            { shift->{ssl_key_file}         = $_[1] }
 sub set_ssl_cert_file           { shift->{ssl_cert_file}        = $_[1] }
 sub set_ssl_passwd_cb           { shift->{ssl_passwd_cb}        = $_[1] }
+sub set_ssl_opts                { shift->{ssl_opts}             = $_[1] }
 sub set_auth_required           { shift->{auth_required}        = $_[1] }
 sub set_auth_passwd_href        { shift->{auth_passwd_href}     = $_[1] }
 sub set_auth_module             { shift->{auth_module}          = $_[1] }
@@ -90,8 +91,8 @@ sub new {
     my %par = @_;
     my  ($host, $port, $classes, $name, $logger, $start_log_listener) =
     @par{'host','port','classes','name','logger','start_log_listener'};
-    my  ($ssl, $ssl_key_file, $ssl_cert_file, $ssl_passwd_cb) =
-    @par{'ssl','ssl_key_file','ssl_cert_file','ssl_passwd_cb'};
+    my  ($ssl, $ssl_key_file, $ssl_cert_file, $ssl_passwd_cb, $ssl_opts) =
+    @par{'ssl','ssl_key_file','ssl_cert_file','ssl_passwd_cb','ssl_opts'};
     my  ($auth_required, $auth_passwd_href, $auth_module, $loop) =
     @par{'auth_required','auth_passwd_href','auth_module','loop'};
     my  ($connection_hook, $auto_reload_modules, $load_modules) =
@@ -133,6 +134,7 @@ sub new {
         ssl_key_file            => $ssl_key_file,
         ssl_cert_file           => $ssl_cert_file,
         ssl_passwd_cb           => $ssl_passwd_cb,
+        ssl_opts                => $ssl_opts,
 
         auth_required           => $auth_required,
         auth_passwd_href        => $auth_passwd_href,
@@ -188,25 +190,27 @@ sub setup_listeners {
         croak "ssl_key_file not set"  unless $self->get_ssl_key_file;
         croak "ssl_cert_file not set" unless $self->get_ssl_cert_file;
 
+        my $ssl_opts = $self->get_ssl_opts;
+
         $rpc_socket = IO::Socket::SSL->new (
-                Listen          => SOMAXCONN,
-                @LocalHost,
-                LocalPort       => $port,
-                Proto           => 'tcp',
-                ReuseAddr       => 1,
-                SSL_verify_mode => 0x00,
-                SSL_key_file    => $self->get_ssl_key_file,
-                SSL_cert_file   => $self->get_ssl_cert_file,
-                SSL_passwd_cb   => $self->get_ssl_passwd_cb,
+            Listen          => SOMAXCONN,
+            @LocalHost,
+            LocalPort       => $port,
+            Proto           => 'tcp',
+            ReuseAddr       => 1,
+            SSL_key_file    => $self->get_ssl_key_file,
+            SSL_cert_file   => $self->get_ssl_cert_file,
+            SSL_passwd_cb   => $self->get_ssl_passwd_cb,
+            ($ssl_opts?%{$ssl_opts}:()),
         ) or die "can't start SSL RPC listener: $IO::Socket::SSL::ERROR";
     }
     else {
         $rpc_socket = IO::Socket::INET->new (
-                Listen    => SOMAXCONN,
-                @LocalHost,
-                LocalPort => $port,
-                Proto     => 'tcp',
-                ReuseAddr => 1,
+            Listen    => SOMAXCONN,
+            @LocalHost,
+            LocalPort => $port,
+            Proto     => 'tcp',
+            ReuseAddr => 1,
         ) or die "can't start RPC listener: $!";
     }
 
@@ -454,6 +458,7 @@ Event::RPC::Server - Simple API for event driven RPC servers
       ssl_key_file        => "server.key",
       ssl_cert_file       => "server.crt",
       ssl_passwd_cb       => sub { "topsecret" },
+      ssl_opts            => { ... },
 
       auth_required       => 1,
       auth_passwd_href    => { $user => Event::RPC->crypt($user,$pass) },
@@ -620,6 +625,12 @@ password, e.g.
 But note: having the password in plaintext in your program code is
 insecure!
 
+=item B<ssl_opts>
+
+This optional parameter takes a hash reference of options
+passed to IO::Socket::SSL->new(...) to have more control
+over the server SSL listener. 
+
 =back
 
 =head2 AUTHENTICATION OPTIONS
diff --git a/t/04.cnct-auth-ssl-verifypeer-wrongca.t b/t/04.cnct-auth-ssl-verifypeer-wrongca.t
index 850c317..d5cd433 100644
--- a/t/04.cnct-auth-ssl-verifypeer-wrongca.t
+++ b/t/04.cnct-auth-ssl-verifypeer-wrongca.t
@@ -51,7 +51,7 @@ ok($@, "ssl connection failed with wrong ca");
 
 # now correct ca to shut down server
 $client->set_ssl_ca_file("t/ssl/ca.crt");
-ok($client->connect, "connect without ssl");
+ok($client->connect, "connect with corract ca");
 
 # disconnect client
 ok ($client->disconnect, "client disconnected");
diff --git a/t/Event_RPC_Test.pm b/t/Event_RPC_Test.pm
index 34bacdc..3b71390 100644
--- a/t/Event_RPC_Test.pm
+++ b/t/Event_RPC_Test.pm
@@ -1,4 +1,3 @@
-# $Id: Event_RPC_Test.pm,v 1.5 2014-01-27 13:38:51 joern Exp $
 
 #-----------------------------------------------------------------------
 # Copyright (C) 2002-2005 J�rn Reder <joern AT zyn.de>.
diff --git a/t/Event_RPC_Test_Server.pm b/t/Event_RPC_Test_Server.pm
old mode 100755
new mode 100644
index 4f4f346..a566c04
--- a/t/Event_RPC_Test_Server.pm
+++ b/t/Event_RPC_Test_Server.pm
@@ -20,21 +20,21 @@ sub start_server {
         #-- (20 times with a usleep of 0.25, so the
         #--  overall timeout is 5 seconds)
         for ( 1..20 ) {
-	    eval {
-	        Event::RPC::Client->log_connect (
-		    server => "localhost",
-		    port   => $opts{p}+1,
-	        );
-	    };
-	    #-- return to client code if connect succeeded
-	    return $server_pid if !$@;
-	    #-- bail out if the limit is reached
-	    if ( $_ == 20 ) {
-	        die "Couldn't start server: $@";
-	    }
-	    #-- wait a quarter second...
-	    select(undef, undef, undef, 0.25);
-	}
+            eval {
+                Event::RPC::Client->log_connect (
+                    server => "localhost",
+                    port   => $opts{p}+1,
+                );
+            };
+            #-- return to client code if connect succeeded
+            return $server_pid if !$@;
+            #-- bail out if the limit is reached
+            if ( $_ == 20 ) {
+                die "Couldn't start server: $@";
+            }
+            #-- wait a quarter second...
+            select(undef, undef, undef, 0.25);
+        }
         #-- Client is finished here
         return $server_pid;
     }
@@ -50,40 +50,40 @@ sub start_server {
     #-- %opts hash
     my %ssl_args;
     if ( $opts{s} ) {
-      %ssl_args = (
-        ssl => 1,
-	ssl_key_file  => 't/ssl/server.key',
-	ssl_cert_file => ($opts{sf}||'t/ssl/server.crt'),
-	ssl_passwd_cb => sub { 'eventrpc' },
-      );
-      if ( not -f 't/ssl/server.key' ) {
-	print "please execute from toplevel directory\n";
-      }
+        %ssl_args = (
+            ssl           => 1,
+            ssl_key_file  => 't/ssl/server.key',
+            ssl_cert_file => ($opts{sf}||'t/ssl/server.crt'),
+            ssl_passwd_cb => sub { 'eventrpc' },
+        );
+        if ( not -f 't/ssl/server.key' ) {
+            print "please execute from toplevel directory\n";
+        }
     }
 
     my %auth_args;
     if ( $opts{a} ) {
-      my ($user, $pass) = split(":", $opts{a}); 
-      $pass = Event::RPC->crypt($user, $pass);
-      %auth_args = (
-	auth_required    => 1,
-	auth_passwd_href => { $user => $pass },
-      );
+        my ($user, $pass) = split(":", $opts{a}); 
+        $pass = Event::RPC->crypt($user, $pass);
+        %auth_args = (
+            auth_required    => 1,
+            auth_passwd_href => { $user => $pass },
+        );
     }
 
     #-- Create a logger object
     my $logger = Event::RPC::Logger->new (
-	    min_level => (defined $opts{l} ? $opts{l} : 4),
-	    fh_lref   => [ \*STDOUT ],
+        min_level => (defined $opts{l} ? $opts{l} : 4),
+        fh_lref   => [ \*STDOUT ],
     );
 
     #-- Create a loop object
     my $loop;
     my $loop_module = $opts{L};
     if ( $loop_module ) {
-	    eval "use $loop_module";
-	    die $@ if $@;
-	    $loop = $loop_module->new();
+        eval "use $loop_module";
+        die $@ if $@;
+        $loop = $loop_module->new();
     }
     
     my $port = $opts{p} || 5555;
@@ -94,48 +94,47 @@ sub start_server {
     #-- exported interface
     my $server;
     $server = Event::RPC::Server->new (
-      name               => "test daemon",
-      port               => $port,
-#      logger             => $logger,
-      loop               => $loop,
-      start_log_listener => 1,
-      load_modules       => 0,
-      %auth_args,
-      %ssl_args,
-      classes => {
-        	'Event_RPC_Test'   => {
-        	  new         	   => '_constructor',
-        	  set_data    	   => 1,
-        	  get_data    	   => 1,
-        	  hello       	   => 1,
-        	  quit	      	   => 1,
-        	  clone	      	   => '_object',
-        	  multi		   => '_object',
-        	  get_object2      => '_object',
-        	  new_object2      => '_object',
-        	  echo		   => 1,
-                  get_cid          => 1,
-                  get_object_cnt   => 1,
-                  get_undef_object => '_object',
-                  get_big_data_struct => 1,
-                  async_call_1     => 'object:async:reeintrant'
-        	},
-        	'Event_RPC_Test2'  => {
-        	  new         	   => '_constructor',
-        	  set_data         => 1,
-        	  get_data         => 1,
-                  get_object_copy  => 1,
-        	},
-      },
-      connection_hook   => sub {
-      	  my ($conn, $event) = @_;
-	  return if $event eq 'connect';
-	  --$disconnect_cnt;
-	  $server->stop
-	      if $disconnect_cnt <= 0 &&
-	         $server->get_clients_connected == 0;
-	  1;
-      },
+        name               => "test daemon",
+        port               => $port,
+        loop               => $loop,
+        start_log_listener => 1,
+        load_modules       => 0,
+        %auth_args,
+        %ssl_args,
+        classes => {
+            'Event_RPC_Test'   => {
+                new              => '_constructor',
+                set_data         => 1,
+                get_data         => 1,
+                hello            => 1,
+                quit             => 1,
+                clone            => '_object',
+                multi            => '_object',
+                get_object2      => '_object',
+                new_object2      => '_object',
+                echo             => 1,
+                get_cid          => 1,
+                get_object_cnt   => 1,
+                get_undef_object => '_object',
+                get_big_data_struct => 1,
+                async_call_1     => 'object:async:reeintrant'
+            },
+            'Event_RPC_Test2'  => {
+                new              => '_constructor',
+                set_data         => 1,
+                get_data         => 1,
+                get_object_copy  => 1,
+            },
+        },
+        connection_hook   => sub {
+            my ($conn, $event) = @_;
+            return if $event eq 'connect';
+            --$disconnect_cnt;
+            $server->stop
+                if $disconnect_cnt <= 0 &&
+                    $server->get_clients_connected == 0;
+            1;
+        },
     );
 
     $server->set_max_packet_size($opts{M}) if $opts{M};
diff --git a/t/ssl/ca.crt b/t/ssl/ca.crt
index c613ebd..a73e817 100644
--- a/t/ssl/ca.crt
+++ b/t/ssl/ca.crt
@@ -1,31 +1,33 @@
 -----BEGIN CERTIFICATE-----
-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
+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
-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
+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
+rfO3
 -----END CERTIFICATE-----
diff --git a/t/ssl/ca.key b/t/ssl/ca.key
index 6a4bf18..ac5802c 100644
--- a/t/ssl/ca.key
+++ b/t/ssl/ca.key
@@ -1,54 +1,54 @@
 -----BEGIN RSA PRIVATE KEY-----
 Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,1F27D6997FA6C191
+DEK-Info: AES-256-CBC,A048B0CBE0F2D36A9628AB62487BE247
 
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/t/ssl/server-noca.crt b/t/ssl/server-noca.crt
index 1bcdfbf..38da2b5 100644
--- a/t/ssl/server-noca.crt
+++ b/t/ssl/server-noca.crt
@@ -1,17 +1,32 @@
 -----BEGIN CERTIFICATE-----
-MIICozCCAgwCCQC7s/EOvPkeSTANBgkqhkiG9w0BAQQFADCBlTELMAkGA1UEBhMC
-REUxETAPBgNVBAgTCElyZ2VuZHdvMQ4wDAYDVQQHEwVLb2VsbjESMBAGA1UEChMJ
-ZXhpdDEub3JnMR0wGwYDVQQLExRTb2Z0d2FyZSBEZXZlbG9wbWVudDETMBEGA1UE
-AxQKSvZybiBSZWRlcjEbMBkGCSqGSIb3DQEJARYMam9lcm5AenluLmRlMB4XDTA1
-MDMxMzE3NDg1NloXDTE1MDEyMDE3NDg1NlowgZUxCzAJBgNVBAYTAkRFMREwDwYD
-VQQIEwhJcmdlbmR3bzEOMAwGA1UEBxMFS29lbG4xEjAQBgNVBAoTCWV4aXQxLm9y
-ZzEdMBsGA1UECxMUU29mdHdhcmUgRGV2ZWxvcG1lbnQxEzARBgNVBAMUCkr2cm4g
-UmVkZXIxGzAZBgkqhkiG9w0BCQEWDGpvZXJuQHp5bi5kZTCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEApKvgMocsWLb3SQw1UukxcCORSDYgge1d1LAGIPlRtLRh
-CCNfUufY8Jslmn/4hZI4wpeRQ5M2NLMkP8kaCgmMviyl20I+jCikLqQFTTMmwU35
-uWoMw343kZA4G6eLqjWVy8NHNABTthgigHaVGWld0lRFpYD4DcWIze50Afg8dl8C
-AwEAATANBgkqhkiG9w0BAQQFAAOBgQAaahVlE9jXt0GO+Zk9ZDUmyiLQ31lhRbvr
-/fFqLYB3WS0xGnKKaj3IQFREkke7an4rhUaZLGstAhF3bXcN//t9bgZKQfnRPsM2
-bQHEVWAtwjebv0Rn0uR53gZBxoCHZyGwCL0Tj0Gvynpou4Y8UDGnfc1E/r+HOTCO
-yvVrQL359w==
+MIIFhTCCA22gAwIBAgIJAKmxTeiZx+BiMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNTA5MjAwOTI1
+MjJaFw0yNTA5MTcwOTI1MjJaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21l
+LVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV
+BAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKKm
+cpGkwB9Bz9OwquSU4W48S7lCk1FJMsnYl4qa/eXe1TQIARJfS1f4ToVMhtQIrYte
+wqVAQDqqmFhP4MV2RnZDK2SXjsw1X919o8AwUOyZmLuGdsKJVVonNCFSgUPm2T+J
+ljat+tcBYwh0Dn2W4pqgm306nwUL7g/OsdWMBL3l5F0RvHI1i3KIiOxGmCAN7mgO
+sP0HLfhPpovUb4KaCI+e0oQjP+j6m8Fjqu8Ulm/YKIpC7M6BXRAmFbdJzFNVpbdl
+gviFajLAS/UNPf/cJiiSqLR2vYPaNgJN07DbDnXDI1b/0mGyOR984FcacQMy96Ai
+AG6OsHMyLRkSbNIOAGVaFYOsSRjYfxaYpo16KlgLxWcxGYK7uaGIL4RI6lJNHYDI
+lxnHOzef0QStifu2jwWE5p2PbDPLlClv7OjuIBxgto4CRvyw1xgbUQPNcgwV8cV3
+tYe9RqLM6ezsM1nzFYLnWsYqr2lSypkpTY6i+XGvXv0SHhR3RmR28AfTrGLuXf6p
+EhwDcBzNeu86gHrK8jYKmzkXlmbkbDxJ+8DFH1lOiu/xRt04xTXHZlicSYb+eWta
+a+hbhdn3vVH4pcLVfopBGii3ZXBM8kYUokvgpqFqeklfOehSMNZ/xp9bsRl0qAqw
+zPBfmgSQFgjNnk1/Qta6zBI4kuB6mzgLY2fxG6vTAgMBAAGjUDBOMB0GA1UdDgQW
+BBQyT81ZMdYm6fHbdTVnqxDN/ZH7UTAfBgNVHSMEGDAWgBQyT81ZMdYm6fHbdTVn
+qxDN/ZH7UTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQB7btgyxdqY
+Vq9VTbILiJ6AAtJWnfsi0JpmXBd+Xra60BsGo2W3Q2KQGpA3ga8Dk5TwwjEl1cEm
+1Sndj+cnEml445gZvJX+eJJI3HfL0gJSq1RGHvCj9HXzVWVpmoT0189thUogOtrA
+1ZFgCvfPeYBlNm5chhmJh4Zlq7ASc6EOL4gzXYyjD0JXorlpm0Q/k+ZCK6uBD9Ko
+YMX3KdBvtJTYPzkCIiOpvR5xEVtrbpj6cBV+gwV5J81xcU4op/MsTEuRUW59U5As
+3edjh15a4Z1TLaewC3LYQk+jqz8D8k9P5y6iFgfV3vrtJ2wP1ZugiuSTKgqd2z6q
+ee61xcCDJY/l5KLEL5LM9acawb7EHz2EKl8lOuhH0cTgxjVGRwMReudqQMiLgjeE
+aQPwgUt5VDsJMnNFxzhbV9cPSmhrRTJlCarE1IB5OXxMz4hYnAuOQ8PY9kCfofXv
+aK/nEICnLKTguPtxwVzV3M8uayDGow0Nj1Ng8DQcU1IHCkExyvwhBAzNTTwFwD8A
+HdVEZ26VIJ+g66o0vrpgL6U2mPfdot5KPj7b/ipWbLgOo5RaY0PndbAK4M90eshF
+pFoD9KTfe7znNROi0d+uYFSj7FEcu5+lQJmOXajuZTjWTGpRVJGq90zPzHezfD8o
+lI/XAyAfhJwOGc4TpejeKyOLbaBHWEzLKg==
 -----END CERTIFICATE-----
diff --git a/t/ssl/server.crt b/t/ssl/server.crt
index 4e6e285..04a426d 100644
--- a/t/ssl/server.crt
+++ b/t/ssl/server.crt
@@ -1,23 +1,30 @@
 -----BEGIN CERTIFICATE-----
-MIIDyzCCAbMCAQEwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQVUxEzARBgNV
+MIIFOzCCAyMCCQCzixMqiJiXQjANBgkqhkiG9w0BAQ0FADBmMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMR8wHQYDVQQDDBZFdmVudCBSUEMgVGVzdCBSb290IENBMB4XDTE1
+MDkwNTEwNDUwMFoXDTQyMDcwNTEwNDUwMFowWTELMAkGA1UEBhMCQVUxEzARBgNV
 BAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0
-ZDAeFw0xMzAyMDIxMDQ1MzBaFw0yMzAxMzExMDQ1MzBaMIGVMQswCQYDVQQGEwJE
-RTERMA8GA1UECBMISXJnZW5kd28xDjAMBgNVBAcTBUtvZWxuMRIwEAYDVQQKEwll
-eGl0MS5vcmcxHTAbBgNVBAsTFFNvZnR3YXJlIERldmVsb3BtZW50MRMwEQYDVQQD
-FApK9nJuIFJlZGVyMRswGQYJKoZIhvcNAQkBFgxqb2VybkB6eW4uZGUwgZ8wDQYJ
-KoZIhvcNAQEBBQADgY0AMIGJAoGBAKSr4DKHLFi290kMNVLpMXAjkUg2IIHtXdSw
-BiD5UbS0YQgjX1Ln2PCbJZp/+IWSOMKXkUOTNjSzJD/JGgoJjL4spdtCPowopC6k
-BU0zJsFN+blqDMN+N5GQOBuni6o1lcvDRzQAU7YYIoB2lRlpXdJURaWA+A3FiM3u
-dAH4PHZfAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAJfqRMegqW/frG5F3JboCsAX
-Rp/wU66gSXK3xqxtJ9olwmVT2CokFCCWywKvK9Znx+pspf6K294LIA9IFdUQObCL
-q8bgYRRrQsWZQBao9reCjAxZqVVHrCrVUsi5HNvNNXlXd1G0Zl4lS2lxDnTfK/kT
-wNATusAGDOXu9d2pnpJo5zJs007KyZbpNgLNsGrIVCy9dgyslE+saH02mxYofK/t
-6s4tBN+Qrrb6TqaX5JeAqbOlg1ewr3ygeG+t9GpId5XRTsLGMbUTmwZ27tU6J57+
-HdzBd/SLz+xRu9sT6r1TbB06OOZWctRKXzg3pyKquoJC0ISBraGO2BPJ+lJAneuI
-xNE74zxIc+z3rFLydSPq3nbiWfeJXst1Ctxp3vJDIFY401LeJKuI/S1VZQ6ponzA
-Qqdjh3jSXbSTFIxaXhsyjBXwx55jOVyJLEodcKtU80nkJwc3CsqK6c0vYF9Jv078
-HYYkXu3cquYysYLgBfoUfPNJQQ2eEOcX4AmaLuuFZ8sANv0Jul4AdFDDYA6g4UVo
-dwb43y2dHvP5BXkzwAvAigWgXQr4sRlMdp+ln5mMtilsHsQ5/K1lDgLp1JFuS7zz
-TAVhqNbgEZfmu3Ig7KMM1n4V1LNx38SUWNBHajLIVcXNa9MXTd36amOydLwPvJ+4
-P0OzazzHKY0IpOrqroRY
+ZDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
+CgKCAgEAoqZykaTAH0HP07Cq5JThbjxLuUKTUUkyydiXipr95d7VNAgBEl9LV/hO
+hUyG1Aiti17CpUBAOqqYWE/gxXZGdkMrZJeOzDVf3X2jwDBQ7JmYu4Z2wolVWic0
+IVKBQ+bZP4mWNq361wFjCHQOfZbimqCbfTqfBQvuD86x1YwEveXkXRG8cjWLcoiI
+7EaYIA3uaA6w/Qct+E+mi9RvgpoIj57ShCM/6PqbwWOq7xSWb9goikLszoFdECYV
+t0nMU1Wlt2WC+IVqMsBL9Q09/9wmKJKotHa9g9o2Ak3TsNsOdcMjVv/SYbI5H3zg
+VxpxAzL3oCIAbo6wczItGRJs0g4AZVoVg6xJGNh/FpimjXoqWAvFZzEZgru5oYgv
+hEjqUk0dgMiXGcc7N5/RBK2J+7aPBYTmnY9sM8uUKW/s6O4gHGC2jgJG/LDXGBtR
+A81yDBXxxXe1h71Goszp7OwzWfMVgudaxiqvaVLKmSlNjqL5ca9e/RIeFHdGZHbw
+B9OsYu5d/qkSHANwHM167zqAesryNgqbOReWZuRsPEn7wMUfWU6K7/FG3TjFNcdm
+WJxJhv55a1pr6FuF2fe9UfilwtV+ikEaKLdlcEzyRhSiS+CmoWp6SV856FIw1n/G
+n1uxGXSoCrDM8F+aBJAWCM2eTX9C1rrMEjiS4HqbOAtjZ/Ebq9MCAwEAATANBgkq
+hkiG9w0BAQ0FAAOCAgEAiklnYMOCigfKDLG3gm21Kk8k9J5LJ5xkVxg9OqVuvRd6
+OSzKmI5IcHafVWL0jYfEzRF7SLqdSfynTYZKxR9urHDl/JB3Flv79u4xO8iP5OH9
+BdanUwx25s7zEhrqjSZVSiqggr5tDEpCC0HtbgYtIyfM8A2vS4YN1iPHBBWeUWdB
+nofyrz8B/1UcVgjItaRD7t9OFoMlhJ0f0qyqzd5Oxozalww0v6k1lfjbZHqQgtc6
+9IrpEPxCB5qmXpeSljwhAYL9zDw6H+h7aaybC0Md4Mbutj4ADkNGx1otgwSGh9ue
+gNtunD8eayatcEykFtStgfVvCxMO2ul21TM/z5iSb3H25AZwJos+PpPm+I4R92D+
+lIUofI4SsrP8FdHcFPKMraT8GCfYOeLQlpQXz8KyvL/47rGnV0hXiPXSlTQ2/A3R
+5TaBS8TkX3Y/9q+K11RXvtR1R2F2qGggey/wCXkrKhiQX+7mIygrnnxTuhIjeuCR
+gT4NwpFNWF5m/VN6DyuMptapKCJ+VBvCCvGpmvJY76DuxlWTOx1CHV0GDqjh3hJZ
+zIGFoiY2z9OVzmS2ux1Nt0KJ6upKSSEwPK1kRtiH0Rr2bt3aYCjQ9IA+7rIRe2sw
+U1UpoJVniDgf1BTtaQjOiOOK5pJo0rSnveMZs6dScNu3isWwc4bUqcUd298Tj9M=
 -----END CERTIFICATE-----
diff --git a/t/ssl/server.csr b/t/ssl/server.csr
index 49a887e..6eaa8f1 100644
--- a/t/ssl/server.csr
+++ b/t/ssl/server.csr
@@ -1,12 +1,27 @@
 -----BEGIN CERTIFICATE REQUEST-----
-MIIB1jCCAT8CAQAwgZUxCzAJBgNVBAYTAkRFMREwDwYDVQQIEwhJcmdlbmR3bzEO
-MAwGA1UEBxMFS29lbG4xEjAQBgNVBAoTCWV4aXQxLm9yZzEdMBsGA1UECxMUU29m
-dHdhcmUgRGV2ZWxvcG1lbnQxEzARBgNVBAMUCkr2cm4gUmVkZXIxGzAZBgkqhkiG
-9w0BCQEWDGpvZXJuQHp5bi5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-pKvgMocsWLb3SQw1UukxcCORSDYgge1d1LAGIPlRtLRhCCNfUufY8Jslmn/4hZI4
-wpeRQ5M2NLMkP8kaCgmMviyl20I+jCikLqQFTTMmwU35uWoMw343kZA4G6eLqjWV
-y8NHNABTthgigHaVGWld0lRFpYD4DcWIze50Afg8dl8CAwEAAaAAMA0GCSqGSIb3
-DQEBBAUAA4GBAJmfq2IqvN+m9IIRzNTHBjEaOeYIEFVKcqWIiui/hvw8M7Yi0op2
-ifOjRKSfYTsgNAst1Ilwg6wgblSngg6f9GpGtWAYr1xQpoWS8PDaqjx1sLE40qi2
-aNrCtrSCLxzLh9o0qeUydcrjvIK6sWe6lGRntjNoj2VCqlBm0EFQ7vNF
+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
 -----END CERTIFICATE REQUEST-----
diff --git a/t/ssl/server.key b/t/ssl/server.key
index e65f167..4eec926 100644
--- a/t/ssl/server.key
+++ b/t/ssl/server.key
@@ -1,18 +1,51 @@
 -----BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,CEB8A2E7F9C59066
-
-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
+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
 -----END RSA PRIVATE KEY-----

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libevent-rpc-perl.git



More information about the Pkg-perl-cvs-commits mailing list