stomper 1.0.0 → 2.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.
Files changed (152) hide show
  1. data/.gitignore +5 -0
  2. data/{spec/spec.opts → .rspec} +0 -2
  3. data/Gemfile +4 -0
  4. data/LICENSE +201 -201
  5. data/README.md +130 -0
  6. data/Rakefile +5 -0
  7. data/examples/basic.rb +38 -0
  8. data/examples/events.rb +54 -0
  9. data/features/acking_messages.feature +147 -0
  10. data/features/disconnecting.feature +12 -0
  11. data/features/establish_connection.feature +44 -0
  12. data/features/protocol_version_negotiation.feature +61 -0
  13. data/features/receipts.feature +72 -0
  14. data/features/scopes.feature +32 -0
  15. data/features/secure_connections.feature +38 -0
  16. data/features/send_and_message.feature +28 -0
  17. data/features/steps/acking_messages_steps.rb +39 -0
  18. data/features/steps/disconnecting_steps.rb +8 -0
  19. data/features/steps/establish_connection_steps.rb +74 -0
  20. data/features/steps/frame_transmission_steps.rb +35 -0
  21. data/features/steps/protocol_version_negotiation_steps.rb +15 -0
  22. data/features/steps/receipts_steps.rb +79 -0
  23. data/features/steps/scopes_steps.rb +52 -0
  24. data/features/steps/secure_connections_steps.rb +41 -0
  25. data/features/steps/send_and_message_steps.rb +35 -0
  26. data/features/steps/subscribing_steps.rb +36 -0
  27. data/features/steps/threaded_receiver_steps.rb +8 -0
  28. data/features/steps/transactions_steps.rb +0 -0
  29. data/features/subscribing.feature +151 -0
  30. data/features/support/env.rb +11 -0
  31. data/features/support/header_helpers.rb +12 -0
  32. data/features/support/ssl/README +6 -0
  33. data/features/support/ssl/broker_cert.csr +17 -0
  34. data/features/support/ssl/broker_cert.pem +72 -0
  35. data/features/support/ssl/broker_key.pem +27 -0
  36. data/features/support/ssl/client_cert.csr +17 -0
  37. data/features/support/ssl/client_cert.pem +72 -0
  38. data/features/support/ssl/client_key.pem +27 -0
  39. data/features/support/ssl/demoCA/cacert.pem +17 -0
  40. data/features/support/ssl/demoCA/index.txt +2 -0
  41. data/features/support/ssl/demoCA/index.txt.attr +1 -0
  42. data/features/support/ssl/demoCA/index.txt.attr.old +1 -0
  43. data/features/support/ssl/demoCA/index.txt.old +1 -0
  44. data/features/support/ssl/demoCA/newcerts/01.pem +72 -0
  45. data/features/support/ssl/demoCA/newcerts/02.pem +72 -0
  46. data/features/support/ssl/demoCA/private/cakey.pem +17 -0
  47. data/features/support/ssl/demoCA/serial +1 -0
  48. data/features/support/ssl/demoCA/serial.old +1 -0
  49. data/features/support/test_stomp_server.rb +150 -0
  50. data/features/threaded_receiver.feature +11 -0
  51. data/features/transactions.feature +66 -0
  52. data/lib/stomper.rb +30 -20
  53. data/lib/stomper/connection.rb +442 -102
  54. data/lib/stomper/errors.rb +59 -0
  55. data/lib/stomper/extensions.rb +10 -0
  56. data/lib/stomper/extensions/common.rb +258 -0
  57. data/lib/stomper/extensions/events.rb +213 -0
  58. data/lib/stomper/extensions/heartbeat.rb +101 -0
  59. data/lib/stomper/extensions/scoping.rb +56 -0
  60. data/lib/stomper/frame.rb +54 -0
  61. data/lib/stomper/frame_serializer.rb +217 -0
  62. data/lib/stomper/headers.rb +15 -0
  63. data/lib/stomper/receipt_manager.rb +36 -0
  64. data/lib/stomper/receivers.rb +7 -0
  65. data/lib/stomper/receivers/threaded.rb +71 -0
  66. data/lib/stomper/scopes.rb +9 -0
  67. data/lib/stomper/scopes/header_scope.rb +49 -0
  68. data/lib/stomper/scopes/receipt_scope.rb +44 -0
  69. data/lib/stomper/scopes/transaction_scope.rb +109 -0
  70. data/lib/stomper/sockets.rb +66 -28
  71. data/lib/stomper/subscription_manager.rb +79 -0
  72. data/lib/stomper/support.rb +68 -0
  73. data/lib/stomper/support/1.8/frame_serializer.rb +53 -0
  74. data/lib/stomper/support/1.8/headers.rb +183 -0
  75. data/lib/stomper/support/1.9/frame_serializer.rb +64 -0
  76. data/lib/stomper/support/1.9/headers.rb +172 -0
  77. data/lib/stomper/support/ruby.rb +13 -0
  78. data/lib/stomper/uris.rb +49 -0
  79. data/lib/stomper/version.rb +7 -0
  80. data/spec/spec_helper.rb +13 -9
  81. data/spec/stomper/connection_spec.rb +712 -0
  82. data/spec/stomper/extensions/common_spec.rb +187 -0
  83. data/spec/stomper/extensions/events_spec.rb +78 -0
  84. data/spec/stomper/extensions/heartbeat_spec.rb +103 -0
  85. data/spec/stomper/extensions/scoping_spec.rb +21 -0
  86. data/spec/stomper/frame_serializer_1.8_spec.rb +318 -0
  87. data/spec/stomper/frame_serializer_spec.rb +316 -0
  88. data/spec/stomper/frame_spec.rb +36 -0
  89. data/spec/stomper/headers_spec.rb +224 -0
  90. data/spec/stomper/receipt_manager_spec.rb +91 -0
  91. data/spec/stomper/receivers/threaded_spec.rb +116 -0
  92. data/spec/stomper/scopes/header_scope_spec.rb +42 -0
  93. data/spec/stomper/scopes/receipt_scope_spec.rb +51 -0
  94. data/spec/stomper/scopes/transaction_scope_spec.rb +183 -0
  95. data/spec/stomper/sockets_spec.rb +113 -0
  96. data/spec/stomper/subscription_manager_spec.rb +107 -0
  97. data/spec/stomper/support_spec.rb +69 -0
  98. data/spec/stomper/uris_spec.rb +54 -0
  99. data/spec/stomper_spec.rb +9 -0
  100. data/spec/support/custom_argument_matchers.rb +57 -0
  101. data/spec/support/existential_frame_matchers.rb +19 -0
  102. data/spec/support/frame_header_matchers.rb +10 -0
  103. data/stomper.gemspec +30 -0
  104. metadata +272 -97
  105. data/AUTHORS +0 -21
  106. data/CHANGELOG +0 -20
  107. data/README.rdoc +0 -120
  108. data/lib/stomper/client.rb +0 -34
  109. data/lib/stomper/frame_reader.rb +0 -73
  110. data/lib/stomper/frame_writer.rb +0 -21
  111. data/lib/stomper/frames.rb +0 -39
  112. data/lib/stomper/frames/abort.rb +0 -10
  113. data/lib/stomper/frames/ack.rb +0 -25
  114. data/lib/stomper/frames/begin.rb +0 -11
  115. data/lib/stomper/frames/client_frame.rb +0 -89
  116. data/lib/stomper/frames/commit.rb +0 -10
  117. data/lib/stomper/frames/connect.rb +0 -10
  118. data/lib/stomper/frames/connected.rb +0 -30
  119. data/lib/stomper/frames/disconnect.rb +0 -10
  120. data/lib/stomper/frames/error.rb +0 -21
  121. data/lib/stomper/frames/message.rb +0 -48
  122. data/lib/stomper/frames/receipt.rb +0 -19
  123. data/lib/stomper/frames/send.rb +0 -10
  124. data/lib/stomper/frames/server_frame.rb +0 -38
  125. data/lib/stomper/frames/subscribe.rb +0 -42
  126. data/lib/stomper/frames/unsubscribe.rb +0 -19
  127. data/lib/stomper/open_uri_interface.rb +0 -41
  128. data/lib/stomper/receipt_handlers.rb +0 -23
  129. data/lib/stomper/receiptor.rb +0 -38
  130. data/lib/stomper/subscriber.rb +0 -76
  131. data/lib/stomper/subscription.rb +0 -128
  132. data/lib/stomper/subscriptions.rb +0 -95
  133. data/lib/stomper/threaded_receiver.rb +0 -59
  134. data/lib/stomper/transaction.rb +0 -185
  135. data/lib/stomper/transactor.rb +0 -50
  136. data/lib/stomper/uri.rb +0 -55
  137. data/spec/client_spec.rb +0 -29
  138. data/spec/connection_spec.rb +0 -22
  139. data/spec/frame_reader_spec.rb +0 -37
  140. data/spec/frame_writer_spec.rb +0 -27
  141. data/spec/frames/client_frame_spec.rb +0 -66
  142. data/spec/frames/indirect_frame_spec.rb +0 -45
  143. data/spec/frames/server_frame_spec.rb +0 -85
  144. data/spec/open_uri_interface_spec.rb +0 -132
  145. data/spec/receiptor_spec.rb +0 -35
  146. data/spec/shared_connection_examples.rb +0 -79
  147. data/spec/subscriber_spec.rb +0 -77
  148. data/spec/subscription_spec.rb +0 -157
  149. data/spec/subscriptions_spec.rb +0 -145
  150. data/spec/threaded_receiver_spec.rb +0 -33
  151. data/spec/transaction_spec.rb +0 -139
  152. data/spec/transactor_spec.rb +0 -46
@@ -0,0 +1,36 @@
1
+ When /^the client subscribes to "([^"]*)" with headers$/ do |dest, table|
2
+ @subscribe_frames ||= []
3
+ headers = table_to_headers table
4
+ @default_subscription_triggered = 0
5
+ @subscribe_frames << @connection.subscribe(dest, headers) do |m|
6
+ @default_subscription_triggered += 1
7
+ end
8
+ end
9
+
10
+ Then /^the default subscription callback should have been triggered( (\d+) times?)?$/ do |full, times|
11
+ if times.nil? || times.empty?
12
+ @default_subscription_triggered.should >= 1
13
+ else
14
+ @default_subscription_triggered.should == times.to_i
15
+ end
16
+ end
17
+
18
+ Then /^the default subscription callback should not have been triggered$/ do
19
+ @default_subscription_triggered.should == 0
20
+ end
21
+
22
+ When /^the client unsubscribes by ID$/ do
23
+ @connection.unsubscribe(@subscribe_frames.last[:id])
24
+ end
25
+
26
+ When /^the client unsubscribes by destination$/ do
27
+ @connection.unsubscribe(@subscribe_frames.last[:destination])
28
+ end
29
+
30
+ When /^the client unsubscribes by frame$/ do
31
+ @connection.unsubscribe(@subscribe_frames.last)
32
+ end
33
+
34
+ When /^the client unsubscribes from destination "([^"]*)"$/ do |destination|
35
+ @connection.unsubscribe(destination)
36
+ end
@@ -0,0 +1,8 @@
1
+ When /^the broker closes the connection unexpectedly$/ do
2
+ @broker.force_stop
3
+ end
4
+
5
+ Then /^after (\d+\.\d+) seconds, the receiver should no longer be running$/ do |sleep_for|
6
+ sleep sleep_for.to_f
7
+ @connection.running?.should be_false
8
+ end
File without changes
@@ -0,0 +1,151 @@
1
+ Feature: Subscribing
2
+ In order retrieve MESSAGEs from a broker
3
+ As a client
4
+ I want to be able to subscribe to destinations
5
+
6
+
7
+ Scenario: Delivering MESSAGE frames with subscription ID
8
+ Given a 1.1 connection between client and broker
9
+ When the client subscribes to "/queue/testing" with headers
10
+ | header-name | header-value |
11
+ | id | s-5678 |
12
+ And the broker sends a "MESSAGE" frame with headers
13
+ | header-name | header-value |
14
+ | message-id | m-1234 |
15
+ | subscription | s-5678 |
16
+ | destination | /queue/testing |
17
+ And the broker sends a "MESSAGE" frame with headers
18
+ | header-name | header-value |
19
+ | message-id | m-1235 |
20
+ | subscription | s-5678 |
21
+ | destination | /queue/testing |
22
+ And the frame exchange is completed
23
+ Then the client should have received a "MESSAGE" frame with headers
24
+ | header-name | header-value |
25
+ | message-id | m-1234 |
26
+ | subscription | s-5678 |
27
+ | destination | /queue/testing |
28
+ And the client should have received a "MESSAGE" frame with headers
29
+ | header-name | header-value |
30
+ | message-id | m-1235 |
31
+ | subscription | s-5678 |
32
+ | destination | /queue/testing |
33
+ And the default subscription callback should have been triggered 2 times
34
+
35
+
36
+ Scenario: Delivering MESSAGE frames without subscription ID
37
+ Given a 1.1 connection between client and broker
38
+ When the client subscribes to "/queue/testing" with headers
39
+ | header-name | header-value |
40
+ | id | s-5678 |
41
+ And the broker sends a "MESSAGE" frame with headers
42
+ | header-name | header-value |
43
+ | message-id | m-1234 |
44
+ | destination | /queue/testing |
45
+ And the broker sends a "MESSAGE" frame with headers
46
+ | header-name | header-value |
47
+ | message-id | m-1235 |
48
+ | destination | /queue/testing |
49
+ And the broker sends a "MESSAGE" frame with headers
50
+ | header-name | header-value |
51
+ | message-id | m-1236 |
52
+ | destination | /queue/testing |
53
+ And the frame exchange is completed
54
+ Then the client should have received a "MESSAGE" frame with headers
55
+ | header-name | header-value |
56
+ | message-id | m-1234 |
57
+ And the client should have received a "MESSAGE" frame with headers
58
+ | header-name | header-value |
59
+ | message-id | m-1235 |
60
+ And the client should have received a "MESSAGE" frame with headers
61
+ | header-name | header-value |
62
+ | message-id | m-1236 |
63
+ And the default subscription callback should have been triggered 3 times
64
+
65
+
66
+ Scenario: No callbacks for MESSAGE frames for which we have not subscribed
67
+ Given a 1.1 connection between client and broker
68
+ When the client subscribes to "/queue/testing" with headers
69
+ | header-name | header-value |
70
+ | id | s-5678 |
71
+ And the broker sends a "MESSAGE" frame with headers
72
+ | header-name | header-value |
73
+ | message-id | m-1234 |
74
+ | destination | /queue/testing |
75
+ | subscription | s-9999 |
76
+ And the frame exchange is completed
77
+ Then the client should have received a "MESSAGE" frame with headers
78
+ | header-name | header-value |
79
+ | subscription | s-9999 |
80
+ | message-id | m-1234 |
81
+ And the default subscription callback should not have been triggered
82
+
83
+
84
+ Scenario: No callbacks after unsubscribing by ID
85
+ Given a 1.1 connection between client and broker
86
+ When the client subscribes to "/queue/testing" with headers
87
+ | header-name | header-value |
88
+ | id | s-5678 |
89
+ And the broker sends a "MESSAGE" frame with headers
90
+ | header-name | header-value |
91
+ | message-id | m-1234 |
92
+ | destination | /queue/testing |
93
+ | subscription | s-5678 |
94
+ And the client unsubscribes by ID
95
+ And the broker sends a "MESSAGE" frame with headers
96
+ | header-name | header-value |
97
+ | message-id | m-1235 |
98
+ | destination | /queue/testing |
99
+ | subscription | s-5678 |
100
+ And the client disconnects
101
+ Then the default subscription callback should have been triggered 1 time
102
+
103
+ Scenario: No callbacks after unsubscribing by frame
104
+ Given a 1.1 connection between client and broker
105
+ When the client subscribes to "/queue/testing" with headers
106
+ | header-name | header-value |
107
+ | id | s-5678 |
108
+ And the broker sends a "MESSAGE" frame with headers
109
+ | header-name | header-value |
110
+ | message-id | m-1234 |
111
+ | destination | /queue/testing |
112
+ | subscription | s-5678 |
113
+ And the client unsubscribes by frame
114
+ And the broker sends a "MESSAGE" frame with headers
115
+ | header-name | header-value |
116
+ | message-id | m-1235 |
117
+ | destination | /queue/testing |
118
+ | subscription | s-5678 |
119
+ And the frame exchange is completed
120
+ Then the default subscription callback should have been triggered 1 time
121
+
122
+ Scenario: Unsubscribing from many by destination
123
+ Given a 1.1 connection between client and broker
124
+ When the client subscribes to "/queue/testing" with headers
125
+ | header-name | header-value |
126
+ | id | s-5678 |
127
+ And the client subscribes to "/queue/testing" with headers
128
+ | header-name | header-value |
129
+ | id | s-5679 |
130
+ And the broker sends a "MESSAGE" frame with headers
131
+ | header-name | header-value |
132
+ | message-id | m-1234 |
133
+ | destination | /queue/testing |
134
+ | subscription | s-5678 |
135
+ And the broker sends a "MESSAGE" frame with headers
136
+ | header-name | header-value |
137
+ | message-id | m-1235 |
138
+ | destination | /queue/testing |
139
+ And the client unsubscribes from destination "/queue/testing"
140
+ And the broker sends a "MESSAGE" frame with headers
141
+ | header-name | header-value |
142
+ | message-id | m-1235 |
143
+ | destination | /queue/testing |
144
+ And the frame exchange is completed
145
+ Then the default subscription callback should have been triggered 3 times
146
+ And the broker should have received an "UNSUBSCRIBE" frame with headers
147
+ | header-name | header-value |
148
+ | id | s-5678 |
149
+ And the broker should have received an "UNSUBSCRIBE" frame with headers
150
+ | header-name | header-value |
151
+ | id | s-5679 |
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__),"..","..","lib"))
2
+
3
+ begin
4
+ require 'simplecov'
5
+ SimpleCov.start do
6
+ add_filter "/features/"
7
+ end
8
+ rescue LoadError
9
+ end
10
+
11
+ require 'stomper'
@@ -0,0 +1,12 @@
1
+ module HeaderHelpers
2
+
3
+ def table_to_headers(table)
4
+ table.hashes.inject({}) do |hdr, pairs|
5
+ hdr[pairs['header-name']] = pairs['header-value']
6
+ hdr
7
+ end
8
+ end
9
+
10
+ end
11
+
12
+ World(HeaderHelpers)
@@ -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-----