EzSSL 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/ezssl.rb +73 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5680630e7ae64e9a8e228615bcfef3389edd5bf74ac58cc92fb8dce85c2039d0
|
4
|
+
data.tar.gz: 3c797a767ac64ae1de5353c7ac2f9199d448f7e4e24fc7d27d5389aac24fdf9d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fa8e6d140cd892a49d2f95fca9e5add92ef4a8544857f99d44c66b42ed6c089897dcb583c8176f082a6373f0cb24e7b469d0978fb85e41d2241f46b48794b4a5
|
7
|
+
data.tar.gz: bb7f920c5c036b9202de771bf76dbfec7691b042e8bc426e71462fae2a07195b132e6672639a8c2be3c92ab6cf12a0c3e6716531853b5af62ff5fda9af1deba0
|
data/lib/ezssl.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'openssl'
|
2
|
+
require 'socket'
|
3
|
+
module EzSSL
|
4
|
+
class Server
|
5
|
+
attr_reader :read
|
6
|
+
def initialize(ip,port,length=2048)
|
7
|
+
@socket=TCPServer.open(ip,port)
|
8
|
+
@pair=OpenSSL::PKey::RSA.new(length)
|
9
|
+
@pubkey=@pair.public_key
|
10
|
+
@read=@pubkey.public_encrypt('hello').length
|
11
|
+
end
|
12
|
+
def accept()
|
13
|
+
client=@socket.accept
|
14
|
+
client.puts @pubkey.to_s
|
15
|
+
go=true
|
16
|
+
key=''
|
17
|
+
while go
|
18
|
+
msg=client.gets
|
19
|
+
key+=msg
|
20
|
+
go=false if msg=="-----END PUBLIC KEY-----\n"
|
21
|
+
end
|
22
|
+
return Handle.new(client,key,self)
|
23
|
+
end
|
24
|
+
def decrypt(msg)
|
25
|
+
return @pair.private_decrypt(msg)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Client
|
30
|
+
def initialize(ip,port,length=2048)
|
31
|
+
@pair=OpenSSL::PKey::RSA.new(length)
|
32
|
+
@pubkey=@pair.public_key
|
33
|
+
@socket=TCPSocket.new(ip,port)
|
34
|
+
@read=@pubkey.public_encrypt('hello').length
|
35
|
+
go=true
|
36
|
+
key=''
|
37
|
+
while go
|
38
|
+
msg=@socket.gets
|
39
|
+
key+=msg
|
40
|
+
go=false if msg=="-----END PUBLIC KEY-----\n"
|
41
|
+
end
|
42
|
+
@socket.puts @pubkey.to_s
|
43
|
+
@key=OpenSSL::PKey::RSA.new(key)
|
44
|
+
end
|
45
|
+
def puts(msg)
|
46
|
+
@socket.write @key.public_encrypt(msg)
|
47
|
+
return nil
|
48
|
+
end
|
49
|
+
def gets()
|
50
|
+
msg=@socket.read(@read)
|
51
|
+
return @pair.private_decrypt(msg)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
class Handle
|
57
|
+
def initialize(client,key,server)
|
58
|
+
@client=client
|
59
|
+
@key=OpenSSL::PKey::RSA.new(key)
|
60
|
+
@server=server
|
61
|
+
end
|
62
|
+
def puts(msg)
|
63
|
+
@client.write @key.public_encrypt(msg)
|
64
|
+
end
|
65
|
+
def gets()
|
66
|
+
msg=@client.read(@server.read)
|
67
|
+
return @server.decrypt(msg)
|
68
|
+
end
|
69
|
+
def close
|
70
|
+
@client.close
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: EzSSL
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lucas Reinheart
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: OpenSSL is confusing to people new to socket programming, so i aim to
|
14
|
+
make the process easier
|
15
|
+
email: zachtonap@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/ezssl.rb
|
21
|
+
homepage: ''
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata:
|
25
|
+
source_code_uri: https://github.com/lonelylittlelucas/ezssl
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubygems_version: 3.0.3
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Easily maie secure socket connections
|
45
|
+
test_files: []
|