Skip to content
This repository was archived by the owner on Aug 29, 2024. It is now read-only.

Commit 56fcfe8

Browse files
authored
Added examples for an SSL client and server. (#68)
1 parent f8936cc commit 56fcfe8

File tree

4 files changed

+124
-0
lines changed

4 files changed

+124
-0
lines changed

examples/ssl/cert.crt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIE7TCCAtWgAwIBAgIBADANBgkqhkiG9w0BAQsFADA6MRIwEAYDVQQDDAlsb2Nh
3+
bGhvc3QxETAPBgNVBAsMCGFzeW5jLWlvMREwDwYDVQQKDAhTb2NrZXRyeTAeFw0y
4+
MzA5MjkyMzAyMTRaFw0yNDA5MjgyMzAyMTRaMDoxEjAQBgNVBAMMCWxvY2FsaG9z
5+
dDERMA8GA1UECwwIYXN5bmMtaW8xETAPBgNVBAoMCFNvY2tldHJ5MIICIjANBgkq
6+
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtXIHml2E3yyVVHauPWDTrKWZZcT+fBua
7+
GHZF58qyiJ7niP6ilmtxGil8ubPTb2wGUrQpNc6Pn8YY1o0XZbrg9oyQs7X5BlRu
8+
GBBbxdmJTZi7/PpWHvfKsCZc2/ntS/NsMW8ig6PWMrzZn+VWvlQj7aP/BbD+dugg
9+
7sSUUdlYGJdOddDfVpXbMqWswgvK9jYd/KywghmWBRvl8C+bp0yBcIQtbG02ukEd
10+
wIygDItInNvpHJ+njcv8QchUvPWOQgV1dZO6MTRaOeT45Dwf8X9ecuuKeoz6OH5Q
11+
pau9Ri1jKadM2WwPJzRfhVUKtWttoXWiL8LyhI3kGLFkuemEcVEhbjpTQysmi4Qs
12+
sk/Wcma6eK3/iume2euR01wE6mip0hTBDuE5l0MZZdJKSep08AXZRBX8pnvHEd82
13+
h3GPIgyO2EO7wbgM4lfGidERRbasoJUIyTmTo1poe6UwdjNKMdBYew1LmCPmcRbT
14+
4dTyChR4bMPrJWd0xXiPZEFT8AJmFduumJEu0AyN/1xMPtRqDkx7sytqMa1n8NsG
15+
c0bAoesXisdS2Peoa6G5ekMOzqFKrP1yc7dtvu8hjQtVK2uO1Y+KCSyUojFMIBGy
16+
d/v2EB/e1corqQ2BZmvzFQ4vQrZ5344fvc9B3PHswmvR0clAFLnkc1BaNY3A0p84
17+
/ptaSjAB9qkCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAbIehU4aXrhp+uCdk8xKy
18+
W7LxiJfPhF/v2crVvuqpv9+SKlPDcB7auXyIKc7cchO3P1XlNM/s+Uw6VA6QZxP9
19+
eC5dqhZ0HcagTtTTqhlaF1pzpOXXA/sGacmyeHZQu0jvilifiWNtEtqDngbBi320
20+
qjlmknsTFP1ptFDNikZPspKfn0mhzENnYDxA27K+UDMOdoqzoNxCXPYKst/1F3vS
21+
+u2A+4Z76TYvNQmf/uTcfrFEssgH+2L0q+8CPsMflHjFuBXI8m4AUa7QYSTavSkn
22+
siWMJv+JKpW81P/pQ9L/hDPKIEWpNm/J8llOdp8AVvl514VYgreV5mvwqxHxvwob
23+
fARlqBDeOKFnC1F5KZkBayd6k6te9ZGXc68JqFqzskXG6FqzCAc0rpDSzM76NWuT
24+
IhxtK8ceoekBGOMhOUIWTbFk2jqNrGbME24/j2Y5tbTuTRsuqSlKIOM2Ao3iyuzb
25+
zdqPgqqZJjac46FEhxO820LwxcGwN4FrTh0fniMa066Aws87FnZE9j7Q6rWOJMSL
26+
ItIUovKnB6thIo0OWYuj5CQrodnKvOaWYd8kWPE3kPbtd0nQ9OOoMCHf+CPVo9kN
27+
QJVFmjNEQeiq/51uvVtJs66kXRIEKWDy04S3paf9YexSxHZXBTwmch0yqJeuG6nr
28+
wUaVIUMR7tbVLe6RGgXlVcU=
29+
-----END CERTIFICATE-----

examples/ssl/client.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/usr/bin/env ruby
2+
3+
require 'async'
4+
require 'async/io'
5+
require 'async/io/stream'
6+
7+
endpoint = Async::IO::Endpoint.ssl('localhost',5678)
8+
9+
Async do |async|
10+
endpoint.connect do |socket|
11+
stream = Async::IO::Stream.new(socket)
12+
13+
(1..).each do |i|
14+
stream.puts "test #{i}"
15+
puts stream.gets
16+
sleep 1
17+
end
18+
end
19+
end

examples/ssl/key.pem

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
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
38+
J7iwqv1HtzzQkbR9+sR6kzu27DtX//JTia9DL1qOYoVRGhAgy6xFgaCPqKYmqmTq
39+
ChMcI6JQlhtqwKQ5IwK0rCSdrD1NsTrvbGdTPLybch9m7URX0c0mKr1GaSDjqCnw
40+
0ckFAoIBAHXUE854gXzHbgtL/0wByp0TXNvfd6cnz1jS7T2wrqJgE61pLB+xog3Z
41+
2fTnfH8pZoZHNCnAMo1NK+qemTGRvfKPa6tYwh1LYATNZQASBkpIoItAbXmkTMoJ
42+
c+986Eq4+pnJRbhhtFG7QPBbJ7qPgZcAC66oejC4or1eug2DPtxaalSEFqrJDges
43+
UDq6yEvgdZ3y1svq7f/3fNx13pWpCmuaWWJheEooZSTsfuhYA3Kf55fLQUPMBNGw
44+
vcELpVM6M/nmWxYPZPNl9GDKi7j3igPyrwnyHOcQ+ZJMXj74NiqlWTySik5chMJB
45+
ezixtUUG6ToRukO8gjdEgH8kDYK8a00CggEAV/56KqNrQWf7WYN2N/9qv2tiJ6BU
46+
rvv1Pp0IsVxf+upmhTSpQqEtyF7+tB7FhMdRKNzr4sUUWEZ8F8LoVuzcAbQ7eIHV
47+
pM8Jq49ngudK+AlP+Wz4ZeErkQdsV6XgL5UTpb+olvBlZwccndudJmC05IgXov06
48+
aNr8cO1o5ZlzfbRPZLRiCfMsuTWQdeNr0aPnQbLHZJ7AItx4edZZgCfWRClSrOmp
49+
UTqJoja1lzw3eHndy0cYDWrxjY4BFw24IydbPOcuaHVG2JUvrLlRTZCnx6O90yWD
50+
WfK56YbdhwS2mycgTXf02fjbPssGM/+gbpKeEwIbj3jnHmo8qY2Pu7nT5A==
51+
-----END RSA PRIVATE KEY-----

examples/ssl/server.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env ruby
2+
3+
require 'async'
4+
require 'async/io'
5+
require 'async/io/stream'
6+
7+
key_file = File.join(__dir__,'key.pem')
8+
cert_file = File.join(__dir__,'cert.crt')
9+
10+
ssl_context = OpenSSL::SSL::SSLContext.new
11+
ssl_context.key = OpenSSL::PKey::RSA.new(File.read(key_file))
12+
ssl_context.cert = OpenSSL::X509::Certificate.new(File.read(cert_file))
13+
14+
endpoint = Async::IO::Endpoint.ssl('localhost',5678, ssl_context: ssl_context)
15+
16+
Async do |async|
17+
endpoint.accept do |peer|
18+
stream = Async::IO::Stream.new(peer)
19+
20+
while line = stream.gets
21+
puts "received: #{line}"
22+
stream.puts "you sent: #{line}"
23+
end
24+
end
25+
end

0 commit comments

Comments
 (0)