onstomp 1.0.0pre1 → 1.0.0
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/README.md +1 -1
- data/Rakefile +8 -0
- data/examples/openuri.rb +36 -0
- data/lib/onstomp.rb +4 -0
- data/lib/onstomp/client.rb +6 -5
- data/lib/onstomp/components.rb +0 -1
- data/lib/onstomp/components/frame_headers.rb +35 -38
- data/lib/onstomp/components/threaded_processor.rb +13 -0
- data/lib/onstomp/connections/base.rb +15 -8
- data/lib/onstomp/connections/stomp_1.rb +0 -6
- data/lib/onstomp/connections/stomp_1_0.rb +8 -0
- data/lib/onstomp/connections/stomp_1_1.rb +8 -0
- data/lib/onstomp/failover.rb +16 -0
- data/lib/onstomp/failover/buffers.rb +8 -0
- data/lib/onstomp/failover/buffers/written.rb +91 -0
- data/lib/onstomp/failover/client.rb +127 -0
- data/lib/onstomp/failover/failover_configurable.rb +63 -0
- data/lib/onstomp/failover/failover_events.rb +96 -0
- data/lib/onstomp/failover/new_with_failover.rb +20 -0
- data/lib/onstomp/failover/pools.rb +8 -0
- data/lib/onstomp/failover/pools/base.rb +39 -0
- data/lib/onstomp/failover/pools/round_robin.rb +17 -0
- data/lib/onstomp/failover/uri.rb +34 -0
- data/lib/onstomp/interfaces/client_configurable.rb +2 -6
- data/lib/onstomp/interfaces/client_events.rb +4 -0
- data/lib/onstomp/interfaces/connection_events.rb +3 -3
- data/lib/onstomp/interfaces/event_manager.rb +8 -0
- data/lib/onstomp/interfaces/uri_configurable.rb +7 -7
- data/lib/onstomp/open-uri.rb +37 -0
- data/lib/onstomp/open-uri/client_extensions.rb +88 -0
- data/lib/onstomp/open-uri/message_queue.rb +38 -0
- data/lib/onstomp/version.rb +1 -1
- data/spec/onstomp/client_spec.rb +1 -4
- data/spec/onstomp/components/frame_headers_spec.rb +2 -5
- data/spec/onstomp/connections/stomp_1_0_spec.rb +22 -0
- data/spec/onstomp/connections/stomp_1_1_spec.rb +22 -0
- data/spec/onstomp/connections/stomp_1_spec.rb +2 -19
- data/spec/onstomp/connections_spec.rb +4 -0
- data/spec/onstomp/failover/buffers/written_spec.rb +8 -0
- data/spec/onstomp/failover/client_spec.rb +38 -0
- data/spec/onstomp/failover/failover_events_spec.rb +75 -0
- data/spec/onstomp/failover/new_with_failover_spec.rb +16 -0
- data/spec/onstomp/failover/pools/base_spec.rb +54 -0
- data/spec/onstomp/failover/pools/round_robin_spec.rb +27 -0
- data/spec/onstomp/failover/uri_spec.rb +21 -0
- data/spec/onstomp/full_stacks/failover_spec.rb +55 -0
- data/spec/onstomp/full_stacks/onstomp_spec.rb +15 -0
- data/spec/onstomp/full_stacks/open-uri_spec.rb +40 -0
- data/spec/onstomp/full_stacks/ssl/README +6 -0
- data/spec/onstomp/full_stacks/ssl/broker_cert.csr +17 -0
- data/spec/onstomp/full_stacks/ssl/broker_cert.pem +72 -0
- data/spec/onstomp/full_stacks/ssl/broker_key.pem +27 -0
- data/spec/onstomp/full_stacks/ssl/client_cert.csr +17 -0
- data/spec/onstomp/full_stacks/ssl/client_cert.pem +72 -0
- data/spec/onstomp/full_stacks/ssl/client_key.pem +27 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/cacert.pem +17 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/index.txt +2 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/index.txt.attr +1 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/index.txt.attr.old +1 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/index.txt.old +1 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/newcerts/01.pem +72 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/newcerts/02.pem +72 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/private/cakey.pem +17 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/serial +1 -0
- data/spec/onstomp/full_stacks/ssl/demoCA/serial.old +1 -0
- data/spec/onstomp/full_stacks/test_broker.rb +251 -0
- data/spec/onstomp/interfaces/connection_events_spec.rb +3 -1
- data/spec/onstomp/open-uri/client_extensions_spec.rb +113 -0
- data/spec/onstomp/open-uri/message_queue_spec.rb +29 -0
- data/spec/onstomp/open-uri_spec.rb +43 -0
- data/spec/spec_helper.rb +2 -0
- data/yard_extensions.rb +5 -1
- metadata +82 -8
- data/lib/onstomp/components/nil_processor.rb +0 -20
- data/spec/onstomp/components/nil_processor_spec.rb +0 -32
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe "OnStomp::Client.new with failover", :failover => true do
|
5
|
+
describe "monkey patching OnStomp::Client" do
|
6
|
+
it "should return a failover client if given an array" do
|
7
|
+
OnStomp::Client.new(['stomp:///', 'stomp+ssl:///']).should be_a_kind_of(OnStomp::Failover::Client)
|
8
|
+
end
|
9
|
+
it "should return a failover client if given a failover: URI" do
|
10
|
+
OnStomp::Client.new('failover:(stomp:///,stomp+ssl:///)').should be_a_kind_of(OnStomp::Failover::Client)
|
11
|
+
end
|
12
|
+
it "should be a regular client otherwise" do
|
13
|
+
OnStomp::Client.new('stomp:///').should be_a_kind_of(OnStomp::Client)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module OnStomp::Failover::Pools
|
5
|
+
describe Base, :failover => true do
|
6
|
+
let(:clients) { mock('clients') }
|
7
|
+
let(:pool) {
|
8
|
+
Base.new([]).tap do |p|
|
9
|
+
p.stub(:clients => clients)
|
10
|
+
end
|
11
|
+
}
|
12
|
+
|
13
|
+
describe ".initialize" do
|
14
|
+
it "should create a new Client for each URI" do
|
15
|
+
OnStomp::Client.should_receive(:new).with('1').and_return('c 1')
|
16
|
+
OnStomp::Client.should_receive(:new).with('2').and_return('c 2')
|
17
|
+
OnStomp::Client.should_receive(:new).with('3').and_return('c 3')
|
18
|
+
new_pool = Base.new ['1', '2', '3']
|
19
|
+
new_pool.clients.should =~ ['c 1', 'c 2', 'c 3']
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe ".shuffle!" do
|
24
|
+
it "should shuffle the clients" do
|
25
|
+
clients.should_receive(:shuffle!)
|
26
|
+
pool.shuffle!
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe ".next_client" do
|
31
|
+
it "should raise an error because it's up to subclasses to implement this warlock" do
|
32
|
+
lambda {
|
33
|
+
pool.next_client
|
34
|
+
}.should raise_error
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".each" do
|
39
|
+
it "should raise an error if no block is given (not sure why, honestly)" do
|
40
|
+
# I think in the past, this method was synchronized, and that's why
|
41
|
+
# I raise an error, but it may not be necessary anymore
|
42
|
+
lambda {
|
43
|
+
pool.each
|
44
|
+
}.should raise_error
|
45
|
+
end
|
46
|
+
it "should evaluate the block against the clients" do
|
47
|
+
clients.should_receive(:each).and_yield('c1')
|
48
|
+
yielded = []
|
49
|
+
pool.each { |c| yielded << c }
|
50
|
+
yielded.should == ['c1']
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module OnStomp::Failover::Pools
|
5
|
+
describe RoundRobin, :failover => true do
|
6
|
+
let(:clients) {
|
7
|
+
[ '1', '2', '3']
|
8
|
+
}
|
9
|
+
let(:pool) {
|
10
|
+
RoundRobin.new([]).tap do |p|
|
11
|
+
p.stub(:clients => clients)
|
12
|
+
end
|
13
|
+
}
|
14
|
+
|
15
|
+
describe ".next_client" do
|
16
|
+
it "should return clients in order and cycle" do
|
17
|
+
pool.next_client.should == '1'
|
18
|
+
pool.next_client.should == '2'
|
19
|
+
pool.next_client.should == '3'
|
20
|
+
pool.next_client.should == '1'
|
21
|
+
pool.next_client.should == '2'
|
22
|
+
pool.next_client.should == '3'
|
23
|
+
pool.next_client.should == '1'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module OnStomp::Failover
|
5
|
+
describe URI, :failover => true do
|
6
|
+
describe "parsing failover: URIs" do
|
7
|
+
it "should parse the string and the internal URIs" do
|
8
|
+
uri = ::URI.parse('failover:(stomp://host.domain.tld,stomp+ssl:///?param=value¶m2=value2,stomp://user:pass@other.host.tld)?param=blah¶m2=testing')
|
9
|
+
uri.query.should == 'param=blah¶m2=testing'
|
10
|
+
uri.failover_uris.map { |u| u.scheme }.should == ['stomp', 'stomp+ssl', 'stomp']
|
11
|
+
uri.failover_uris.map { |u| u.host }.should == ['host.domain.tld', nil, 'other.host.tld']
|
12
|
+
uri.failover_uris.map { |u| u.query }.should == [nil, 'param=value¶m2=value2', nil]
|
13
|
+
end
|
14
|
+
it "should raise an error if the failover URI doesn't match regex" do
|
15
|
+
lambda {
|
16
|
+
::URI.parse('failover://stomp://host.domain.tld,stomp+ssl://sunday.after.you')
|
17
|
+
}.should raise_error(OnStomp::Failover::InvalidFailoverURIError)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
require File.expand_path('../test_broker', __FILE__)
|
4
|
+
|
5
|
+
describe OnStomp::Failover, "full stack test", :fullstack => true, :failover => true do
|
6
|
+
let(:broker) {
|
7
|
+
TestBroker.new
|
8
|
+
}
|
9
|
+
before(:each) do
|
10
|
+
broker.start
|
11
|
+
end
|
12
|
+
after(:each) do
|
13
|
+
broker.stop
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "failing over" do
|
17
|
+
it "should do something worthwhile" do
|
18
|
+
committed = false
|
19
|
+
killed = false
|
20
|
+
|
21
|
+
client = OnStomp::Failover::Client.new('failover:(stomp:///,stomp:///)')
|
22
|
+
client.on_commit do |c|
|
23
|
+
committed = true
|
24
|
+
end
|
25
|
+
client.on_subscribe do |s, rc|
|
26
|
+
broker.kill_sessions unless killed
|
27
|
+
killed = true
|
28
|
+
client.send '/queue/onstomp/failover/test', 'are you receiving?',
|
29
|
+
:'x-onstomp-real-client' => rc.object_id
|
30
|
+
end
|
31
|
+
|
32
|
+
client.connect
|
33
|
+
client.send '/queue/onstomp/failover/test', '4-3-2-1 Earth Below Me',
|
34
|
+
:'x-onstomp-real-client' => client.active_client.object_id
|
35
|
+
client.begin 't-1234', :'x-onstomp-real-client' => client.active_client.object_id
|
36
|
+
client.send '/queue/onstomp/failover/test', 'hello major tom',
|
37
|
+
:transaction => 't-1234', :'x-onstomp-real-client' => client.active_client.object_id
|
38
|
+
client.subscribe('/queue/onstomp/failover/test', :'x-onstomp-real-client' => client.active_client.object_id) do |m|
|
39
|
+
end
|
40
|
+
Thread.pass while client.connected?
|
41
|
+
|
42
|
+
client.send '/queue/onstomp/failover/test', 'Are you receiving?',
|
43
|
+
:'x-onstomp-real-client' => client.active_client.object_id
|
44
|
+
sub = client.subscribe('/queue/onstomp/failover/test2', :'x-onstomp-real-client' => client.active_client.object_id) do |m|
|
45
|
+
end
|
46
|
+
client.unsubscribe sub, :'x-onstomp-real-client' => client.active_client.object_id
|
47
|
+
client.commit 't-1234', :'x-onstomp-real-client' => client.active_client.object_id
|
48
|
+
# This is not waiting for debuffering?
|
49
|
+
client.disconnect :'x-onstomp-real-client' => client.active_client.object_id
|
50
|
+
broker.join
|
51
|
+
killed.should be_true
|
52
|
+
committed.should be_true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
require File.expand_path('../test_broker', __FILE__)
|
4
|
+
|
5
|
+
describe OnStomp::Client, "full stack test", :fullstack => true do
|
6
|
+
let(:broker) {
|
7
|
+
TestBroker.new
|
8
|
+
}
|
9
|
+
before(:each) do
|
10
|
+
broker.start
|
11
|
+
end
|
12
|
+
after(:each) do
|
13
|
+
broker.stop
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
require File.expand_path('../test_broker', __FILE__)
|
4
|
+
|
5
|
+
describe OnStomp::OpenURI, "full stack test", :fullstack => true, :openuri => true do
|
6
|
+
let(:broker) {
|
7
|
+
TestBroker.new
|
8
|
+
}
|
9
|
+
before(:each) do
|
10
|
+
broker.start
|
11
|
+
end
|
12
|
+
after(:each) do
|
13
|
+
broker.stop
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "opening URIs" do
|
17
|
+
it "should deliver some SEND frames" do
|
18
|
+
open("stomp://localhost/queue/onstomp/open-uri/test") do |c|
|
19
|
+
c.send "Test Message 1"
|
20
|
+
c.send "Another Test Message"
|
21
|
+
end
|
22
|
+
broker.join
|
23
|
+
broker.bodies_for("/queue/onstomp/open-uri/test").should ==
|
24
|
+
[ "Test Message 1", "Another Test Message" ]
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should receive the some MESSAGE frames" do
|
28
|
+
open("stomp://localhost/queue/onstomp/open-uri/test") do |c|
|
29
|
+
c.send "Test Message 1"
|
30
|
+
c.send "Another Test Message"
|
31
|
+
c.send "Last Message"
|
32
|
+
|
33
|
+
c.first.body.should == "Test Message 1"
|
34
|
+
c.first(2).map { |m| m.body }.should ==
|
35
|
+
[ "Another Test Message", "Last Message" ]
|
36
|
+
end
|
37
|
+
broker.join
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
These are all the SSL certificates / keys needed for testing SSL connectivity
|
2
|
+
with stomper. The CA key file is protected with the pass phrase "testing"
|
3
|
+
The file broker_cert.pem is a copy of demoCA/newcerts/01.pem.
|
4
|
+
The file client_cert.pem is a copy of demoCA/newcerts/02.pem.
|
5
|
+
|
6
|
+
All keys, certificates and signing requests were created using OpenSSL 1.0.0c
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE REQUEST-----
|
2
|
+
MIICuzCCAaMCAQAwdjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5vd2hlcmVzMRAw
|
3
|
+
DgYDVQQHDAdTdG9tcGVyMRgwFgYDVQQKDA9TdG9tcGVyIFRlc3RpbmcxFDASBgNV
|
4
|
+
BAsMC1NTTCBUZXN0aW5nMRIwEAYDVQQDDAlNeSBCcm9rZXIwggEiMA0GCSqGSIb3
|
5
|
+
DQEBAQUAA4IBDwAwggEKAoIBAQDr3b4th1QTzkzhvcnI4BiwUPEwyG4ierzG6j/i
|
6
|
+
xCTZjEGUVNTge1xs3b1Bj72qmMLw6RN+NlqXV+RqBAiqEitoS51aQJJBV1su0uH0
|
7
|
+
+MQx3WwtTBKrgHJxOU6qFLj2NegHn6KjuKYIjWDVUwE4jKoX6bCzjOPZTRQC2pr/
|
8
|
+
b1tlusNWgLDejsglPxugrIAcOOB3TsZdkkSXw/i6mgKDqBtXOzjWfX+VhvTC3lHQ
|
9
|
+
7qEwtDma9lgDYpOUpXJyolx+z1R/V5JG+PexeVYgvZUl1RFdwFzHzc9Ej4ho4W/A
|
10
|
+
yi7b/NAZgjaxPyCC386mVUQCUYtsT6Ems0HoC6gMj2dlku7fAgMBAAGgADANBgkq
|
11
|
+
hkiG9w0BAQUFAAOCAQEATXSzaRT7a490U5wXRRSInbFOBe21eTGb63bCwN7RBTV3
|
12
|
+
W9CE2b2nDkomFt9BmlFn+/+adzNlyRBV/qq0nwBpNI0tZURfz3Voxt0KhcooX+SD
|
13
|
+
uRrS3/JHONjdSpXVPIlrq5FXe4HkMzgj00JXKkO/pYL+WhZKhY0m1pRr/+9B7QMu
|
14
|
+
bm9blUo2HSkhnmVMfbMIV17H5npBYrZj+XgE0BdwX+5N05HpO+OaLFUc9qz8ZYWh
|
15
|
+
nwx3MjHIBHsPbmZJ88qQr/EvXxuuVdEOvMvvUBATgOfw9gruFXeLbZ3Jo1GN/WnY
|
16
|
+
XApL545jeEmUNDYvWFVcuQI1zjeLsdrboclH3Tlqkg==
|
17
|
+
-----END CERTIFICATE REQUEST-----
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 1 (0x1)
|
5
|
+
Signature Algorithm: sha1WithRSAEncryption
|
6
|
+
Issuer: C=US, ST=Nowheres, L=Stomper, O=Stomper Testing, OU=CA Testing, CN=Stomper CA
|
7
|
+
Validity
|
8
|
+
Not Before: Feb 21 16:50:01 2011 GMT
|
9
|
+
Not After : Feb 18 16:50:01 2021 GMT
|
10
|
+
Subject: C=US, ST=Nowheres, O=Stomper Testing, OU=SSL Testing, CN=My Broker
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
Public-Key: (2048 bit)
|
14
|
+
Modulus:
|
15
|
+
00:eb:dd:be:2d:87:54:13:ce:4c:e1:bd:c9:c8:e0:
|
16
|
+
18:b0:50:f1:30:c8:6e:22:7a:bc:c6:ea:3f:e2:c4:
|
17
|
+
24:d9:8c:41:94:54:d4:e0:7b:5c:6c:dd:bd:41:8f:
|
18
|
+
bd:aa:98:c2:f0:e9:13:7e:36:5a:97:57:e4:6a:04:
|
19
|
+
08:aa:12:2b:68:4b:9d:5a:40:92:41:57:5b:2e:d2:
|
20
|
+
e1:f4:f8:c4:31:dd:6c:2d:4c:12:ab:80:72:71:39:
|
21
|
+
4e:aa:14:b8:f6:35:e8:07:9f:a2:a3:b8:a6:08:8d:
|
22
|
+
60:d5:53:01:38:8c:aa:17:e9:b0:b3:8c:e3:d9:4d:
|
23
|
+
14:02:da:9a:ff:6f:5b:65:ba:c3:56:80:b0:de:8e:
|
24
|
+
c8:25:3f:1b:a0:ac:80:1c:38:e0:77:4e:c6:5d:92:
|
25
|
+
44:97:c3:f8:ba:9a:02:83:a8:1b:57:3b:38:d6:7d:
|
26
|
+
7f:95:86:f4:c2:de:51:d0:ee:a1:30:b4:39:9a:f6:
|
27
|
+
58:03:62:93:94:a5:72:72:a2:5c:7e:cf:54:7f:57:
|
28
|
+
92:46:f8:f7:b1:79:56:20:bd:95:25:d5:11:5d:c0:
|
29
|
+
5c:c7:cd:cf:44:8f:88:68:e1:6f:c0:ca:2e:db:fc:
|
30
|
+
d0:19:82:36:b1:3f:20:82:df:ce:a6:55:44:02:51:
|
31
|
+
8b:6c:4f:a1:26:b3:41:e8:0b:a8:0c:8f:67:65:92:
|
32
|
+
ee:df
|
33
|
+
Exponent: 65537 (0x10001)
|
34
|
+
X509v3 extensions:
|
35
|
+
X509v3 Basic Constraints:
|
36
|
+
CA:FALSE
|
37
|
+
Netscape Comment:
|
38
|
+
OpenSSL Generated Certificate
|
39
|
+
X509v3 Subject Key Identifier:
|
40
|
+
5C:28:4D:B8:A3:D7:CB:43:2C:1C:DB:0F:7B:75:99:85:44:4E:D8:A1
|
41
|
+
X509v3 Authority Key Identifier:
|
42
|
+
keyid:7C:4F:50:BF:C6:57:97:6B:D9:1C:F1:92:EF:B5:66:47:94:79:15:74
|
43
|
+
|
44
|
+
Signature Algorithm: sha1WithRSAEncryption
|
45
|
+
51:2f:da:d1:a4:9f:97:77:00:69:bb:04:85:34:75:bd:2e:ad:
|
46
|
+
45:83:a7:95:f1:83:5d:52:1e:65:79:ee:5b:a0:f5:7b:82:53:
|
47
|
+
88:c3:fc:89:c8:4f:68:4e:80:8a:cb:53:4f:44:a8:6d:8c:be:
|
48
|
+
be:74:19:ff:75:52:14:3b:70:42:87:cf:fc:90:58:7e:c9:cd:
|
49
|
+
d4:a2:b8:15:74:e8:51:ce:9c:73:ca:a5:29:76:4a:f3:a4:26:
|
50
|
+
f3:70:c5:8e:5f:cf:fe:7d:81:de:43:9e:36:c0:87:7b:66:02:
|
51
|
+
7f:02:2d:64:48:19:be:74:4a:27:cd:c5:56:c5:ff:96:1a:02:
|
52
|
+
3a:2f
|
53
|
+
-----BEGIN CERTIFICATE-----
|
54
|
+
MIIDTzCCArigAwIBAgIBATANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJVUzER
|
55
|
+
MA8GA1UECAwITm93aGVyZXMxEDAOBgNVBAcMB1N0b21wZXIxGDAWBgNVBAoMD1N0
|
56
|
+
b21wZXIgVGVzdGluZzETMBEGA1UECwwKQ0EgVGVzdGluZzETMBEGA1UEAwwKU3Rv
|
57
|
+
bXBlciBDQTAeFw0xMTAyMjExNjUwMDFaFw0yMTAyMTgxNjUwMDFaMGQxCzAJBgNV
|
58
|
+
BAYTAlVTMREwDwYDVQQIDAhOb3doZXJlczEYMBYGA1UECgwPU3RvbXBlciBUZXN0
|
59
|
+
aW5nMRQwEgYDVQQLDAtTU0wgVGVzdGluZzESMBAGA1UEAwwJTXkgQnJva2VyMIIB
|
60
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA692+LYdUE85M4b3JyOAYsFDx
|
61
|
+
MMhuInq8xuo/4sQk2YxBlFTU4HtcbN29QY+9qpjC8OkTfjZal1fkagQIqhIraEud
|
62
|
+
WkCSQVdbLtLh9PjEMd1sLUwSq4BycTlOqhS49jXoB5+io7imCI1g1VMBOIyqF+mw
|
63
|
+
s4zj2U0UAtqa/29bZbrDVoCw3o7IJT8boKyAHDjgd07GXZJEl8P4upoCg6gbVzs4
|
64
|
+
1n1/lYb0wt5R0O6hMLQ5mvZYA2KTlKVycqJcfs9Uf1eSRvj3sXlWIL2VJdURXcBc
|
65
|
+
x83PRI+IaOFvwMou2/zQGYI2sT8ggt/OplVEAlGLbE+hJrNB6AuoDI9nZZLu3wID
|
66
|
+
AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy
|
67
|
+
YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUXChNuKPXy0MsHNsPe3WZhURO2KEw
|
68
|
+
HwYDVR0jBBgwFoAUfE9Qv8ZXl2vZHPGS77VmR5R5FXQwDQYJKoZIhvcNAQEFBQAD
|
69
|
+
gYEAUS/a0aSfl3cAabsEhTR1vS6tRYOnlfGDXVIeZXnuW6D1e4JTiMP8ichPaE6A
|
70
|
+
istTT0SobYy+vnQZ/3VSFDtwQofP/JBYfsnN1KK4FXToUc6cc8qlKXZK86Qm83DF
|
71
|
+
jl/P/n2B3kOeNsCHe2YCfwItZEgZvnRKJ83FVsX/lhoCOi8=
|
72
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpQIBAAKCAQEA692+LYdUE85M4b3JyOAYsFDxMMhuInq8xuo/4sQk2YxBlFTU
|
3
|
+
4HtcbN29QY+9qpjC8OkTfjZal1fkagQIqhIraEudWkCSQVdbLtLh9PjEMd1sLUwS
|
4
|
+
q4BycTlOqhS49jXoB5+io7imCI1g1VMBOIyqF+mws4zj2U0UAtqa/29bZbrDVoCw
|
5
|
+
3o7IJT8boKyAHDjgd07GXZJEl8P4upoCg6gbVzs41n1/lYb0wt5R0O6hMLQ5mvZY
|
6
|
+
A2KTlKVycqJcfs9Uf1eSRvj3sXlWIL2VJdURXcBcx83PRI+IaOFvwMou2/zQGYI2
|
7
|
+
sT8ggt/OplVEAlGLbE+hJrNB6AuoDI9nZZLu3wIDAQABAoIBAQCkcckx/PQFiwPX
|
8
|
+
L3cL8hHEe+ps1JDUwTX0iUVZWN9IPZ1LSYnRqLBbxo04tHrMAg2H4TiR+ltWwRSj
|
9
|
+
RYS07k4NPQrL7dEKdVlBYA3hub8v9OyC+FLb94XSot3Rfvklz5eiGQ5Pj2FS/R7S
|
10
|
+
HDjxsEC2w1tLE6OX0UFua/M8u+rBFQpQw/mn07pxrTl2FzSsqCDU36ZU8MyFjlqy
|
11
|
+
J62n6s2gFF18CoNyGRyFbLMr3iAJ0LZ66L/O5Y/7uZLzl21F7mR9ednITp922Dkc
|
12
|
+
neNsFD/0lV15VTDo4MvTAOYtxmSLdODfBUWIrdiTBwpOCx4Y3c3ws0uMmXNeT2EJ
|
13
|
+
mUK0/ORhAoGBAP8mTjOn3+msZ1vxCljrUXjqgMZdJkuxMg9z4lEcqriy0z4JyNw7
|
14
|
+
ASesaxj/exPAfFjK+16Lshv3WjoJ/erZyMcSzrTFTl/tBOePIEnwK4h1cCW1FajD
|
15
|
+
nt9TJeHNcbw3igVV3WfQonvXqfEJ0Gf1xOwHfWzZa3O4LpD+UGL4RP0DAoGBAOym
|
16
|
+
/BWQbluP3FNPiBiaL5qp6e2wSQDGr34Dw0fN5e9SZLipp6pAs8BSWP9xac3ke2DT
|
17
|
+
ZCI8KIGltiw1735G21SiqpNQcyCIdmeBMVzQRu0xEv/WZYf6x1psdXgKRMfLJOPM
|
18
|
+
PNF9EOdyzeTYFEnoT7dngOVkwvQhR/iu8Sj3cpn1AoGBAImcDT1K4zbSJwStYdlH
|
19
|
+
QS+nukBB6O+V59vxsjPw9BqdR9UDzfMJV7wf/7sBv02N2QLCpwP879ipdV4sGWha
|
20
|
+
gTDs8dMJPxX5bVW+GboG8FOukwejPMVCjCMCY0H/XcIXajcqcjkViyyjyiIYGvCW
|
21
|
+
2tg5yem08YD96w+EObLHF94lAoGBAOv90WCHuSVhnqsNooA2McagLoEyzHoTqCmY
|
22
|
+
AwL11pgDqCFmPabQAvCEre99367MbCSwaSiiqRowcCxCVOOuMUaDOGrTTRtiOgEZ
|
23
|
+
mmod4LzjtTifSnyBno8TnUjppJFAiTcJEpUtjM/hcmUE/aZ+HhCdDLK0+pyNG8Jo
|
24
|
+
YmEh8YyJAoGAZ8TdHi2X60xXZi5iEmuy2fA2NVrCzh9CTu63Op9jztv+z91zHvwx
|
25
|
+
nKP1Xf9oXm0M0uJU/7iICaS1yzTzs6cnZ7z0awpI4HDMS50zIRwut8I5mPRAeqow
|
26
|
+
iZajmbchg/M3/lTommi54WM2OxjaXWZEncHG13acBh0/1SYYRccJW9Y=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE REQUEST-----
|
2
|
+
MIICuzCCAaMCAQAwdjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5vd2hlcmVzMRAw
|
3
|
+
DgYDVQQHDAdTdG9tcGVyMRgwFgYDVQQKDA9TdG9tcGVyIFRlc3RpbmcxFDASBgNV
|
4
|
+
BAsMC1NTTCBUZXN0aW5nMRIwEAYDVQQDDAlNeSBDbGllbnQwggEiMA0GCSqGSIb3
|
5
|
+
DQEBAQUAA4IBDwAwggEKAoIBAQCvYq3qCys9pg7jSrK1ujKlq1/y8FqDIkz/BZ2+
|
6
|
+
JbtoYfVWLiKcK/k7opc3qjcXQM0Sl3ZzGSTFWXhFRV0rnN/p0lbXXLnKU3OhYnDf
|
7
|
+
Uq/7fWu3aHoIaOhKq1rp5qTNOJ0uVVERSDwrV6hVN0IRDOks53nTTMgunpJK3Itm
|
8
|
+
eb9i4HVJ1zdiTjpHesAvdYwocFCIJK566y+md2Bkdw3iwk7lYgX6JyBcU3KAFuav
|
9
|
+
9TVaqWpfYAUq2P6ppC2qxIE1/FGKfJ8MQOpAYYfsCmA5RC6w9nd5Aba/FdJlzWrk
|
10
|
+
IQVZU9lq5zfqzqOxz8Nw/CxAPRK/+YQyyoPG5T2qKP94nQMXAgMBAAGgADANBgkq
|
11
|
+
hkiG9w0BAQUFAAOCAQEAAY/U48PqKy3E2xn0bvY/4xgmOglmYhoGVxs9atObzL+M
|
12
|
+
NvQkKMX63MFID66yJUWU9cUAuBtb+RdUdP9gby0IME/3SH4EHanGQZ6+PK931WtH
|
13
|
+
TiKiE+LV2njxC8XTA7scbe5QnZwp04mTgiNfFnRLU3whfAWu9wKsU8t2LTpgaOX4
|
14
|
+
UYJrk7eaPdqSCDpx6Vf2Z5oCLka93te2NB8BvcxH2ISYiDQ5WdOpxbP8ngHkq3JQ
|
15
|
+
RJSHYYxr6BKIzLJP7MCrebKcrIE3QJ+/n1KAWl9M52m7rqmSBcevdM9lERgKvjwK
|
16
|
+
AYuVlQJs+mNbhN0OudSG0dNIJN+i2lHAWRz9FzAM9A==
|
17
|
+
-----END CERTIFICATE REQUEST-----
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 2 (0x2)
|
5
|
+
Signature Algorithm: sha1WithRSAEncryption
|
6
|
+
Issuer: C=US, ST=Nowheres, L=Stomper, O=Stomper Testing, OU=CA Testing, CN=Stomper CA
|
7
|
+
Validity
|
8
|
+
Not Before: Feb 21 16:57:25 2011 GMT
|
9
|
+
Not After : Feb 18 16:57:25 2021 GMT
|
10
|
+
Subject: C=US, ST=Nowheres, O=Stomper Testing, OU=SSL Testing, CN=My Client
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
Public-Key: (2048 bit)
|
14
|
+
Modulus:
|
15
|
+
00:af:62:ad:ea:0b:2b:3d:a6:0e:e3:4a:b2:b5:ba:
|
16
|
+
32:a5:ab:5f:f2:f0:5a:83:22:4c:ff:05:9d:be:25:
|
17
|
+
bb:68:61:f5:56:2e:22:9c:2b:f9:3b:a2:97:37:aa:
|
18
|
+
37:17:40:cd:12:97:76:73:19:24:c5:59:78:45:45:
|
19
|
+
5d:2b:9c:df:e9:d2:56:d7:5c:b9:ca:53:73:a1:62:
|
20
|
+
70:df:52:af:fb:7d:6b:b7:68:7a:08:68:e8:4a:ab:
|
21
|
+
5a:e9:e6:a4:cd:38:9d:2e:55:51:11:48:3c:2b:57:
|
22
|
+
a8:55:37:42:11:0c:e9:2c:e7:79:d3:4c:c8:2e:9e:
|
23
|
+
92:4a:dc:8b:66:79:bf:62:e0:75:49:d7:37:62:4e:
|
24
|
+
3a:47:7a:c0:2f:75:8c:28:70:50:88:24:ae:7a:eb:
|
25
|
+
2f:a6:77:60:64:77:0d:e2:c2:4e:e5:62:05:fa:27:
|
26
|
+
20:5c:53:72:80:16:e6:af:f5:35:5a:a9:6a:5f:60:
|
27
|
+
05:2a:d8:fe:a9:a4:2d:aa:c4:81:35:fc:51:8a:7c:
|
28
|
+
9f:0c:40:ea:40:61:87:ec:0a:60:39:44:2e:b0:f6:
|
29
|
+
77:79:01:b6:bf:15:d2:65:cd:6a:e4:21:05:59:53:
|
30
|
+
d9:6a:e7:37:ea:ce:a3:b1:cf:c3:70:fc:2c:40:3d:
|
31
|
+
12:bf:f9:84:32:ca:83:c6:e5:3d:aa:28:ff:78:9d:
|
32
|
+
03:17
|
33
|
+
Exponent: 65537 (0x10001)
|
34
|
+
X509v3 extensions:
|
35
|
+
X509v3 Basic Constraints:
|
36
|
+
CA:FALSE
|
37
|
+
Netscape Comment:
|
38
|
+
OpenSSL Generated Certificate
|
39
|
+
X509v3 Subject Key Identifier:
|
40
|
+
7A:FC:5D:4F:48:8F:41:43:EA:E5:A6:14:2D:30:19:E5:63:70:43:5C
|
41
|
+
X509v3 Authority Key Identifier:
|
42
|
+
keyid:7C:4F:50:BF:C6:57:97:6B:D9:1C:F1:92:EF:B5:66:47:94:79:15:74
|
43
|
+
|
44
|
+
Signature Algorithm: sha1WithRSAEncryption
|
45
|
+
75:80:be:12:d8:7d:64:78:1f:62:97:a9:cd:0a:84:89:15:43:
|
46
|
+
ca:5b:a3:72:77:73:f1:aa:06:59:15:75:0b:1b:7d:79:c3:9f:
|
47
|
+
d5:3d:e5:70:df:64:ec:a4:27:d9:a3:49:02:b0:75:89:bd:dc:
|
48
|
+
9b:c4:79:33:14:38:93:2b:d8:3c:01:e6:d0:2a:56:06:6a:ba:
|
49
|
+
49:56:5a:f7:6c:49:dd:b0:5c:49:be:68:09:7d:75:2e:9f:49:
|
50
|
+
ed:e1:1e:49:6b:f1:cc:1c:1c:be:1e:ac:a9:ee:44:7b:15:32:
|
51
|
+
e0:b1:a6:9c:48:a4:1c:5a:55:66:0f:86:95:c0:02:e8:b7:a8:
|
52
|
+
b9:9d
|
53
|
+
-----BEGIN CERTIFICATE-----
|
54
|
+
MIIDTzCCArigAwIBAgIBAjANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJVUzER
|
55
|
+
MA8GA1UECAwITm93aGVyZXMxEDAOBgNVBAcMB1N0b21wZXIxGDAWBgNVBAoMD1N0
|
56
|
+
b21wZXIgVGVzdGluZzETMBEGA1UECwwKQ0EgVGVzdGluZzETMBEGA1UEAwwKU3Rv
|
57
|
+
bXBlciBDQTAeFw0xMTAyMjExNjU3MjVaFw0yMTAyMTgxNjU3MjVaMGQxCzAJBgNV
|
58
|
+
BAYTAlVTMREwDwYDVQQIDAhOb3doZXJlczEYMBYGA1UECgwPU3RvbXBlciBUZXN0
|
59
|
+
aW5nMRQwEgYDVQQLDAtTU0wgVGVzdGluZzESMBAGA1UEAwwJTXkgQ2xpZW50MIIB
|
60
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr2Kt6gsrPaYO40qytboypatf
|
61
|
+
8vBagyJM/wWdviW7aGH1Vi4inCv5O6KXN6o3F0DNEpd2cxkkxVl4RUVdK5zf6dJW
|
62
|
+
11y5ylNzoWJw31Kv+31rt2h6CGjoSqta6eakzTidLlVREUg8K1eoVTdCEQzpLOd5
|
63
|
+
00zILp6SStyLZnm/YuB1Sdc3Yk46R3rAL3WMKHBQiCSueusvpndgZHcN4sJO5WIF
|
64
|
+
+icgXFNygBbmr/U1WqlqX2AFKtj+qaQtqsSBNfxRinyfDEDqQGGH7ApgOUQusPZ3
|
65
|
+
eQG2vxXSZc1q5CEFWVPZauc36s6jsc/DcPwsQD0Sv/mEMsqDxuU9qij/eJ0DFwID
|
66
|
+
AQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVy
|
67
|
+
YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUevxdT0iPQUPq5aYULTAZ5WNwQ1ww
|
68
|
+
HwYDVR0jBBgwFoAUfE9Qv8ZXl2vZHPGS77VmR5R5FXQwDQYJKoZIhvcNAQEFBQAD
|
69
|
+
gYEAdYC+Eth9ZHgfYpepzQqEiRVDylujcndz8aoGWRV1Cxt9ecOf1T3lcN9k7KQn
|
70
|
+
2aNJArB1ib3cm8R5MxQ4kyvYPAHm0CpWBmq6SVZa92xJ3bBcSb5oCX11Lp9J7eEe
|
71
|
+
SWvxzBwcvh6sqe5EexUy4LGmnEikHFpVZg+GlcAC6LeouZ0=
|
72
|
+
-----END CERTIFICATE-----
|