eventmachine 0.12.6-x86-mswin32-60 → 0.12.8-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
- data/{docs/README → README} +21 -13
- data/Rakefile +14 -4
- data/docs/DEFERRABLES +0 -5
- data/docs/INSTALL +2 -4
- data/docs/LEGAL +1 -1
- data/docs/LIGHTWEIGHT_CONCURRENCY +0 -2
- data/docs/PURE_RUBY +0 -2
- data/docs/RELEASE_NOTES +0 -2
- data/docs/SMTP +0 -7
- data/docs/SPAWNED_PROCESSES +0 -4
- data/docs/TODO +0 -2
- data/eventmachine.gemspec +41 -32
- data/examples/ex_channel.rb +43 -0
- data/examples/ex_queue.rb +2 -0
- data/examples/helper.rb +2 -0
- data/ext/cmain.cpp +685 -586
- data/ext/cplusplus.cpp +15 -6
- data/ext/ed.cpp +1732 -1522
- data/ext/ed.h +407 -380
- data/ext/em.cpp +2263 -1937
- data/ext/em.h +223 -186
- data/ext/eventmachine.h +111 -98
- data/ext/eventmachine_cpp.h +1 -0
- data/ext/extconf.rb +4 -0
- data/ext/kb.cpp +81 -82
- data/ext/pipe.cpp +349 -351
- data/ext/project.h +21 -0
- data/ext/rubymain.cpp +1047 -847
- data/ext/ssl.cpp +38 -1
- data/ext/ssl.h +5 -1
- data/java/src/com/rubyeventmachine/Application.java +7 -3
- data/java/src/com/rubyeventmachine/EmReactor.java +16 -1
- data/java/src/com/rubyeventmachine/tests/ConnectTest.java +25 -3
- data/lib/{protocols → em}/buftok.rb +16 -5
- data/lib/em/callback.rb +26 -0
- data/lib/em/channel.rb +57 -0
- data/lib/em/connection.rb +505 -0
- data/lib/em/deferrable.rb +144 -165
- data/lib/em/file_watch.rb +54 -0
- data/lib/em/future.rb +24 -25
- data/lib/em/messages.rb +1 -1
- data/lib/em/process_watch.rb +44 -0
- data/lib/em/processes.rb +119 -113
- data/lib/em/protocols.rb +35 -0
- data/lib/em/protocols/header_and_content.rb +138 -0
- data/lib/em/protocols/httpclient.rb +263 -0
- data/lib/em/protocols/httpclient2.rb +582 -0
- data/lib/{protocols → em/protocols}/line_and_text.rb +2 -2
- data/lib/em/protocols/linetext2.rb +160 -0
- data/lib/{protocols → em/protocols}/memcache.rb +37 -7
- data/lib/em/protocols/object_protocol.rb +39 -0
- data/lib/em/protocols/postgres3.rb +247 -0
- data/lib/em/protocols/saslauth.rb +175 -0
- data/lib/em/protocols/smtpclient.rb +331 -0
- data/lib/em/protocols/smtpserver.rb +547 -0
- data/lib/em/protocols/stomp.rb +200 -0
- data/lib/{protocols → em/protocols}/tcptest.rb +21 -25
- data/lib/em/queue.rb +61 -0
- data/lib/em/spawnable.rb +53 -56
- data/lib/em/streamer.rb +92 -74
- data/lib/em/timers.rb +55 -0
- data/lib/em/version.rb +3 -0
- data/lib/eventmachine.rb +1636 -1926
- data/lib/evma.rb +1 -1
- data/lib/jeventmachine.rb +106 -101
- data/lib/pr_eventmachine.rb +47 -36
- data/tasks/project.rake +2 -1
- data/tests/client.crt +31 -0
- data/tests/client.key +51 -0
- data/tests/test_attach.rb +18 -0
- data/tests/test_basic.rb +285 -231
- data/tests/test_channel.rb +63 -0
- data/tests/test_connection_count.rb +2 -2
- data/tests/test_epoll.rb +162 -163
- data/tests/test_errors.rb +36 -36
- data/tests/test_exc.rb +22 -25
- data/tests/test_file_watch.rb +49 -0
- data/tests/test_futures.rb +77 -93
- data/tests/test_hc.rb +2 -2
- data/tests/test_httpclient.rb +55 -52
- data/tests/test_httpclient2.rb +153 -155
- data/tests/test_inactivity_timeout.rb +30 -0
- data/tests/test_kb.rb +8 -9
- data/tests/test_ltp2.rb +274 -277
- data/tests/test_next_tick.rb +135 -109
- data/tests/test_object_protocol.rb +37 -0
- data/tests/test_process_watch.rb +48 -0
- data/tests/test_processes.rb +128 -95
- data/tests/test_proxy_connection.rb +92 -0
- data/tests/test_pure.rb +1 -5
- data/tests/test_queue.rb +44 -0
- data/tests/test_running.rb +9 -14
- data/tests/test_sasl.rb +32 -34
- data/tests/test_send_file.rb +175 -176
- data/tests/test_servers.rb +37 -41
- data/tests/test_smtpserver.rb +47 -55
- data/tests/test_spawn.rb +284 -291
- data/tests/test_ssl_args.rb +1 -1
- data/tests/test_ssl_methods.rb +1 -1
- data/tests/test_ssl_verify.rb +82 -0
- data/tests/test_timers.rb +81 -88
- data/tests/test_ud.rb +0 -7
- data/tests/testem.rb +1 -1
- metadata +52 -36
- data/lib/em/eventable.rb +0 -39
- data/lib/eventmachine_version.rb +0 -31
- data/lib/protocols/header_and_content.rb +0 -129
- data/lib/protocols/httpcli2.rb +0 -803
- data/lib/protocols/httpclient.rb +0 -270
- data/lib/protocols/linetext2.rb +0 -161
- data/lib/protocols/postgres.rb +0 -261
- data/lib/protocols/saslauth.rb +0 -179
- data/lib/protocols/smtpclient.rb +0 -308
- data/lib/protocols/smtpserver.rb +0 -556
- data/lib/protocols/stomp.rb +0 -153
- data/tests/test_eventables.rb +0 -77
data/lib/evma.rb
CHANGED
data/lib/jeventmachine.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#--
|
2
2
|
#
|
3
3
|
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
4
4
|
# Homepage:: http://rubyeventmachine.com
|
@@ -23,7 +23,6 @@
|
|
23
23
|
#
|
24
24
|
#
|
25
25
|
|
26
|
-
|
27
26
|
# This module provides "glue" for the Java version of the EventMachine reactor core.
|
28
27
|
# For C++ EventMachines, the analogous functionality is found in ext/rubymain.cpp,
|
29
28
|
# which is a garden-variety Ruby-extension glue module.
|
@@ -32,106 +31,112 @@ require 'java'
|
|
32
31
|
require 'em_reactor'
|
33
32
|
|
34
33
|
module EventMachine
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
# TODO: These event numbers are defined in way too many places.
|
35
|
+
# DRY them up.
|
36
|
+
TimerFired = 100
|
37
|
+
ConnectionData = 101
|
38
|
+
ConnectionUnbound = 102
|
39
|
+
ConnectionAccepted = 103
|
40
|
+
ConnectionCompleted = 104
|
41
|
+
LoopbreakSignalled = 105
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
43
|
+
# This thunk class used to be called EM, but that caused conflicts with
|
44
|
+
# the alias "EM" for module EventMachine. (FC, 20Jun08)
|
45
|
+
class JEM < com.rubyeventmachine.EmReactor
|
46
|
+
def eventCallback a1, a2, a3
|
47
|
+
s = String.from_java_bytes(a3.array[a3.position...a3.limit])
|
48
|
+
EventMachine::event_callback a1, a2, s
|
49
|
+
end
|
50
|
+
end
|
51
|
+
class Connection < com.rubyeventmachine.Connection
|
52
|
+
def associate_callback_target sig
|
53
|
+
# No-op for the time being.
|
54
|
+
end
|
55
|
+
end
|
56
|
+
def self.initialize_event_machine
|
57
|
+
@em = JEM.new
|
58
|
+
end
|
59
|
+
def self.release_machine
|
60
|
+
@em = nil
|
61
|
+
end
|
62
|
+
def self.add_oneshot_timer interval
|
63
|
+
@em.installOneshotTimer interval
|
64
|
+
end
|
65
|
+
def self.run_machine
|
66
|
+
@em.run
|
67
|
+
end
|
68
|
+
def self.stop
|
69
|
+
@em.stop
|
70
|
+
end
|
71
|
+
def self.start_tcp_server server, port
|
72
|
+
@em.startTcpServer server, port
|
73
|
+
end
|
74
|
+
def self.stop_tcp_server sig
|
75
|
+
@em.stopTcpServer sig
|
76
|
+
end
|
77
|
+
def self.start_unix_server filename
|
78
|
+
# TEMPORARILY unsupported until someone figures out how to do it.
|
79
|
+
raise "unsupported on this platform"
|
80
|
+
end
|
81
|
+
def self.send_data sig, data, length
|
82
|
+
@em.sendData sig, data.to_java_bytes
|
83
|
+
end
|
84
|
+
def self.send_datagram sig, data, length, address, port
|
85
|
+
@em.sendDatagram sig, data, length, address, port
|
86
|
+
end
|
87
|
+
def self.connect_server server, port
|
88
|
+
bind_connect_server nil, nil, server, port
|
89
|
+
end
|
90
|
+
def self.bind_connect_server bind_addr, bind_port, server, port
|
91
|
+
@em.connectTcpServer bind_addr, bind_port, server, port
|
92
|
+
end
|
93
|
+
def self.close_connection sig, after_writing
|
94
|
+
@em.closeConnection sig, after_writing
|
95
|
+
end
|
96
|
+
def self.set_comm_inactivity_timeout sig, interval
|
97
|
+
@em.setCommInactivityTimeout sig, interval
|
98
|
+
end
|
99
|
+
def self.start_tls sig
|
100
|
+
@em.startTls sig
|
101
|
+
end
|
102
|
+
def self.ssl?
|
103
|
+
false
|
104
|
+
end
|
105
|
+
def self.signal_loopbreak
|
106
|
+
@em.signalLoopbreak
|
107
|
+
end
|
108
|
+
def self.set_timer_quantum q
|
109
|
+
@em.setTimerQuantum q
|
110
|
+
end
|
111
|
+
def self.epoll
|
112
|
+
# Epoll is a no-op for Java.
|
113
|
+
# The latest Java versions run epoll when possible in NIO.
|
114
|
+
end
|
115
|
+
def self.set_rlimit_nofile n_descriptors
|
116
|
+
# Currently a no-op for Java.
|
117
|
+
end
|
118
|
+
def self.open_udp_socket server, port
|
119
|
+
@em.openUdpSocket server, port
|
120
|
+
end
|
121
|
+
def self.invoke_popen cmd
|
122
|
+
# TEMPORARILY unsupported until someone figures out how to do it.
|
123
|
+
raise "unsupported on this platform"
|
124
|
+
end
|
125
|
+
def self.read_keyboard
|
126
|
+
# TEMPORARILY unsupported until someone figures out how to do it.
|
127
|
+
raise "temporarily unsupported on this platform"
|
128
|
+
end
|
129
|
+
def self.set_max_timer_count num
|
130
|
+
# harmless no-op in Java. There's no built-in timer limit.
|
131
|
+
end
|
132
|
+
def self.library_type
|
133
|
+
:java
|
134
|
+
end
|
130
135
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
+
class Connection
|
137
|
+
def associate_callback_target sig
|
138
|
+
# No-op for the time being
|
139
|
+
end
|
140
|
+
end
|
136
141
|
end
|
137
142
|
|
data/lib/pr_eventmachine.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#--
|
2
2
|
#
|
3
3
|
# Author:: Francis Cianfrocca (gmail: blackhedd)
|
4
4
|
# Homepage:: http://rubyeventmachine.com
|
@@ -76,7 +76,11 @@ module EventMachine
|
|
76
76
|
# #connect_server. Return a connection descriptor to the caller.
|
77
77
|
# TODO, what do we return here if we can't connect?
|
78
78
|
def connect_server host, port
|
79
|
-
|
79
|
+
bind_connect_server nil, nil, host, port
|
80
|
+
end
|
81
|
+
|
82
|
+
def bind_connect_server bind_addr, bind_port, host, port
|
83
|
+
EvmaTCPClient.connect(bind_addr, bind_port, host, port).uuid
|
80
84
|
end
|
81
85
|
|
82
86
|
# #send_data
|
@@ -152,6 +156,11 @@ module EventMachine
|
|
152
156
|
def epoll
|
153
157
|
end
|
154
158
|
|
159
|
+
# #ssl? is not implemented for pure-Ruby implementation
|
160
|
+
def ssl?
|
161
|
+
false
|
162
|
+
end
|
163
|
+
|
155
164
|
# #set_rlimit_nofile is a no-op in the pure-Ruby implementation. We simply return Ruby's built-in
|
156
165
|
# per-process file-descriptor limit.
|
157
166
|
def set_rlimit_nofile n
|
@@ -307,7 +316,7 @@ class Reactor
|
|
307
316
|
open_loopbreaker
|
308
317
|
|
309
318
|
loop {
|
310
|
-
|
319
|
+
@current_loop_time = Time.now
|
311
320
|
|
312
321
|
break if @stop_scheduled
|
313
322
|
run_timers
|
@@ -330,7 +339,7 @@ class Reactor
|
|
330
339
|
@timers.each {|t|
|
331
340
|
if t.first <= @current_loop_time
|
332
341
|
@timers.delete t
|
333
|
-
|
342
|
+
EventMachine::event_callback "", TimerFired, t.last
|
334
343
|
else
|
335
344
|
break
|
336
345
|
end
|
@@ -374,24 +383,24 @@ class Reactor
|
|
374
383
|
end
|
375
384
|
|
376
385
|
def open_loopbreaker
|
377
|
-
|
378
|
-
|
386
|
+
# Can't use an IO.pipe because they can't be set nonselectable in Windows.
|
387
|
+
# Pick a random localhost UDP port.
|
379
388
|
#@loopbreak_writer.close if @loopbreak_writer
|
380
389
|
#rd,@loopbreak_writer = IO.pipe
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
390
|
+
@loopbreak_reader = UDPSocket.new
|
391
|
+
@loopbreak_writer = UDPSocket.new
|
392
|
+
bound = false
|
393
|
+
100.times {
|
394
|
+
@loopbreak_port = rand(10000) + 40000
|
395
|
+
begin
|
396
|
+
@loopbreak_reader.bind "localhost", @loopbreak_port
|
397
|
+
bound = true
|
398
|
+
break
|
399
|
+
rescue
|
400
|
+
end
|
401
|
+
}
|
402
|
+
raise "Unable to bind Loopbreaker" unless bound
|
403
|
+
LoopbreakReader.new(@loopbreak_reader)
|
395
404
|
end
|
396
405
|
|
397
406
|
def close_loopbreaker
|
@@ -401,7 +410,7 @@ class Reactor
|
|
401
410
|
|
402
411
|
def signal_loopbreak
|
403
412
|
#@loopbreak_writer.write '+' if @loopbreak_writer
|
404
|
-
|
413
|
+
@loopbreak_writer.send('+',0,"localhost",@loopbreak_port) if @loopbreak_writer
|
405
414
|
end
|
406
415
|
|
407
416
|
def set_timer_quantum interval_in_seconds
|
@@ -445,17 +454,17 @@ module EventMachine
|
|
445
454
|
@last_activity = Reactor.instance.current_loop_time
|
446
455
|
|
447
456
|
if defined?(Fcntl::F_GETFL)
|
448
|
-
|
449
|
-
|
457
|
+
m = @io.fcntl(Fcntl::F_GETFL, 0)
|
458
|
+
@io.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK | m)
|
450
459
|
else
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
460
|
+
# Windows doesn't define F_GETFL.
|
461
|
+
# It's not very reliable about setting descriptors nonblocking either.
|
462
|
+
begin
|
463
|
+
s = Socket.for_fd(@io.fileno)
|
464
|
+
s.fcntl( Fcntl::F_SETFL, Fcntl::O_NONBLOCK )
|
465
|
+
rescue Errno::EINVAL, Errno::EBADF
|
466
|
+
STDERR.puts "Serious error: unable to set descriptor non-blocking"
|
467
|
+
end
|
459
468
|
end
|
460
469
|
# TODO, should set CLOEXEC on Unix?
|
461
470
|
|
@@ -640,8 +649,10 @@ end
|
|
640
649
|
module EventMachine
|
641
650
|
class EvmaTCPClient < StreamObject
|
642
651
|
|
643
|
-
def self.connect host, port
|
652
|
+
def self.connect bind_addr, bind_port, host, port
|
644
653
|
sd = Socket.new( Socket::AF_INET, Socket::SOCK_STREAM, 0 )
|
654
|
+
sd.bind( Socket.pack_sockaddr_in( bind_port, bind_addr )) if bind_addr
|
655
|
+
|
645
656
|
begin
|
646
657
|
# TODO, this assumes a current Ruby snapshot.
|
647
658
|
# We need to degrade to a nonblocking connect otherwise.
|
@@ -669,9 +680,9 @@ module EventMachine
|
|
669
680
|
def eventable_write
|
670
681
|
if @pending
|
671
682
|
@pending = false
|
672
|
-
|
683
|
+
if 0 == io.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR).unpack("i").first
|
673
684
|
EventMachine::event_callback uuid, ConnectionCompleted, ""
|
674
|
-
|
685
|
+
end
|
675
686
|
else
|
676
687
|
super
|
677
688
|
end
|
@@ -748,9 +759,9 @@ module EventMachine
|
|
748
759
|
def eventable_write
|
749
760
|
if @pending
|
750
761
|
@pending = false
|
751
|
-
|
762
|
+
if 0 == io.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR).unpack("i").first
|
752
763
|
EventMachine::event_callback uuid, ConnectionCompleted, ""
|
753
|
-
|
764
|
+
end
|
754
765
|
else
|
755
766
|
super
|
756
767
|
end
|
data/tasks/project.rake
CHANGED
@@ -37,8 +37,9 @@ if Spec.has_rdoc
|
|
37
37
|
Rake::RDocTask.new do |rd|
|
38
38
|
rd.title = Spec.name
|
39
39
|
rd.rdoc_dir = 'rdoc'
|
40
|
-
rd.main = "
|
40
|
+
rd.main = "README"
|
41
41
|
rd.rdoc_files.include("lib/**/*.rb", *Spec.extra_rdoc_files)
|
42
|
+
rd.rdoc_files.exclude(*%w(lib/em/version lib/emva lib/evma/ lib/pr_eventmachine lib/jeventmachine))
|
42
43
|
end
|
43
44
|
Rake::Task[:clean].enhance [:clobber_rdoc]
|
44
45
|
|
data/tests/client.crt
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIFRDCCAywCAQEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCRU0xFTATBgNV
|
3
|
+
BAgTDEV2ZW50TWFjaGluZTEVMBMGA1UEChMMRXZlbnRNYWNoaW5lMRQwEgYDVQQL
|
4
|
+
EwtEZXZlbG9wbWVudDEVMBMGA1UEAxMMRXZlbnRNYWNoaW5lMB4XDTA5MDMyOTAy
|
5
|
+
MzE0NloXDTEwMDMyOTAyMzE0NlowaDELMAkGA1UEBhMCRU0xFTATBgNVBAgTDEV2
|
6
|
+
ZW50TWFjaGluZTEVMBMGA1UEChMMRXZlbnRNYWNoaW5lMRQwEgYDVQQLEwtEZXZl
|
7
|
+
bG9wbWVudDEVMBMGA1UEAxMMRXZlbnRNYWNoaW5lMIICIjANBgkqhkiG9w0BAQEF
|
8
|
+
AAOCAg8AMIICCgKCAgEAv1FSOIX1z7CQtVBFlrB0A3/V29T+22STKKmiRWYkKL5b
|
9
|
+
+hkrp9IZ5J4phZHgUVM2VDPOO2Oc2PU6dlGGZISg+UPERunTogxQKezCV0vcE9cK
|
10
|
+
OwzxCFDRvv5rK8aKMscfBLbNKocAXywuRRQmdxPiVRzbyPrl+qCr/EDLXAX3D77l
|
11
|
+
S8n2AwDg19VyI+IgFUE+Dy5e1eLoY6nV+Mq+vNXdn3ttF3t+ngac5pj5Q9h+pD5p
|
12
|
+
67baDHSnf/7cy2fa/LKrLolVHQR9G2K6cEfeM99NtcsMbkoPs4iI3FA05OVTQHXg
|
13
|
+
C8C8cRxrb9APl95I/ep65OIaCJgcdYxJ3QD3qOtQo6/NQsGnjbyiUxaEpjfqyT1N
|
14
|
+
uzWD81Q8uXGNS8yD6dDynt/lseBjyp2nfC3uQ5fY18VdIcu0MJ9pezBUKrNuhlsy
|
15
|
+
XXEZ2DXj4sY8QOvIcBqSB/zmS1nGEK55xrtkaiaNrY8fe8wRVpcPLxy+P225NFw+
|
16
|
+
B69FJRA0Lj6Jt9BM4hV/3MSIEWwTVhuw4E02ywDYTzz1wq3ITf0tsbIPn0hXQMxD
|
17
|
+
ohhAoKioM6u+yHtqsxD0eYaAWmHTVn5oDvOSGpvCpBfWHyA7FP5UQak0fKABEAgK
|
18
|
+
iQYEnb294AXwXymJttfGTIV/Ne4tLN5dIpNma8UO8rlThlcr6xnTQDbR3gkTDRsC
|
19
|
+
AwEAATANBgkqhkiG9w0BAQUFAAOCAgEAj7J8fy1LUWoVWnrXDAC9jwJ1nI/YjoSU
|
20
|
+
6ywke3o04+nZC5S+dPnuVy+HAwsU940CoNvP6RStI/bH6JL+NIqEFmwM3M8xIEWV
|
21
|
+
MYVPkfvQUxxGvDnaY7vv93u+6Q77HV3qlhAQBHChyuXyO7TG3+WzsiT9AnBNtAP0
|
22
|
+
4jClt5kCAQXLO/p0SFEZQ8Ru9SM8d1i73Z0VDVzs8jYWlBhiherSgbw1xK4wBOpJ
|
23
|
+
43XmjZsBSrDpiAXd07Ak3UL2GjfT7eStgebL3UIe39ThE/s/+l43bh0M6WbOBvyQ
|
24
|
+
i/rZ50kd1GvN0xnZhtv07hIJWO85FGWi7Oet8AzdUZJ17v1Md/f2vdhPVTFN9q+w
|
25
|
+
mQ6LxjackqCvaJaQfBEbqsn2Tklxk4tZuDioiQbOElT2e6vljQVJWIfNx38Ny2LM
|
26
|
+
aiXQPQu+4CI7meAh5gXM5nyJGbZvRPsxj89CqYzyHCYs5HBP3AsviBvn26ziOF+c
|
27
|
+
544VmHd9HkIv8UTC29hh+R64RlgMQQQdaXFaUrFPTs/do0k8n/c2bPc0iTdfi5Q2
|
28
|
+
gq6Vi8q6Ay5wGgTtRRbn/mWKuCFjEh94z6pF9Xr06NX0PuEOdf+Ls9vI5vz6G0w6
|
29
|
+
0Li7devEN7EKBY+7Mcjg918yq9i5tEiMkUgT68788t3fTC+4iUQ5fDtdrHsaOlIR
|
30
|
+
8bs/XQVNE/s=
|
31
|
+
-----END CERTIFICATE-----
|
data/tests/client.key
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
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
|
51
|
+
-----END RSA PRIVATE KEY-----
|