toq 0.1.3 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d41a110ccd54b62a49408249091b3b6be304f6a99d2fc5d117141b9257e0d645
4
- data.tar.gz: 58569c865623842134f462def0112ce25d652a02f31a90633a1b0308533b2744
3
+ metadata.gz: 68918bb645dfe313506bea599366ce4a7cb62f798eb4197ae79d0b0512cd583c
4
+ data.tar.gz: 5a4c1ef0b081c8defab9dbeb2f6d4cddaf0cda86d1caef64a95547210e43f4c2
5
5
  SHA512:
6
- metadata.gz: d20489f3adf13b919214b970820f092709d53561aba5b4360dcd110aba0b36a22d685ad70b4c7c7b5f3f82c98dd22344ce393e5eded878d312441204d7ed63e8
7
- data.tar.gz: bc8d314621b7bb94e0b2aaeb606ee423d274009dc6a8694adc5defda6ae27b3dadf18cbfd575bd1e0c3ab2ed6ce8b770421ad2f68bbd2414387606d5bd1c681e
6
+ metadata.gz: 99b93e2e200a734c95de7f6fcc1cab28382791b6c06c2f81518a6ed529e78130a5878db0ac12fe1b97a8f1f0db0699f9ca6e6f53a73387adf0b6b53020f011cc
7
+ data.tar.gz: 909e56a3bc98c2f3931135df8c01dbfed592277d8386106757b8cba5244785b2eb35f66b4ea3058ca333a4a488a117b91c7f110da0ad6f44fe879c22a7dc19d0
data/lib/toq/client.rb CHANGED
@@ -87,6 +87,28 @@ class Client
87
87
  fail ArgumentError, "Invalid port: #{@port}"
88
88
  end
89
89
 
90
+ if @opts[:tls]
91
+ if @opts[:tls][:private_key] && !File.exist?( @opts[:tls][:private_key] )
92
+ raise "Could not find private key at: #{@opts[:tls][:private_key]}"
93
+ end
94
+
95
+ if @opts[:tls][:certificate] && !File.exist?( @opts[:tls][:certificate] )
96
+ raise "Could not find certificate at: #{@opts[:tls][:certificate]}"
97
+ end
98
+
99
+ if @opts[:tls][:public_key] && !File.exist?( @opts[:tls][:public_key] )
100
+ raise "Could not find public key at: #{@opts[:tls][:public_key]}"
101
+ end
102
+
103
+ if @opts[:tls][:ca] && !File.exist?( @opts[:tls][:ca] )
104
+ raise "Could not find CA at: #{@opts[:tls][:ca]}"
105
+ end
106
+
107
+ @opts[:tls] = @opts[:tls].merge(
108
+ verify_peer: !!@opts[:tls][:ca] # Enable peer verification when CA is provided
109
+ ).compact
110
+ end
111
+
90
112
  @pool_size = @opts[:connection_pool_size] || DEFAULT_CONNECTION_POOL_SIZE
91
113
 
92
114
  @reactor = Raktr.new
data/lib/toq/protocol.rb CHANGED
@@ -21,11 +21,7 @@ module Protocol
21
21
  #
22
22
  # @private
23
23
  def on_connect
24
- start_tls(
25
- ca: @opts[:ssl_ca],
26
- private_key: @opts[:ssl_pkey],
27
- certificate: @opts[:ssl_cert]
28
- )
24
+ start_tls
29
25
 
30
26
  @status = :ready
31
27
  end
@@ -20,11 +20,11 @@ class Handler < Raktr::Connection
20
20
  # Working RPC request.
21
21
  attr_reader :request
22
22
 
23
- # @param [Server] server
24
- # RPC server.
25
- def initialize( server )
26
- @server = server
27
- @opts = server.opts.dup
23
+ # @param [Hash] opts
24
+ # Options including the RPC server instance.
25
+ def initialize( opts )
26
+ @server = opts[:server]
27
+ @opts = @server.opts.dup
28
28
  @request = nil
29
29
  end
30
30
 
data/lib/toq/server.rb CHANGED
@@ -74,14 +74,26 @@ class Server
74
74
  def initialize( opts )
75
75
  @opts = opts
76
76
 
77
- if @opts[:ssl_pkey] && @opts[:ssl_cert]
78
- if !File.exist?( @opts[:ssl_pkey] )
79
- raise "Could not find private key at: #{@opts[:ssl_pkey]}"
77
+ if @opts[:tls]
78
+ if @opts[:tls][:private_key] && !File.exist?( @opts[:tls][:private_key] )
79
+ raise "Could not find private key at: #{@opts[:tls][:private_key]}"
80
80
  end
81
81
 
82
- if !File.exist?( @opts[:ssl_cert] )
83
- raise "Could not find certificate at: #{@opts[:ssl_cert]}"
82
+ if @opts[:tls][:certificate] && !File.exist?( @opts[:tls][:certificate] )
83
+ raise "Could not find certificate at: #{@opts[:tls][:certificate]}"
84
84
  end
85
+
86
+ if @opts[:tls][:public_key] && !File.exist?( @opts[:tls][:public_key] )
87
+ raise "Could not find public key at: #{@opts[:tls][:public_key]}"
88
+ end
89
+
90
+ if @opts[:tls][:ca] && !File.exist?( @opts[:tls][:ca] )
91
+ raise "Could not find CA at: #{@opts[:tls][:ca]}"
92
+ end
93
+
94
+ @opts[:tls] = @opts[:tls].merge(
95
+ verify_peer: !!@opts[:tls][:ca] # Enable peer verification when CA is provided
96
+ ).compact
85
97
  end
86
98
 
87
99
  @token = @opts[:token]
@@ -99,7 +111,6 @@ class Server
99
111
  @port = @port.to_i
100
112
 
101
113
  @reactor = Raktr.new
102
- @reactor.run_in_thread
103
114
 
104
115
  clear_handlers
105
116
  end
@@ -157,6 +168,8 @@ class Server
157
168
 
158
169
  # Starts the server but does not block.
159
170
  def start
171
+ @reactor.run_in_thread unless @reactor.running?
172
+
160
173
  @logger.info( 'System' ){ "[PID #{Process.pid}] RPC Server started." }
161
174
  @logger.info( 'System' ) do
162
175
  interface = @socket ? @socket : "#{@host}:#{@port}"
@@ -164,7 +177,7 @@ class Server
164
177
  end
165
178
 
166
179
  opts = @socket ? @socket : [@host, @port]
167
- @reactor.listen( *[opts, Handler, self].flatten )
180
+ @reactor.listen( *[opts, Handler, @opts.merge( server: self )].flatten )
168
181
  end
169
182
 
170
183
  # @note If the called method is asynchronous it will be sent by this method
data/lib/toq/version.rb CHANGED
@@ -8,6 +8,6 @@
8
8
 
9
9
  module Toq
10
10
 
11
- VERSION = '0.1.3'
11
+ VERSION = '0.2.0'
12
12
 
13
13
  end
data/spec/pems/cacert.pem CHANGED
@@ -1,37 +1,22 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIGaDCCBFCgAwIBAgIJAPBYwqAog9f1MA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
3
- BAYTAkdSMRgwFgYDVQQDEw9BcmFjaG5pLXRlc3QtQ0ExKjAoBgkqhkiG9w0BCQEW
4
- G2FyYWNobmlAYXJhY2huaS1zY2FubmVyLmNvbTAeFw0xMjExMDIxMDIyNTNaFw0y
5
- MjEwMzExMDIyNTNaMFMxCzAJBgNVBAYTAkdSMRgwFgYDVQQDEw9BcmFjaG5pLXRl
6
- c3QtQ0ExKjAoBgkqhkiG9w0BCQEWG2FyYWNobmlAYXJhY2huaS1zY2FubmVyLmNv
7
- bTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANHbVRqyD7FT8KSCZLm1
8
- YrOwMj78OXRjMb+ucPR+fncXR1TEuPlEFojLtzqtsaA5OJXpj+0toFP+2T4DeFlu
9
- YT4TBrRQ3DxmeY2b5b6ZuurLMfMc1vU+dE92Tj4nuInBz3Z09aDQ8ZWXWzJ7uD3J
10
- eNjOcj7Jc94AGFx05Tii9VriUmX+jXQALv5S5WGVtKt4p67mLm/2xD4JhS+a0+B8
11
- s/Xo7l6EXaFeTsH5jgZDiY+f0Dpk6cM+pZ5AJVJiNonDJs8/nl9vdWPRH40GHsyN
12
- H0/lo/wTxuth/TvX3DBB5hTi/9V5eYbLTLtE1oyXgBxNKrjDu8FVn/jUl8DAIdJL
13
- n4vXwXI70wLyS6aF8uu9ApNnmSbTTc2scAKDmnlINLHqGGlpyleojqphDy3MfQYk
14
- YT9QSXNKHlO4NMLFqrqM1F3hvM3MEteeM12gAeeJLY6YYYJafMMMh/e7kK/y5u+J
15
- ype5t5N8GKskSRp0RvlRYfoH/lnyJd6FEyh9P0QHA4CKAadZBCfOcmwmTY/G0Kjn
16
- 3Y7r7BmJb4PIEcDqUjXwuyq6ZHjx7sawuGG6eXhIGln0JtSymy4j+h+xlh0S7O8B
17
- Ti6dMVxg+DNTkEJz2O00IIBcyToqZ26XovFkN5ueRNOROB3YVpldmpbLyuOQae/D
18
- 4Gc21bEWoR7OAaY2PRl4r563AgMBAAGjggE9MIIBOTAdBgNVHQ4EFgQU8VOtNUbZ
19
- rnbX0gRWIds5yaT+uCwwgYMGA1UdIwR8MHqAFPFTrTVG2a5219IEViHbOcmk/rgs
20
- oVekVTBTMQswCQYDVQQGEwJHUjEYMBYGA1UEAxMPQXJhY2huaS10ZXN0LUNBMSow
21
- KAYJKoZIhvcNAQkBFhthcmFjaG5pQGFyYWNobmktc2Nhbm5lci5jb22CCQDwWMKg
22
- KIPX9TAPBgNVHRMBAf8EBTADAQH/MBEGCWCGSAGG+EIBAQQEAwIBBjAJBgNVHRIE
23
- AjAAMCsGCWCGSAGG+EIBDQQeFhxUaW55Q0EgR2VuZXJhdGVkIENlcnRpZmljYXRl
24
- MCYGA1UdEQQfMB2BG2FyYWNobmlAYXJhY2huaS1zY2FubmVyLmNvbTAOBgNVHQ8B
25
- Af8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggIBAAAAebhmNydIUT+sZpvWM5JKNQdq
26
- YtnghnpZyM37cxLmFIeDKKPTw/3lhDViRRqQaaFTI7ukcqgloPmhMuymQT4o11Fw
27
- XLoQuIeSgS7Mg6eZF3CUKoEy1KnlluegDXtDI+WH/EQHlokBvoMaClltj6vsfqI/
28
- K9K2MAXUKi8K7NRq6VYO1QPtrBfrX9VmLyndbYm8lSG5oDkGGh8NjVgHHZDgrQAQ
29
- 2EmsWbE9yMZ6yl+AaaE5XrbPWnBI8rK77WP93JYVAhmcaQiJzPfMw3sb2QojKdak
30
- 7fvJzAjBeXAoTP5Mu/E+BPPgELzB/DnRaWlrYsAQeRZBV+I3+k5CCVqdOAdJCk5Y
31
- dFNTppHfwVaDj5qKOmodzdUDcDL6ynl15t6WHgj2yBwsDVpWsvbqyitZkemLFwrf
32
- hAedR3dKr+IxrOynST1w4LorDorcGK/DqhD475bQ9EDel5nW18hotUeeeO+K3qc7
33
- iGgj7zTKfmhzL/KMotir/SQYYxQbbtLkkhXDaNVlWiYkHotOzrNbpKAFM776CI47
34
- KTXG88FydcycGHYU8SQLEbEDiowAikr2u+CUHKrJvz2Wr8jkWaMCSfgCyokcY6vR
35
- IIqnrpYHhX2FmKf+tRB8o3KXM6uiOSUvaW23LHcs0OKqcJ0XHOkhTMDFZ82eDZzl
36
- CXJQkVNhmc0Y9prF
2
+ MIIDnzCCAoegAwIBAgIUNwaP59wwljhGL5R4wOwOpN4G7PAwDQYJKoZIhvcNAQEL
3
+ BQAwXzELMAkGA1UEBhMCVVMxDTALBgNVBAgMBFRlc3QxDTALBgNVBAcMBFRlc3Qx
4
+ GDAWBgNVBAoMD0FyYWNobmktdGVzdC1DQTEYMBYGA1UEAwwPQXJhY2huaSBUZXN0
5
+ IENBMB4XDTI2MDExMjA0NTkwNVoXDTM2MDExMDA0NTkwNVowXzELMAkGA1UEBhMC
6
+ VVMxDTALBgNVBAgMBFRlc3QxDTALBgNVBAcMBFRlc3QxGDAWBgNVBAoMD0FyYWNo
7
+ bmktdGVzdC1DQTEYMBYGA1UEAwwPQXJhY2huaSBUZXN0IENBMIIBIjANBgkqhkiG
8
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyQ/fx6LoqS/wD20vr+xGBELwKB0RoYPIV6Wd
9
+ 6Xjy+je9hP9vsff2AQ3KlrcK/QADL/iK/b+lGJqgDahjaVNAP2xJ8rNZzOpgaHl8
10
+ f+XWT80Y0j3BUkymPYCBEbXYu2NwHTuqFiLO2Ud5MKunEnUKty9eWSxSI66JhEJT
11
+ YFz8IM0+lFlesoC7fK/NDOyXgJZzb2XL4ksBZ7AaQ6InY0bNWenWXfumSfSXmHYU
12
+ AE++ajqFauecaVndYRVaRTSm2kZv1GDFE/+k81wM44t4C8IjNSZtHPw3snzlm6Vr
13
+ Pv9kQo3RmmRoXZ4KDrV4p1KnlaU0clg3fwPW/RG5wBnkQAmEzQIDAQABo1MwUTAd
14
+ BgNVHQ4EFgQUBpwAGdaVb3zz27vkHO57AVRinLkwHwYDVR0jBBgwFoAUBpwAGdaV
15
+ b3zz27vkHO57AVRinLkwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC
16
+ AQEAXemoinQV2kjZxX5Zv497lbEOyK4pb7wU2CiYdphR+3vi7dn3qfvd/3ZoETwH
17
+ 5AYYSA45FwAKv7xaIYdirVqgwFiLGx0CDCdce5VvNmST8wNL3Y5gcHr3My3zsgTg
18
+ 0wnjqVDmYzapkOY71Gfh3ZbNBpgtl9FK06sH3YkmbHok6wcjzjBkpSTiHTfZqNk2
19
+ CaazQOK8jV9FYJr/p/7ixcMj+tKWDhSQBCBAHNfH7zIvYqg/5S00BgQHlIgicGdF
20
+ sFb8aeombvxJSbJi4RWsZqONejrD3E4ZCPFLg2sj+KkLnX0xgD6HJoZC2zXfbeH8
21
+ gvIzbkOR4VZYc1kne2LUgiQEyg==
37
22
  -----END CERTIFICATE-----
@@ -1,37 +1,20 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIGazCCBFOgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJHUjEY
3
- MBYGA1UEAxMPQXJhY2huaS10ZXN0LUNBMSowKAYJKoZIhvcNAQkBFhthcmFjaG5p
4
- QGFyYWNobmktc2Nhbm5lci5jb20wHhcNMTIxMTAyMTAyNDA4WhcNMjIxMDMwMTAy
5
- NDA4WjBKMQswCQYDVQQGEwJHUjEPMA0GA1UEAxMGQ2xpZW50MSowKAYJKoZIhvcN
6
- AQkBFhthcmFjaG5pQGFyYWNobmktc2Nhbm5lci5jb20wggIiMA0GCSqGSIb3DQEB
7
- AQUAA4ICDwAwggIKAoICAQDEl91flpFH2Y1b2voSsjYDEiC70ArJWrmgm/UFdtXT
8
- pCng9ACjJWuf/evBOa8SKmNFgM1NKMF7GaZghDid3npq4Pdz/C74Ci8Q3ORMPC25
9
- Cq5T8oLYr7OGRQG7cmAqq7fP7MbPikEoaV3sg9CYdCqeK5WqT4+2eWvJGZ6t3z/g
10
- A1WYoHMbhXS1MedPlJIboSUcUlvf2BEld4EzwjCAlF7IICAT37ijtlDqVZpByfii
11
- xj47wP/fx7AtHe7tog9h1MgM0ciJgvH9TT3Kc/iSHYwrhS6jcnlwju7P1YkaRjjO
12
- ODIt7HCf6ScMmK+XIJZRuI7I4zWSSUKI5vgj5BKtlyj71xHRcKX+wfUwhz92BwwE
13
- 9kakl+0L4C11aWKHsYpT8J3NFH8soFpyUPmVQTDiNDcmbxQYHuZbSdWG5+XLYrLZ
14
- MJ8am9HB7Z9uQugyZxki/AgQyT21eCJBrg83A0zd+SYezsDA/SVEZXCCrrO5/u/f
15
- 6+RGYZcWXaIk+18uai5ax0HwksN9AnIIYyH19Fkq516a231Hy37/RKn2W/vH7A/J
16
- YdleDe1wqeIApDC/jJncuO380BdzvvwbhTkp3KKjNcx0B9d917q+pguzotiVR19n
17
- /MyIZ2/EU6r+AGyt1jxFZQhbgL6ayVlMgflyCTcsfgN7kC6dW+7L5gfBt3MwoXgK
18
- lwIDAQABo4IBUTCCAU0wCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBLAwKwYJ
19
- YIZIAYb4QgENBB4WHFRpbnlDQSBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
20
- BBYEFNDF0OQgaYJqWYB9onMoDJrI6sEHMIGDBgNVHSMEfDB6gBTxU601RtmudtfS
21
- BFYh2znJpP64LKFXpFUwUzELMAkGA1UEBhMCR1IxGDAWBgNVBAMTD0FyYWNobmkt
22
- dGVzdC1DQTEqMCgGCSqGSIb3DQEJARYbYXJhY2huaUBhcmFjaG5pLXNjYW5uZXIu
23
- Y29tggkA8FjCoCiD1/UwJgYDVR0SBB8wHYEbYXJhY2huaUBhcmFjaG5pLXNjYW5u
24
- ZXIuY29tMCYGA1UdEQQfMB2BG2FyYWNobmlAYXJhY2huaS1zY2FubmVyLmNvbTAL
25
- BgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQEFBQADggIBAKOrRHhird4fhaVMHyNdTqQx
26
- tMuqYWrPb+L4vir7Gu9bfNXlS/b5QBBeFbg5YwVeMx2KTdJR9u3XK9PaQQCC0+ak
27
- tDy3beasiFvoThWmzaVLnPR2OpdRbbK9oFZuK7Y7Sdj6hFapbPcS3hG1M7uWtmiF
28
- Cwd3hmXzvyOH7DToQ5wRAtS3kE2I5J9kH8OVP/pIZ/OTnfDTHOilznOMmlJ+LuFh
29
- ECgxIFv9GRAb+J+AxFWBFNgm6yv6cGjAnT2rZR2B2WyKpmHs+mIxqmNSYldublKi
30
- OBVl13M2ETH9NKRkvNjYbD4nsZGWO85zGiv0AVaZxwEfIHuXQdWfSIhxno3UQpxJ
31
- UlCZTpGJ0wvHHrHC7GQZCCdr83Zq8MgcMgCuE78qNbYIE+rf6+MOhnxgg0sJ12Yr
32
- +++VrQx5HDOoChr39rFISRpi2vFxz5QsJONoNLvH0uJoxQ5UDlOXqeq6TlJBBNUk
33
- 77IkxGfqU7XmF9uT8nmcU4hx8yhKFJOZ5ORHX+U8+yaQN8RsxQadF7OzS1MMQXkl
34
- UwIeFEQNNv0JOIkjZILIDHz++PL5Fa+5/lgAV24X68ZIQ5FkgoLoOIWgbcARlsj0
35
- 62BJLPhrIbCUI7XDos+hTmMPWkzfGoIahL1mEMshlrKK/XGIFh9l1iKnI/4ze1bH
36
- 9nvAl0/txVluZtYXlf2E
2
+ MIIDMTCCAhkCFFKALyLspECiIy7ffW0S0v0yIsjLMA0GCSqGSIb3DQEBCwUAMF8x
3
+ CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARUZXN0MQ0wCwYDVQQHDARUZXN0MRgwFgYD
4
+ VQQKDA9BcmFjaG5pLXRlc3QtQ0ExGDAWBgNVBAMMD0FyYWNobmkgVGVzdCBDQTAe
5
+ Fw0yNjAxMTIwNDU5MDZaFw0zNjAxMTAwNDU5MDZaMEsxCzAJBgNVBAYTAlVTMQ0w
6
+ CwYDVQQIDARUZXN0MQ0wCwYDVQQHDARUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYD
7
+ VQQDDAZDbGllbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7SwiC
8
+ MxvHMcpWDe44R9mfIic1/n2/40lB0t4nh5e+3d/nMlFchLq7drD/DNcXpmWc57mI
9
+ olAcWqHwYykE7Q27ACR0gsW8jUBtbxW8nrI1Jbkg8iI7yvO7w4cAFzrle6kdQ5ab
10
+ aY9wLFVjpJ7fvY4p/erHKuRiRxxht1UXLkX1ivFj9oDN87X8np4fPQV4ETp/UT0S
11
+ ayrfgWJe7ljHDm+og8c8mpd0ooYdiIQd/r2g4rA//ALq2hKaUWDbcIAwgxOfotQo
12
+ 6JxziZ+26t+8BJCGb+fuGad6vyxGlNudIIDxISbXtCQaTdoJlc0TNSy1urhVRtrJ
13
+ lMSRN46gc1txHNG3AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJvXWZlEBotikBIV
14
+ Sir3Usnr3CMqxgo4qnROI2bQQle6uF3wc39sBo1cfyc7oVynOmpB/qkKQmkgmdjJ
15
+ FSdVusUsIzmhBXV8boa5j7unF5SKLsTQ0v0PSvQRYcsuUa6MR2KiRecDS5JZiypx
16
+ 3ZWGPcFJr9fSBra5+qmftR/QlyRCotEsPnWI+mDeFZLjPp14FrQ+nrjjD+LmIHT7
17
+ ho9kj972ueIlhgARLMViLw00Sy6nyVGwqPDFRVnqlQuavzP2X8PfIipjjt1O6kMg
18
+ pwMbjSStJTVpPp2NVepaPqL7B8xzKLfgwSjroyuwlW5eLk3ABKO5ML/7w5JQ7piS
19
+ AHiAPBM=
37
20
  -----END CERTIFICATE-----
@@ -1,39 +1,21 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIGzjCCBLagAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJGTzEM
3
- MAoGA1UECBMDZm9vMQwwCgYDVQQHEwNmb28xDDAKBgNVBAoTA2ZvbzEMMAoGA1UE
4
- CxMDZm9vMQwwCgYDVQQDEwNmb28xGjAYBgkqhkiG9w0BCQEWC2Zvb0Bmb28uZm9v
5
- MB4XDTExMDkyNjE0MDEzM1oXDTEyMDkyNTE0MDEzM1owgYMxCzAJBgNVBAYTAkZP
6
- MQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYD
7
- VQQLEwNmb28xETAPBgNVBAMTCHNvbWVuYW1lMSkwJwYJKoZIhvcNAQkBFhpzb21l
8
- bmFtZUBzb21lbmFtZS5zb21lbmFtZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
9
- AgoCggIBAL0r5N/tveIx+Mvuwx5R1rFuK6I8udjkzj7N5zFs/JNsHA/9pVfEX6Y4
10
- NPlER/0MvPUNfX6quuAN3IdEW1g7ond/fuI4iARY/TSgPipIn6jk4v6Y2A6nOmUp
11
- O/32JWZBcM3IF0qMFGfYOq5+D20iWc4l/wPkcHz46/x8Qx3bnncXJix2M/AS9RwN
12
- Kt26Ue5tG8sPY/ckMsvMbfMQ+R+15k1x6RAnBIHeh8QsFlDFBGT+EmKzDgCI41zN
13
- akKiS+ZvJy2byKYT/r0P47Rzx6YP52+rIVh1SlkWwjD6EbVcnvDcW52rDrcqtsSg
14
- uqiZfr+2Td+iOQBtUS2Y5htcjdipRaVLLoCY0qwX6i4JKGiL6fPVTgIUReZPFdk7
15
- CHVCVAAEDl3yGLe6wpqGonKk6JjBZByiW3EE9T8f3uxS3pxD6BitpVCzwYiAJnFr
16
- DvV0xNBLriSJ+Ebcc7f0ng+L7CPO9C8ILX+vIfToURhrup4+vn7W4pyft3b588O2
17
- XBcax+XyBn1aQN6pwZrT/9wv85J94A/WBYkOvPl3Rv2uwjlzwfR/owLVPJkbowgF
18
- iUGQz9vl/0C+KcWkyjnXKXxq2EK7kszBH5m3vgDz2j3mMBGv0xfTZmDVM+Qs12xv
19
- wMwIfsOxo1oMmI6mWSx3NsJqP89ui650WAqORsWZ6O0jVv64tlnXAgMBAAGjggFe
20
- MIIBWjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIEsDArBglghkgBhvhCAQ0E
21
- HhYcVGlueUNBIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUililQx5n
22
- hJGu4Zx3C8kDJEU08ogwgaEGA1UdIwSBmTCBloAUX93JoFY2qeY+HVPZ+jAIbA/Y
23
- rkGhc6RxMG8xCzAJBgNVBAYTAkZPMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2Zv
24
- bzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzEaMBgG
25
- CSqGSIb3DQEJARYLZm9vQGZvby5mb2+CCQCmSX0QNZkjADAWBgNVHRIEDzANgQtm
26
- b29AZm9vLmZvbzAlBgNVHREEHjAcgRpzb21lbmFtZUBzb21lbmFtZS5zb21lbmFt
27
- ZTALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQEFBQADggIBAFlzE1hgfZ6Zhl8RpckD
28
- 0NDEZFAij+gQl91gcgAnkOE70JxbBiW3LXtdQvdNNpOUUdi10+UtbRyM1XayS7tQ
29
- v/yHvfTINtMXazDQiG+ClcCSapjAFhMJhA7HWMtZLtzXb/Pox2JciGdilbyPeHTb
30
- xitlun85TuTSseOkriND8OnjFolOBb/713adKE/p/UEbqZ9vbMyMgxOgemdPKKSB
31
- H8k/mdQtMbcK7Q01Z/3UMDyxiVoQk2x8SqG4NxKKTRhKN4U8DKCGO8b4awgQo+je
32
- mc01hW60ScVhBR+ha8NkvmReUm/pvIrYdaHnyJxwlY+RjIn2Y3OBlvBHkOVBCTJo
33
- MVHqVQGksEQH/U+zlcWrv8H/1JOhdnq4lXnWkFvOBRUVSXF3vw9q4aMYMB1bagAU
34
- ykciVW367xwj0HMzfAKT09uo0BhyqUuLec4/ksOeDGxLRn5KdrVwAp6b+quBHbkx
35
- BCGdLvBVxgx11E+YV+WbY0pvNNdqpsKq9oZxOLnTQek8YJ317WSzUeUPOT5zu4sM
36
- /B/i43wDiFWV1EcV8gEAy72l7jXi3++JbN56Cd03DML/BxSmfWXwrT3hKDP9mG5+
37
- X4N8iCT+NBIMDYX1EAiBfD7ioxDpIv5yu+WNhTH7qsDPAE0Q3aTd1Un1Lkn7F/51
38
- bKDKa/6PCJlZOkZGTU7wxaCy
2
+ MIIDjDCCAnSgAwIBAgIUCV5A2sVhD01dcfMs7SUet7RCxqcwDQYJKoZIhvcNAQEL
3
+ BQAwUjELMAkGA1UEBhMCVVMxDTALBgNVBAgMBFRlc3QxDTALBgNVBAcMBFRlc3Qx
4
+ EzARBgNVBAoMCkludmFsaWQtQ0ExEDAOBgNVBAMMB0ludmFsaWQwHhcNMjYwMTEy
5
+ MDUwODMyWhcNMzYwMTEwMDUwODMyWjBSMQswCQYDVQQGEwJVUzENMAsGA1UECAwE
6
+ VGVzdDENMAsGA1UEBwwEVGVzdDETMBEGA1UECgwKSW52YWxpZC1DQTEQMA4GA1UE
7
+ AwwHSW52YWxpZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM/m+UO5
8
+ EykkEW/yGKVrGhDJVgQSqk4wS7zN7+vSVVQZgTtIWs+8Kk1RrATANPe3QNPbxxsI
9
+ xIWaiuYuAEans2rXOp9RZBQdKwDJh8FXBP2N/ROASP3FoqcO9puD95Zo+KrX9aUo
10
+ SsugDc+DsvfYZhMXiA8pNCIUdkZjPjJxeNTIHgbWWpRWtv/v9RTATl3UJkioY7UI
11
+ +I2417VAtf7Qbbszo5v3zM/jlrotNKf1NJzKXfYbeB5TdN9YSXeMrSU0D5Njd6yT
12
+ QctF3OEBKyybYXrRoQzC1lbAd/y66jzNyac6+zrnecFPgemlrpSfYbpH+8vOODzf
13
+ LIaeXf0jcguRidMCAwEAAaNaMFgwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoG
14
+ CCsGAQUFBwMCMBIGA1UdEQQLMAmCB2ludmFsaWQwHQYDVR0OBBYEFAgh+574QopB
15
+ 5l6CRgH6JFRLS0t7MA0GCSqGSIb3DQEBCwUAA4IBAQBfgxsgn8rjK1pg25PRI/BV
16
+ glLhFFHsO4srNcpkK2A6akWvDIM5j40Fl3B6nsN+9nxnt4xuYXrnQhHvKH1kgPhk
17
+ WQ9aTSEQ+sjzBcdi5j21n0EPZyYtBZTtZK6mwm0ldrMk1ZeXcROOmZVfZdcGgelu
18
+ m4rzVGPKPbTIpBGaUN9kPMQWnFfPiQ05qdDGm4fc29dYmE0aHCXqxetHd99ibytI
19
+ 77So3EyvXq5TLBfoI8WD/AzZH6bgqeJjoLRBuGfNqld+AaKzwRpu6ctmJgEOvBUq
20
+ cXmY8APiReXiw+GQhti/lYLfsNoN/Ps640qcyQI0FgNRA1aKxi8fd5EPMS+H7Hbw
39
21
  -----END CERTIFICATE-----
@@ -1,51 +1,28 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 8BL1HA0q3bpR7m0byw9j9yQyy8xt8xD5H7XmTXHpECcEgd6HxCwWUMUEZP4SYrMO
6
- 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
- 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
- 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
- iIAmcWsO9XTE0EuuJIn4Rtxzt/SeD4vsI870Lwgtf68h9OhRGGu6nj6+ftbinJ+3
10
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- LPro7ZNoSraE3D7WzfJ0DSKFb0S2VxCbA1ez4rhi8zNFA8zbl6Y864WWH5dtQt83
18
- TVvmUoo7v2vVrjappsUtv+AMwEjXsRlEH+tHEuoM6DcSXP0P9ZV+l+F/rz2P4k2x
19
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- WNdSSQeI+srKOZPYBBXzZPIQ6C8ahYwbP+F6p87xmzQ8iGAC/Yx+IgGd7zhN6X2Y
34
- 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
- ++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
- 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
- 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
- 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
- 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
- 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
- 0tB8zASf4INQ7wpsBoSbXaotnTSUPoMaevF9PXHRvdM7E6nJJgcO4t+GetlGyt6y
42
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
51
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDP5vlDuRMpJBFv
3
+ 8hilaxoQyVYEEqpOMEu8ze/r0lVUGYE7SFrPvCpNUawEwDT3t0DT28cbCMSFmorm
4
+ LgBGp7Nq1zqfUWQUHSsAyYfBVwT9jf0TgEj9xaKnDvabg/eWaPiq1/WlKErLoA3P
5
+ g7L32GYTF4gPKTQiFHZGYz4ycXjUyB4G1lqUVrb/7/UUwE5d1CZIqGO1CPiNuNe1
6
+ QLX+0G27M6Ob98zP45a6LTSn9TScyl32G3geU3TfWEl3jK0lNA+TY3esk0HLRdzh
7
+ ASssm2F60aEMwtZWwHf8uuo8zcmnOvs653nBT4Hppa6Un2G6R/vLzjg83yyGnl39
8
+ I3ILkYnTAgMBAAECggEAFdAspWk6NENXXFurhVOe7lWe45otFJC8VD4hPFNwZida
9
+ PU+X+PAhBMVwcHvViDYfJFC3a8Pi5rJdJ3h6c+9YLk9lvwiJoRNMYJlEgp8a5Brt
10
+ NjTBXnWe3WX/BDh3lj2Y9Z08u0w7yMXtclvllQaMndfcC9yCs/QEqC71JtLBXvBt
11
+ ysOv52xXYFPu6oR2r1Oy2hPVcGQb4mukTP6255M5x2Di6ixxqa1R4bcnWGNQvIvr
12
+ eywL3Y+D/f8Shn6mertRenrMdEp0mdue0NzFUuMHdYNlbhKd/lktMAe/IZ0fhHan
13
+ XgdlX2igpnZdDsZY8fcgDq/qnRmlo/9rqQecpgYT9QKBgQDsKDweA3KO+v9A6RVx
14
+ bJ5aoDe9bIjo//nRfcZYJ3RNqy3TsaJBMgIitTW4oCb7cqjJsiOoLISypf0OSODj
15
+ ItChODnuRiBrTPg/GPe3UCNibOyu9Aqhr2XTeVEDRncW8BbAzPHMb42ZPv9P9s3V
16
+ NfVV7G4C7kNDrrNIIS9oKPN2BwKBgQDhXvjzI1UrXRurq+rBM4PV4TcUMLohHnVZ
17
+ pn3AhWfNY69UCU8BU9F/ePfROtq4xP1r6shMlKAR+5bd4AdIbBE096E72L+JKT4v
18
+ KL600l9ZfAaz+rkI4PFPsHusbFecj299JsDs+9r2ZRqIZVaAaWP3G/spMCUnxOwo
19
+ v8Ql3vd61QKBgQCkovQuVGb0KSX0ocpyNbA8LABQDa9xCKuoEdBKOs9JKnKbZ/Zf
20
+ DzcP7VcTbItgtzHW01sqbkbgqPm/kK0/jFD4ZFN2uur1A0b57jUcVkEk6B0lZztW
21
+ Nwp9INGKwABcPGsQZJCZ3pdP4+xoWf5rit+L1HVpk6PPNqcEPSZorkv01wKBgQDB
22
+ 3Ud7Jx6hcbNWxkjnLuAuQFB33r6NtLyvhKdRz7AOHrz4JhW/B5ID/FP4uI7jOBjj
23
+ FxB7x7G2JlyNuaOqKcPXc1hPudBxNXgXaw45T2nT+PtvILLAr3cE3MRV+tCWjVAT
24
+ MR3t/WxKXYgoYju5tG7YZ0pzEMY1YpDfMK6TASyTjQKBgCks51wYSmQxpPFYIA4I
25
+ x7DdwAm56iP1MGjaFOj17oBz42MRLMzyO86/Y1+HPLEbXVz9z3jqaEWroONjjsus
26
+ r+sN21Qq/Dayrq3t1PS4n7Yf1CWQ8bRwQHoA0IpdIPpHbJkyJnw+7jfjFRU9wFz1
27
+ swlFnuQhJACFXtrl2vS6XnpB
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,9 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+b5Q7kTKSQRb/IYpWsa
3
+ EMlWBBKqTjBLvM3v69JVVBmBO0haz7wqTVGsBMA097dA09vHGwjEhZqK5i4ARqez
4
+ atc6n1FkFB0rAMmHwVcE/Y39E4BI/cWipw72m4P3lmj4qtf1pShKy6ANz4Oy99hm
5
+ ExeIDyk0IhR2RmM+MnF41MgeBtZalFa2/+/1FMBOXdQmSKhjtQj4jbjXtUC1/tBt
6
+ uzOjm/fMz+OWui00p/U0nMpd9ht4HlN031hJd4ytJTQPk2N3rJNBy0Xc4QErLJth
7
+ etGhDMLWVsB3/LrqPM3Jpzr7Oud5wU+B6aWulJ9hukf7y844PN8shp5d/SNyC5GJ
8
+ 0wIDAQAB
9
+ -----END PUBLIC KEY-----
@@ -1,51 +1,28 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 38ewLR3u7aIPYdTIDNHIiYLx/U09ynP4kh2MK4Uuo3J5cI7uz9WJGkY4zjgyLexw
7
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- ptp9+ol94wKxR5ukfNtqi8A12pHGm2iVpqyBSL+GE3YEB9JpukmkaVgOSTNi1pTr
18
- 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
- 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
- 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
- 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
- 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
- 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
- y4PU7XwfcOwz7hr1PHp/tFLEfQ/JpOogLNe9+xeUnznrrnprRtm36CDTp/KgSgIv
25
- bwiwsKADcrmaepiytCHW7yFY3soQI+u+xdCvJjkD7dVlY4e1PxxPfghpvuz0ES60
26
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- +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
- 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
- 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
- OD6LesfpcEtvc1OckXup1WgQWdef3ESwkh+HRW+JhHCgsy7doLuJ4BfP5VA=
51
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7SwiCMxvHMcpW
3
+ De44R9mfIic1/n2/40lB0t4nh5e+3d/nMlFchLq7drD/DNcXpmWc57mIolAcWqHw
4
+ YykE7Q27ACR0gsW8jUBtbxW8nrI1Jbkg8iI7yvO7w4cAFzrle6kdQ5abaY9wLFVj
5
+ pJ7fvY4p/erHKuRiRxxht1UXLkX1ivFj9oDN87X8np4fPQV4ETp/UT0SayrfgWJe
6
+ 7ljHDm+og8c8mpd0ooYdiIQd/r2g4rA//ALq2hKaUWDbcIAwgxOfotQo6JxziZ+2
7
+ 6t+8BJCGb+fuGad6vyxGlNudIIDxISbXtCQaTdoJlc0TNSy1urhVRtrJlMSRN46g
8
+ c1txHNG3AgMBAAECggEADJhLTlolLDw5w5dfOt4Au/X+K2Ay+6RLXlz8VIMxSK6/
9
+ VQWqDq3cUtP0q3TPwsbiqW5fKIQ7HT+uXoMvPyYOg3ygdvdTrc4qlCa2uv70XqTr
10
+ 8f5mdUfneRZ5LcqMyuGJ1K52t8/IS2j9JbIXKaujyPN1hjGTtyovYJYwEjAp7eJC
11
+ 7NrerRaIdNKYbZsI6M5fNCFQOznmLVmZBqS0ET5TJhHcxYZPsf+I4/83EZOmSrU6
12
+ +H8146nGVjVOHOiZnaiGx9QHGiwFW/me+C6fbSjsc6xXYf6oAlWwbwU4pkpC6YqQ
13
+ hO+nlx77Xf+D2M+SlV33d7drLjxxTRskVSiDvwu+SQKBgQD23As4fz2SfP48Ox98
14
+ dENoIwCkm2qoOYsmbF13UMScJkAHVMW9ilcwx8bfr8awBzv5gko1QLFsSYo52mdQ
15
+ rrP+IpeJtuUDIxAKWerYwxC2/tGa5ACg3XZlyWxNfvHtJrzEdbt0ITvUh6+OczYb
16
+ DZam/xRe8GYJu2z+OTh2SOFd7wKBgQDCOl19YdvB2kc7pflRJOquSdAkzR5OFZH0
17
+ LSwbRYfKys4kVdMOnv1+RmLehSkQiD4+SLJGUbOpe3a7OHLJZOSAlyBwRw+j9sKp
18
+ Dn1pbuhGMhPdvoOseSb2cnOh9rUJlWOO0cKFAF2m2IYhBTLZpRahUIfW17kjyURg
19
+ YuvOJq8QuQKBgHkr75IO2wFRu1WDS+RCCWhPbhxecU8b19LHdGWBztA68kjm8p0k
20
+ D8JQ/ayE0olLM8Q4kQZst+pIesIFE5uF9bHz9uBRVz5f8pqyIlW+AjFhCS/3ZNuR
21
+ eXFjGnc7rbLTxerFQ3swaPbcl27b3J4Q4HceVDh51gxG5KwxGCbvhTgfAoGANDyy
22
+ TDh3fCmSou4+oZ5GJ93eRyeLkQCoIn3LsQIARYBJ9OfIPdRw5PdVO/egVbvu0Z2H
23
+ pPXwVhLImg3SgWvLMPJ0XP4frL9/Fyy4ehTED60EPs0waMCkw/+ALf1GL2+oOQ8d
24
+ O9wfU/JEELlvNa366iPYhOW7+230H+A6/1TUHLECgYAGmLxoqbLH2wqMyY+FjREG
25
+ XrVKw9aJnOy6Nlpw9Xo/2w0bx2JCrAhmM20EPb6cVVqpxiYmAFfKDsUqJktrgXXE
26
+ +MnYYC7YH/aN5QmPrdggVwemMqxvCDDzinWKRYYZ1TVvfhur4JPFlVKzQofvZrhj
27
+ glDHPK2aquwI/M8zXX6TSw==
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,9 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu0sIgjMbxzHKVg3uOEfZ
3
+ nyInNf59v+NJQdLeJ4eXvt3f5zJRXIS6u3aw/wzXF6ZlnOe5iKJQHFqh8GMpBO0N
4
+ uwAkdILFvI1AbW8VvJ6yNSW5IPIiO8rzu8OHABc65XupHUOWm2mPcCxVY6Se372O
5
+ Kf3qxyrkYkccYbdVFy5F9YrxY/aAzfO1/J6eHz0FeBE6f1E9Emsq34FiXu5Yxw5v
6
+ qIPHPJqXdKKGHYiEHf69oOKwP/wC6toSmlFg23CAMIMTn6LUKOicc4mfturfvASQ
7
+ hm/n7hmner8sRpTbnSCA8SEm17QkGk3aCZXNEzUstbq4VUbayZTEkTeOoHNbcRzR
8
+ twIDAQAB
9
+ -----END PUBLIC KEY-----
@@ -1,37 +1,20 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIGYTCCBEmgAwIBAgIBBTANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJHUjEY
3
- MBYGA1UEAxMPQXJhY2huaS10ZXN0LUNBMSowKAYJKoZIhvcNAQkBFhthcmFjaG5p
4
- QGFyYWNobmktc2Nhbm5lci5jb20wHhcNMTIxMTAyMTAzMzQxWhcNMjIxMDMwMTAz
5
- MzQxWjBNMQswCQYDVQQGEwJHUjESMBAGA1UEAxMJbG9jYWxob3N0MSowKAYJKoZI
6
- hvcNAQkBFhthcmFjaG5pQGFyYWNobmktc2Nhbm5lci5jb20wggIiMA0GCSqGSIb3
7
- DQEBAQUAA4ICDwAwggIKAoICAQCz+OAzIMwVNujjweU3Zhvk0ZGYqTdJ73Jz5v7F
8
- O5JE35hTzy1kf6EgMEqmZqKeBe95fviv+7UXcqtYoyxFPB/ssSLeUMyO0fUZZMMi
9
- 8EfqtZZveB1j7f0EfzSEG7eL5tCjb/Q8tXQvM33+0QfjnwcrSOr2fPPwbEiWU1d1
10
- cP1ZdRtgvAuo3a4Sga9xtJSFRe3iSpynJsQo482rSPpIcVfm5tArq8RVlztJPvXY
11
- A76iIgNddhdOM/3fBg+a6iXqkC7X0WPRoNt7XiVniwBIP1t5/2S7JyhRsN50Crfu
12
- 9N6lZd/fij0xwr5hLzl5lXKdUI5iYZZfTpNiIXnUICswFOUHwV/2W8XADu1HHLeX
13
- a4knqnmX0h7c+bJm3UrXMiwU61tVENogjNc/vJP9fjy/Klfvgn5BXmpyTze7Xzlj
14
- JcTt0VNNKUdieLjJsVKVF42j6RH9farshcHcCzd4701WkMEsbHZYncMUYNCBqUg7
15
- 5SuIFHIZfZ4wq06i8BLRXJRHK+P+kDp/cyJyr/UqtlJwFJIgtWYOO0SMhynBK8gC
16
- w/SE8Tlx0r/yIAyutyU6F4nE4wYfR3d8SyObzf5HD0rAtHBYUdPR5qFNePpEQlHR
17
- Kepgl/pMpPZ2X6e4HYqIBrrahMI0mAns285Z/iBKpv6MyJR1npEMNa8I0eugeAGO
18
- y0IcFQIDAQABo4IBRDCCAUAwCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBkAw
19
- KwYJYIZIAYb4QgENBB4WHFRpbnlDQSBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYD
20
- VR0OBBYEFFQOlI4fxXxPl9UYd9MdoBsXt9ZWMIGDBgNVHSMEfDB6gBTxU601Rtmu
21
- dtfSBFYh2znJpP64LKFXpFUwUzELMAkGA1UEBhMCR1IxGDAWBgNVBAMTD0FyYWNo
22
- bmktdGVzdC1DQTEqMCgGCSqGSIb3DQEJARYbYXJhY2huaUBhcmFjaG5pLXNjYW5u
23
- ZXIuY29tggkA8FjCoCiD1/UwJgYDVR0SBB8wHYEbYXJhY2huaUBhcmFjaG5pLXNj
24
- YW5uZXIuY29tMCYGA1UdEQQfMB2BG2FyYWNobmlAYXJhY2huaS1zY2FubmVyLmNv
25
- bTANBgkqhkiG9w0BAQUFAAOCAgEAeKLkpVjOdO9r5FcZPhemKsL9AFmnbqWmSeFA
26
- Cmu7wyHwbDbgCS0tWnrq45qDbnAJxAqXQKzKS7QINxR80XMpgoaglx7qd1V5MEXK
27
- LXn4G6BJ5tAgEbLY7HnsUHQnLMK/KWCzMODweM2gtPTauChF9kIKWrBJuizfldAo
28
- ww8YOeZfPc77pEhC/vjttQOzfqcLjGvzpJJQVmd+i6JtH635hou9i0QXR//Nrf+l
29
- ymrCuh7sil/Z1bJdmrQ1yPb2fNgqwHnWHqwPSFb8heEGExKC6vNCS2A+e08HGQTR
30
- wNAQQYQRihtDC4lqNFcVdgZExXRypzbPE2l49RnDXCL/JOCisAErGd0kzBBj6SGD
31
- Z7AKH87esH1mNThWFCZJTYXFTthVpNbOpPQ78UbXz9tFbfVdbWAcOn9enNbVeZa5
32
- vbqIHQs7azy4I5NwQ2zK/+MO1egUbbCEhcUzoUgEx8NB3JeW2ziZDEzzyKqTcv0V
33
- EH+suZefvhHxI3tGg2UmFD1+SBEVNw/1jv1HsduTclI7ckGHLcFjt7hG1CFLfLZ3
34
- wEhN91GCsOrbckp8wBMsT1yiimasrVL2PKfa0ywUW0D6zRvBs5bgtGaWUPy1VX5W
35
- 3LLbhwMZyaHnjT9GGw2cW1hea8TRWapj+/On4w2tRy6KtnkLBHgM3E+0E9DFwwVZ
36
- jppXDh8=
2
+ MIIDNDCCAhwCFFKALyLspECiIy7ffW0S0v0yIsjKMA0GCSqGSIb3DQEBCwUAMF8x
3
+ CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARUZXN0MQ0wCwYDVQQHDARUZXN0MRgwFgYD
4
+ VQQKDA9BcmFjaG5pLXRlc3QtQ0ExGDAWBgNVBAMMD0FyYWNobmkgVGVzdCBDQTAe
5
+ Fw0yNjAxMTIwNDU5MDVaFw0zNjAxMTAwNDU5MDVaME4xCzAJBgNVBAYTAlVTMQ0w
6
+ CwYDVQQIDARUZXN0MQ0wCwYDVQQHDARUZXN0MQ0wCwYDVQQKDARUZXN0MRIwEAYD
7
+ VQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCy
8
+ KrVmkwzpP8KOa4Hr1XtX0I5XbZI+kRE1QrACGingO8uCaycOLTdCOuX2qEmjjZ+p
9
+ IpOJVwQFJJDgK+98FxYfMxk98I2BpZCR1oV25R87NiQ+RFIdof97B4VNArRgg0iP
10
+ vhrePvjyfdg1u/gBH1sogopR8q+Wc+oev1HwIqSmIz/6PV4E8NDkoDfl3/MmJAV4
11
+ OhNlAJRMnSeTEXUUA9dfn+lVSG8MJHG2g5Zx/zp6FSzOzEX/XbHR1ASVCnNzvgSF
12
+ hOcaAtczHfi1vEBDZOm8TN1u1GKqiCzbBHCp+mMWuTATg88ecAyHosLUzM1k/9cp
13
+ rC+8LRskSwp96Bv0t8ZDAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAFHdZ0EwipHV
14
+ VsBVoadV3MSSL+e4g8qoWYosPqj4yxe/K4evOSeWISpFxz/cN9vnd8EWPhQTt6ws
15
+ KQzHx7PNwxK1yI7MTmiEANUyR0WHx2GO/3W7aif0lLlX4Y2CU+nyXzQr+gfuV6WL
16
+ VdYkZrsJeTJRjh3S7rHeHCCgnacMA+GA9pI73+Rv4Pyax2IQzL9zHaZuWnZ+bHhJ
17
+ JRbESLw1BddzS280tCdemAFJYuelkoHMmCiftRnxxh3KhxH95iNKc+rpef//Fel+
18
+ wdyYD1YnIzIMssqFs2XokVqriPW8QbgIw6WkdZjiSl02uJRnjobp8cLlM7zNaBn4
19
+ Qk3pYdqKDu4=
37
20
  -----END CERTIFICATE-----
@@ -1,51 +1,28 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIJKgIBAAKCAgEAs/jgMyDMFTbo48HlN2Yb5NGRmKk3Se9yc+b+xTuSRN+YU88t
3
- ZH+hIDBKpmaingXveX74r/u1F3KrWKMsRTwf7LEi3lDMjtH1GWTDIvBH6rWWb3gd
4
- Y+39BH80hBu3i+bQo2/0PLV0LzN9/tEH458HK0jq9nzz8GxIllNXdXD9WXUbYLwL
5
- qN2uEoGvcbSUhUXt4kqcpybEKOPNq0j6SHFX5ubQK6vEVZc7ST712AO+oiIDXXYX
6
- TjP93wYPmuol6pAu19Fj0aDbe14lZ4sASD9bef9kuycoUbDedAq37vTepWXf34o9
7
- McK+YS85eZVynVCOYmGWX06TYiF51CArMBTlB8Ff9lvFwA7tRxy3l2uJJ6p5l9Ie
8
- 3PmyZt1K1zIsFOtbVRDaIIzXP7yT/X48vypX74J+QV5qck83u185YyXE7dFTTSlH
9
- Yni4ybFSlReNo+kR/X2q7IXB3As3eO9NVpDBLGx2WJ3DFGDQgalIO+UriBRyGX2e
10
- MKtOovAS0VyURyvj/pA6f3Micq/1KrZScBSSILVmDjtEjIcpwSvIAsP0hPE5cdK/
11
- 8iAMrrclOheJxOMGH0d3fEsjm83+Rw9KwLRwWFHT0eahTXj6REJR0SnqYJf6TKT2
12
- dl+nuB2KiAa62oTCNJgJ7NvOWf4gSqb+jMiUdZ6RDDWvCNHroHgBjstCHBUCAwEA
13
- AQKCAgEAomQ78QZz/+R3CiQH7w/8tWCALq7pi5Y6wOg7FL7nAax754u2mssrGT9Z
14
- 7IIJ0+rpJcjzHuBRjCHVCHrb1HEnIUzIeK+RlIFQ1qP8C8eiLN/DKTvJ0USKHIen
15
- XFkiKmOP+Rlo2Wqltn2Q/9+fbb0uG9mE4frnphYe/T2gWgElKZYoqQWkw6+bhWlt
16
- ZH0b0pHBz4GhjpXFRFwhVZ/Y7osPVPMJ/Y3U76IxRatA67SdS/DC9o87Aj6Zoab3
17
- Z8JFijyld+mhVyL9SHkv6RkcnRRGN3PCcbkogWXFpBGT3FMpnzaoZi13gDIH1Otm
18
- whWewOJSR+VkaQUeqdoo8sZAEfeYm/14AgwJ0H7fX9iKNHfmbtji3iOcTMeeCas6
19
- Z0ODTzmIQcqA5MgHBjRhs0EacWSEdeEC9iEzpN8dyjm6J2MSqJk12vIlRPKNl5Lx
20
- 4bLFYZBGjSb2Q5SegnS2ktPKz9dsxb3zbaJ5PnrtMQ2TQNCK06F9NDFjeJuRpt2e
21
- PlnLB5vA/CEQ866zdVpwfWmaP/lbvYQKfiP0qDrUL6ws+cRWvWVj4MTiU4+Mzqdb
22
- 0hGTKMiAe2FIr7u73URabtMKlbPaiWuSQblikigRUDyEYwg7H/K+m8wsFm4Mc9AJ
23
- sT2GJW9cJ2QXAzkdGrVXsbIDWcijdN8ziLpIyP8043sHWWCRMHUCggEBAObMIc+Y
24
- MMurC7UFRNcn+hmJTRvhFsgYzds5jLhHHwNdFjvELbJYhOrRxOjzoKh65RDZ0U0T
25
- G5TgTFlGQE6q3Pca8dqFG2zncFownkkDm+AwdmdPZ/047kc4OgTYXTdaopJCWJqD
26
- sCYhnhVqE1+jpFyn+5KneBwJoCbSMDvdZAnXOVUY+aTkzmyd6IwWUPvlTtdwcNql
27
- XUQQudP6PEgDCquvAhlzhdIUaVGr9y2jdB0c055z6hsaCZJNqsUQpVm/QZAavety
28
- 2aDaU3/kuazFBtN6IviiSE1CSGDbVv7DuaBDeW32llwkGdD8WoNLLtwZXeYsWuz5
29
- Vo4ZAKaXoIr8gaMCggEBAMef8NebwQSm9B5XEwGzxOwdVNpTm75ApH8NUavjbvyk
30
- COOGSpLtdTkuRaUTOFJdjVTfOdzWzuMF+e2Y2BJe+1m32gYp5d4oGmf/LVrL75F3
31
- mhpNxl26g4Hnp38Bpz9LJc7+kWsM/za7bRMPIab5eIUa+yg3oq4pJsFZ9pry1sHS
32
- EZL0YDWHE1fiDKB7EW5iJeiKJz1CKjiQNdlEMo7nBigUiIaw8leNg+CSwf8RYBPt
33
- xbcZuQ1ihm1EjTfnkMCruVbPI0Ot4p5E2U9ByjmiHSgfj7gYg5Z+hQ498iwGXxCI
34
- PkCJkWZKeHp28ZCjKf3/46SZWgp5A7MBxygeBvY4ducCggEBAMaOi/ALIL+3kcTU
35
- mZr426OoidwYU/8lx8R4yGWpWjcMmJomdqHeoctbWKqJHoiT4goTOouyiqIULdsI
36
- Iz8KpDs6xSOYLDYPDoupFCQApNPFHbhXikFB/0zqRI/yjI+YvBBUX+HetWa4uUX3
37
- El/PaxIDut06koycg1mirrhyCSSmMr7RU8TWy/iKCYyrjlSHvMKAC7cvWQO72ANU
38
- XxQc+csmLwoyZsiLougOqAJtgvGg4TaKxrc2OVHS273aSkbh0cfmGco77psB+aAn
39
- 6M2IXA0IIJoDE2zUP2yEh116iXIlWoyN/mGa9VLkKAKYZeIZOL1TH46MHDj3raWl
40
- AQtRnT0CggEBAKx/SceWAIF7nyEEjxj+daCua99JNiB9jWd4Y+WLXyGSwVeSeKhj
41
- 5tKlaGsPo7CQxIrdZgut1xKX3HLyi2u8hafuVcjTtZ11u/O3rkJyTS6/Uft+z3W4
42
- sOC1A6idDh+EWUR398KwdWyfIs7AWY0Gr50dRoBnKv0h9CpKCe20/9x2INeCsgwv
43
- D4j2fYDDN7nRt/4sO2IU5ZUBEHcRFjsj6M8Dh0IUbyU21Qle56H4KrSt1xa0dJLb
44
- W1vaS8lOIWhMO5iG32shO90Vk06IhC2vJ1C/jRpAnJyT8XfwEW73hngrstdjyK/C
45
- lD8GvxED3UpuLxDRrtuz3H13gNfqsotbGWsCggEAAnt56fTLGmTu9pdM3FtTEaLN
46
- rmO9JbRDsxnXTN84hLci27HW0rU/AFGw+a6MHNiBNVfBqhMnZwPgAsNVf6TB//iE
47
- FZTotJWcTHkbiBwpXvRHHQ0BwxKluDicLqzzvEW8fmiNVjDig2JeS/45r2x0S4M/
48
- 3TVHK7A/vXQWvBgQi9a2ooViRjRXdhzlIkjNNsYieAwX7793Nw2KqZbHKXvelEOQ
49
- I6nTIqNDZOZ7MmGKHnGpj4SIupCKdkalQgakkGFbpltsyKBC7gooHQuKjQsYnRgl
50
- XzOy39QzIn0WF9AoyLg/W8yPsnhc1S5Ed6Lq8KL3HWV6a8n9QRSHVCX6dafBcg==
51
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCyKrVmkwzpP8KO
3
+ a4Hr1XtX0I5XbZI+kRE1QrACGingO8uCaycOLTdCOuX2qEmjjZ+pIpOJVwQFJJDg
4
+ K+98FxYfMxk98I2BpZCR1oV25R87NiQ+RFIdof97B4VNArRgg0iPvhrePvjyfdg1
5
+ u/gBH1sogopR8q+Wc+oev1HwIqSmIz/6PV4E8NDkoDfl3/MmJAV4OhNlAJRMnSeT
6
+ EXUUA9dfn+lVSG8MJHG2g5Zx/zp6FSzOzEX/XbHR1ASVCnNzvgSFhOcaAtczHfi1
7
+ vEBDZOm8TN1u1GKqiCzbBHCp+mMWuTATg88ecAyHosLUzM1k/9cprC+8LRskSwp9
8
+ 6Bv0t8ZDAgMBAAECggEAEzUk1qjGcjmm0TvTMd2TV+WVXY+OffhIZqQzMsbR+j6i
9
+ s1i3SSv5Z8Z5wZxlnqBHX4XpafEGRJerQWpQfeGZ8kXL/trO0Un2yqzZ4/YnkSFG
10
+ dFVhP5iWC77FJtxCc0qJVBXRR7ck7N+W+Ole1KAmGmPtuDqgUL6xCseNdISyQ3Fz
11
+ Ke5DTG2XjN0mMkf0SacbNDxyof/R4tKBCFUiP1Yas8Ssx0IhM6KgqrPOITAH7/7X
12
+ 0R8wtWbCcpLddvLeo0xJIXZ6vKiu5gW0aLlV8ZcigUcpFnDt0NbcKheT0lLKyZ1W
13
+ yEWj8bSPZ8FFtWT82gJeYFWZWIXPMW4Uvc+1xH/SYQKBgQDqta0n8CgRliaGRrYD
14
+ EVglolHKN12GRpws/6u1i21oqlnmaaiUjUXyXAYJFHGngHWyobf8hGlVIrJwUWFU
15
+ ko9zfM7Y6P7aVV8YzrbebnK7a0Vn7N3kaRPSvQk4s89PGIyY/koq+u3g/ftbu+3J
16
+ 2saRlXii6HiRUBkOdzalhFBR5wKBgQDCVAT7k2ACg8kN9vau8rX1W5i11nF96aGR
17
+ 4TJAdWU57tWexiy2MskVsotWyU4Nfacd//4kgD1djb+/fDh/ncdb1B1WTX3kd709
18
+ lglws8P9/ZWBF7PEMbqbsF99wBw01GFtkt3kB5ECdkG0Dnuznx9Ql64/WxpvxLzl
19
+ hGHQJSBVRQKBgHaI7jw/U10eYbJqv71o4wWOppPjxj3sJy+qp8N1+PllHyX4soTj
20
+ nDG8O+gWBRg9DjP67HqBPNkcPtXuo6McqYn/vE9bzGnjt7VFoKFRUmxIzrKfs6iJ
21
+ UNObWK7kUIx3r3oM4tQ2CjEY0/sOPBc3gBVCUbykf0+UDjN6DYUl/5J9AoGAbI1E
22
+ j0e+7QiyyeM333hjHmEBSCo3EY/tmjDCwnERj7ATknK/TTPHUiB/Z4Zh3HVhYge6
23
+ 7qbYIKdrAksgwGDhmTE/BhOZjIM6qeli8prok7wQxKD54VGqHQgD/5nN59Dvb6cH
24
+ 3jY/0bE/eJZSkX8Enh9szaVVejPbFRbDEON8UUUCgYBUJtZp8g3OcpmE+pVIE79P
25
+ eOMZu+VaCk7ugxPfGX1tYSZaj7Iq/hOkNmGzC0zgZi/E1IyUJZlcKscnzmdhgnAy
26
+ BVkzGtwn1iaYPtZS9FcjFpSgf4t7pgorWAjuH1XcuxYsSK3BGqYrm3u/OV76kDOL
27
+ X5wrKxemTJFp4QNoM1uf/g==
28
+ -----END PRIVATE KEY-----
@@ -0,0 +1,9 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsiq1ZpMM6T/CjmuB69V7
3
+ V9COV22SPpERNUKwAhop4DvLgmsnDi03Qjrl9qhJo42fqSKTiVcEBSSQ4CvvfBcW
4
+ HzMZPfCNgaWQkdaFduUfOzYkPkRSHaH/eweFTQK0YINIj74a3j748n3YNbv4AR9b
5
+ KIKKUfKvlnPqHr9R8CKkpiM/+j1eBPDQ5KA35d/zJiQFeDoTZQCUTJ0nkxF1FAPX
6
+ X5/pVUhvDCRxtoOWcf86ehUszsxF/12x0dQElQpzc74EhYTnGgLXMx34tbxAQ2Tp
7
+ vEzdbtRiqogs2wRwqfpjFrkwE4PPHnAMh6LC1MzNZP/XKawvvC0bJEsKfegb9LfG
8
+ QwIDAQAB
9
+ -----END PUBLIC KEY-----
@@ -24,25 +24,33 @@ end
24
24
 
25
25
  def rpc_opts_with_ssl_primitives
26
26
  rpc_opts.merge(
27
- port: 7332,
28
- ssl_ca: pems_path + '/pems/cacert.pem',
29
- ssl_pkey: pems_path + '/pems/client/key.pem',
30
- ssl_cert: pems_path + '/pems/client/cert.pem'
27
+ port: 7332,
28
+ tls: {
29
+ ca: pems_path + '/pems/cacert.pem',
30
+ private_key: pems_path + '/pems/client/key.pem',
31
+ certificate: pems_path + '/pems/client/cert.pem',
32
+ public_key: pems_path + '/pems/client/pub.pem'
33
+ }
31
34
  )
32
35
  end
33
36
 
34
37
  def rpc_opts_with_invalid_ssl_primitives
35
- rpc_opts_with_ssl_primitives.merge(
36
- ssl_pkey: pems_path + '/pems/client/foo-key.pem',
37
- ssl_cert: pems_path + '/pems/client/foo-cert.pem'
38
+ options = rpc_opts_with_ssl_primitives.dup
39
+ options[:tls].merge!(
40
+ private_key: pems_path + '/pems/client/foo-key.pem',
41
+ certificate: pems_path + '/pems/client/foo-cert.pem',
42
+ public_key: pems_path + '/pems/client/foo-pub.pem'
38
43
  )
44
+ options
39
45
  end
40
46
 
41
47
  def rpc_opts_with_mixed_ssl_primitives
42
- rpc_opts_with_ssl_primitives.merge(
43
- ssl_pkey: pems_path + '/pems/client/key.pem',
44
- ssl_cert: pems_path + '/pems/client/foo-cert.pem'
48
+ options = rpc_opts_with_ssl_primitives.dup
49
+ options[:tls].merge!(
50
+ private_key: pems_path + '/pems/client/key.pem',
51
+ certificate: pems_path + '/pems/client/foo-cert.pem'
45
52
  )
53
+ options
46
54
  end
47
55
 
48
56
  module MyModule
@@ -2,10 +2,13 @@ require_relative 'server'
2
2
 
3
3
  cwd = File.expand_path( File.dirname( __FILE__ ) )
4
4
  opts = rpc_opts.merge(
5
- port: 7332,
6
- ssl_ca: cwd + '/../pems/cacert.pem',
7
- ssl_pkey: cwd + '/../pems/server/key.pem',
8
- ssl_cert: cwd + '/../pems/server/cert.pem'
5
+ port: 7332,
6
+ tls: {
7
+ ca: cwd + '/../pems/cacert.pem',
8
+ private_key: cwd + '/../pems/server/key.pem',
9
+ certificate: cwd + '/../pems/server/cert.pem',
10
+ public_key: cwd + '/../pems/server/pub.pem'
11
+ }
9
12
  )
10
13
 
11
14
  start_server( opts )
@@ -96,7 +96,7 @@ describe Toq::Client do
96
96
  context 'when passed an invalid socket path' do
97
97
  it 'raises ArgumentError' do
98
98
  begin
99
- described_class.new( socket: 'blah' )
99
+ Toq::Client.new( socket: 'blah' )
100
100
  rescue => e
101
101
  e.should be_kind_of ArgumentError
102
102
  end
@@ -140,7 +140,7 @@ describe Toq::Client do
140
140
  it "serializes the client" do
141
141
  data = subject.to_rpc_data
142
142
  data.should be_kind_of Hash
143
- described_class.from_rpc_data( data ).call('test.foo', 12).should be_true
143
+ described_class.from_rpc_data( data ).call('test.foo', 12).should be_truthy
144
144
  end
145
145
  end
146
146
 
@@ -313,7 +313,7 @@ describe Toq::Client do
313
313
  begin
314
314
  call
315
315
  rescue => e
316
- e.rpc_connection_error?.should be_true
316
+ e.rpc_connection_error?.should be true
317
317
  e.should be_kind_of Toq::Exceptions::ConnectionError
318
318
  end
319
319
  end
@@ -326,7 +326,7 @@ describe Toq::Client do
326
326
  begin
327
327
  call
328
328
  rescue => e
329
- e.rpc_invalid_object_error?.should be_true
329
+ e.rpc_invalid_object_error?.should be true
330
330
  e.should be_kind_of Toq::Exceptions::InvalidObject
331
331
  end
332
332
  end
@@ -352,7 +352,7 @@ describe Toq::Client do
352
352
  begin
353
353
  call
354
354
  rescue => e
355
- e.rpc_remote_exception?.should be_true
355
+ e.rpc_remote_exception?.should be true
356
356
  e.should be_kind_of Toq::Exceptions::RemoteException
357
357
  end
358
358
  end
@@ -5,72 +5,72 @@ describe Toq::Exceptions do
5
5
  describe '#rpc_exception?' do
6
6
  context 'for RPC exceptions' do
7
7
  subject { described_class::InvalidMethod.new.rpc_exception? }
8
- it { should be_true }
8
+ it { should be true }
9
9
  end
10
10
 
11
11
  context 'for other exceptions' do
12
12
  subject { ::Exception.new.rpc_connection_error? }
13
- it { should be_false }
13
+ it { should be false }
14
14
  end
15
15
  end
16
16
 
17
17
  describe '#rpc_connection_error?' do
18
18
  context 'for ConnectionError' do
19
19
  subject { described_class::ConnectionError.new.rpc_connection_error? }
20
- it { should be_true }
20
+ it { should be true }
21
21
  end
22
22
 
23
23
  context 'for other exceptions' do
24
24
  subject { described_class::InvalidMethod.new.rpc_connection_error? }
25
- it { should be_false }
25
+ it { should be false }
26
26
  end
27
27
  end
28
28
 
29
29
  describe '#rpc_remote_exception?' do
30
30
  context 'for RemoteException' do
31
31
  subject { described_class::RemoteException.new.rpc_remote_exception? }
32
- it { should be_true }
32
+ it { should be true }
33
33
  end
34
34
 
35
35
  context 'for other exceptions' do
36
36
  subject { described_class::InvalidMethod.new.rpc_remote_exception? }
37
- it { should be_false }
37
+ it { should be false }
38
38
  end
39
39
  end
40
40
 
41
41
  describe '#rpc_invalid_object_error?' do
42
42
  context 'for invalid object RPC exceptions' do
43
43
  subject { described_class::InvalidObject.new.rpc_invalid_object_error? }
44
- it { should be_true }
44
+ it { should be true }
45
45
  end
46
46
 
47
47
  context 'for other exceptions' do
48
48
  subject { ::Exception.new.rpc_invalid_object_error? }
49
- it { should be_false }
49
+ it { should be false }
50
50
  end
51
51
  end
52
52
 
53
53
  # describe '#rpc_invalid_method_error?' do
54
54
  # context 'for invalid method RPC exceptions' do
55
55
  # subject { described_class::InvalidMethod.new.rpc_invalid_method_error? }
56
- # it { should be_true }
56
+ # it { should be true }
57
57
  # end
58
58
  #
59
59
  # context 'for other exceptions' do
60
60
  # subject { ::Exception.new.rpc_invalid_method_error? }
61
- # it { should be_false }
61
+ # it { should be false }
62
62
  # end
63
63
  # end
64
64
 
65
65
  describe '#rpc_invalid_token_error?' do
66
66
  context 'for RPC exceptions' do
67
67
  subject { described_class::InvalidToken.new.rpc_invalid_token_error? }
68
- it { should be_true }
68
+ it { should be true }
69
69
  end
70
70
 
71
71
  context 'for other exceptions' do
72
72
  subject { ::Exception.new.rpc_invalid_token_error? }
73
- it { should be_false }
73
+ it { should be false }
74
74
  end
75
75
  end
76
76
 
@@ -29,7 +29,7 @@ describe Toq::Request do
29
29
  called = false
30
30
  subject.callback = proc { called = true }
31
31
  subject.callback.call
32
- called.should be_true
32
+ called.should be true
33
33
  end
34
34
  end
35
35
 
@@ -20,14 +20,14 @@ describe Toq::Response do
20
20
  describe '#exception?' do
21
21
  context 'when #exception is not set' do
22
22
  it 'returns false' do
23
- subject.exception?.should be_false
23
+ subject.exception?.should be false
24
24
  end
25
25
  end
26
26
 
27
27
  context 'when #exception is set' do
28
28
  it 'returns true' do
29
29
  subject.exception = 'stuff'
30
- subject.exception?.should be_true
30
+ subject.exception?.should be true
31
31
  end
32
32
  end
33
33
  end
@@ -35,14 +35,14 @@ describe Toq::Response do
35
35
  describe '#async?' do
36
36
  context 'by default' do
37
37
  it 'should return false' do
38
- subject.async?.should be_false
38
+ subject.async?.should be false
39
39
  end
40
40
  end
41
41
 
42
42
  context 'after #async!' do
43
43
  it 'should return false' do
44
44
  subject.async!
45
- subject.async?.should be_true
45
+ subject.async?.should be true
46
46
  end
47
47
  end
48
48
  end
@@ -13,7 +13,6 @@ describe Toq::Server do
13
13
 
14
14
  before :all do
15
15
  Thread.new { server }
16
- client
17
16
  end
18
17
 
19
18
  describe '#initialize' do
@@ -110,13 +109,13 @@ describe Toq::Server do
110
109
  describe '#async?' do
111
110
  context 'when a method is async' do
112
111
  it 'returns true' do
113
- subject.async?( 'test', 'delay' ).should be_true
112
+ subject.async?( 'test', 'delay' ).should be true
114
113
  end
115
114
  end
116
115
 
117
116
  context 'when a method is sync' do
118
117
  it 'returns false' do
119
- subject.async?( 'test', 'foo' ).should be_false
118
+ subject.async?( 'test', 'foo' ).should be false
120
119
  end
121
120
  end
122
121
  end
@@ -124,13 +123,13 @@ describe Toq::Server do
124
123
  describe '#async_check' do
125
124
  context 'when a method is async' do
126
125
  it 'returns true' do
127
- subject.async_check( Test.new.method( :delay ) ).should be_true
126
+ subject.async_check( Test.new.method( :delay ) ).should be true
128
127
  end
129
128
  end
130
129
 
131
130
  context 'when a method is sync' do
132
131
  it 'returns false' do
133
- subject.async_check( Test.new.method( :foo ) ).should be_false
132
+ subject.async_check( Test.new.method( :foo ) ).should be false
134
133
  end
135
134
  end
136
135
  end
@@ -138,13 +137,13 @@ describe Toq::Server do
138
137
  describe '#object_exist?' do
139
138
  context 'when an object exists' do
140
139
  it 'returns true' do
141
- subject.object_exist?( 'test' ).should be_true
140
+ subject.object_exist?( 'test' ).should be true
142
141
  end
143
142
  end
144
143
 
145
144
  context 'when an object does not exist' do
146
145
  it 'returns false' do
147
- subject.object_exist?( 'foo' ).should be_false
146
+ subject.object_exist?( 'foo' ).should be false
148
147
  end
149
148
  end
150
149
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tasos Laskos
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 2026-01-04 00:00:00.000000000 Z
11
+ date: 2026-01-12 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: logger
@@ -44,9 +45,9 @@ email: tasos.laskos@gmail.com
44
45
  executables: []
45
46
  extensions: []
46
47
  extra_rdoc_files:
47
- - CHANGELOG.md
48
- - LICENSE.md
49
48
  - README.md
49
+ - LICENSE.md
50
+ - CHANGELOG.md
50
51
  files:
51
52
  - CHANGELOG.md
52
53
  - LICENSE.md
@@ -69,9 +70,12 @@ files:
69
70
  - spec/pems/client/cert.pem
70
71
  - spec/pems/client/foo-cert.pem
71
72
  - spec/pems/client/foo-key.pem
73
+ - spec/pems/client/foo-pub.pem
72
74
  - spec/pems/client/key.pem
75
+ - spec/pems/client/pub.pem
73
76
  - spec/pems/server/cert.pem
74
77
  - spec/pems/server/key.pem
78
+ - spec/pems/server/pub.pem
75
79
  - spec/servers/basic.rb
76
80
  - spec/servers/server.rb
77
81
  - spec/servers/unix_socket.rb
@@ -88,6 +92,7 @@ homepage: https://github.com/qadron/toq
88
92
  licenses:
89
93
  - MPL v2
90
94
  metadata: {}
95
+ post_install_message:
91
96
  rdoc_options:
92
97
  - "--charset=UTF-8"
93
98
  require_paths:
@@ -103,7 +108,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
108
  - !ruby/object:Gem::Version
104
109
  version: '0'
105
110
  requirements: []
106
- rubygems_version: 3.6.9
111
+ rubygems_version: 3.4.20
112
+ signing_key:
107
113
  specification_version: 4
108
114
  summary: Simple RPC protocol.
109
115
  test_files:
@@ -111,9 +117,12 @@ test_files:
111
117
  - spec/pems/client/cert.pem
112
118
  - spec/pems/client/foo-cert.pem
113
119
  - spec/pems/client/foo-key.pem
120
+ - spec/pems/client/foo-pub.pem
114
121
  - spec/pems/client/key.pem
122
+ - spec/pems/client/pub.pem
115
123
  - spec/pems/server/cert.pem
116
124
  - spec/pems/server/key.pem
125
+ - spec/pems/server/pub.pem
117
126
  - spec/servers/basic.rb
118
127
  - spec/servers/server.rb
119
128
  - spec/servers/unix_socket.rb