mt-ruby-tls 2.4.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7e9001628b707d2570991328ffbf315669bdb05a83329575acf49679cb226843
4
+ data.tar.gz: faea4a2a16c6af705a856bbe813227713a32dc3526615dcb50e4dd62340cf077
5
+ SHA512:
6
+ metadata.gz: a2d50a058a66d8ae7139e8ad667e5bf6509a2f07c6c34cbe198ae5fc90526a3409fcac3a10372c537f4148ded93ae40bee01fb06a14ff9bda6c78c16c37252e8
7
+ data.tar.gz: 729d4621152c1d30296d283dbf85cc7e3eca101cb946c9184c2e0f5d94075591ca58e5c722df484d04e185c58a6c0cccc046cb5f4a9f12ba10d53122d741a8af
data/README.md ADDED
@@ -0,0 +1,102 @@
1
+ # mt-ruby-tls
2
+
3
+ mt-ruby-tls decouples the management of encrypted communications, putting you in charge of the transport layer. It can be used as an alternative to Ruby's SSLSocket.
4
+
5
+ [![Build Status](https://travis-ci.org/cotag/mt-ruby-tls.svg?branch=master)](https://travis-ci.org/cotag/mt-ruby-tls)
6
+
7
+
8
+ ## Install the gem
9
+
10
+ Install it with [RubyGems](https://rubygems.org/)
11
+
12
+ gem install mt-ruby-tls
13
+
14
+ or add this to your Gemfile if you use [Bundler](http://gembundler.com/):
15
+
16
+ gem "mt-ruby-tls"
17
+
18
+
19
+ Windows users will require an installation of OpenSSL (32bit or 64bit matching the Ruby installation)
20
+
21
+
22
+ ## Usage
23
+
24
+ ```ruby
25
+ require 'rubygems'
26
+ require 'mt-ruby-tls'
27
+
28
+ class transport
29
+ def initialize
30
+ is_server = true
31
+ callback_obj = self
32
+ options = {
33
+ verify_peer: true,
34
+ private_key: '/file/path.pem',
35
+ cert_chain: '/file/path.crt',
36
+ ciphers: 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!CAMELLIA:@STRENGTH' # (default)
37
+ # protocols: ["h2", "http/1.1"], # Can be used where OpenSSL >= 1.0.2 (Application Level Protocol negotiation)
38
+ # fallback: "http/1.1", # Optional fallback to a default protocol when either client or server doesn't support ALPN
39
+ # client_ca: '/file/path.pem'
40
+ }
41
+ @ssl_layer = MTRubyTls::SSL::Box.new(is_server, callback_obj, options)
42
+ end
43
+
44
+ def close_cb
45
+ puts "The transport layer should be shutdown"
46
+ end
47
+
48
+ def dispatch_cb(data)
49
+ puts "Clear text data that has been decrypted"
50
+ end
51
+
52
+ def transmit_cb(data)
53
+ puts "Encrypted data for transmission to remote"
54
+ # @tcp.send data
55
+ end
56
+
57
+ def handshake_cb(protocol)
58
+ puts "initial handshake has completed"
59
+ end
60
+
61
+ def verify_cb(cert)
62
+ # Return true or false
63
+ is_cert_valid? cert
64
+ end
65
+
66
+ def start_tls
67
+ # Start SSL negotiation when you are ready
68
+ @ssl_layer.start
69
+ end
70
+
71
+ def send(data)
72
+ @ssl_layer.encrypt(data)
73
+ end
74
+ end
75
+
76
+ #
77
+ # Create a new TLS connection
78
+ #
79
+ connection = transport.new
80
+
81
+ #
82
+ # Init the handshake
83
+ #
84
+ connection.start_tls
85
+
86
+ #
87
+ # Start sending data to the remote, this will trigger the
88
+ # transmit_cb with encrypted data to send.
89
+ #
90
+ connection.send('client request')
91
+
92
+ #
93
+ # Similarly when data is received from the remote it should be
94
+ # passed to connection.decrypt where the dispatch_cb will be
95
+ # called with clear text
96
+ #
97
+ ```
98
+
99
+
100
+ ## License and copyright
101
+
102
+ MIT