eventmachine 0.12.6-x86-mswin32-60 → 0.12.8-x86-mswin32-60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-----
|