mbedtls 0.1.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/.ruby-version +1 -0
- data/.travis.yml +19 -0
- data/COPYING +674 -0
- data/COPYING.LESSER +171 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +24 -0
- data/RDOC_MAIN.rdoc +33 -0
- data/README.md +189 -0
- data/Rakefile +46 -0
- data/certs/michiels.pem +21 -0
- data/checksum/polarssl-1.0.1.gem.sha512 +1 -0
- data/ext/polarssl/cipher.c +360 -0
- data/ext/polarssl/cipher.h +1 -0
- data/ext/polarssl/ctr_drbg.c +80 -0
- data/ext/polarssl/ctr_drbg.h +1 -0
- data/ext/polarssl/entropy.c +72 -0
- data/ext/polarssl/entropy.h +1 -0
- data/ext/polarssl/extconf.rb +46 -0
- data/ext/polarssl/polarssl.c +41 -0
- data/ext/polarssl/polarssl.h +3 -0
- data/ext/polarssl/ssl.c +414 -0
- data/ext/polarssl/ssl.h +1 -0
- data/lib/.gitkeep +0 -0
- data/lib/polarssl.rb +2 -0
- data/lib/polarssl/version.rb +3 -0
- data/mbedtls.gemspec +23 -0
- data/polarssl-ruby.sublime-project +8 -0
- data/test/cipher_encryption_test.rb +40 -0
- data/test/ctr_drbg_test.rb +10 -0
- data/test/entropy_test.rb +14 -0
- data/test/ssl_connection_test.rb +41 -0
- data/test/test_helper.rb +2 -0
- metadata +82 -0
data/ext/polarssl/ssl.h
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
void Init_ssl();
|
data/lib/.gitkeep
ADDED
File without changes
|
data/lib/polarssl.rb
ADDED
data/mbedtls.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
lib = File.expand_path("../lib/", __FILE__)
|
2
|
+
$:.unshift lib unless $:.include?(lib)
|
3
|
+
|
4
|
+
require 'polarssl/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'mbedtls'
|
8
|
+
s.version = PolarSSL::VERSION
|
9
|
+
s.date = Date.today
|
10
|
+
s.summary = 'Use the mbed TLS cryptographic and SSL library in Ruby.'
|
11
|
+
s.description = 'A gem that lets you use the mbed TLS cryptography library with Ruby.'
|
12
|
+
s.authors = ['Adam Caudill']
|
13
|
+
s.email = 'adam@adamcaudill.com'
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.homepage = 'https://github.com/adamcaudill/mbedtls-ruby'
|
16
|
+
s.license = 'LGPL-3'
|
17
|
+
s.test_files = Dir.glob('test/*_test.rb')
|
18
|
+
s.requirements = 'mbedtls, >= v2.4.x'
|
19
|
+
#s.cert_chain = ["certs/michiels.pem"]
|
20
|
+
#s.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
|
21
|
+
|
22
|
+
s.extensions = %w[ext/polarssl/extconf.rb]
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'base64'
|
3
|
+
require 'securerandom'
|
4
|
+
|
5
|
+
class CipherTest < MiniTest::Test
|
6
|
+
CIPHER = 'AES-128-CTR'
|
7
|
+
VALUE = 'test data value'
|
8
|
+
KEY = 'bar'
|
9
|
+
|
10
|
+
def test_aes_128_ctr_encrypt
|
11
|
+
iv = SecureRandom.random_bytes(16)
|
12
|
+
|
13
|
+
cipher = PolarSSL::Cipher.new CIPHER
|
14
|
+
cipher.setkey KEY, 128, PolarSSL::Cipher::OPERATION_ENCRYPT
|
15
|
+
cipher.set_iv(iv, 16)
|
16
|
+
cipher.update(VALUE)
|
17
|
+
encrypted = cipher.finish
|
18
|
+
|
19
|
+
cipher = PolarSSL::Cipher.new CIPHER
|
20
|
+
cipher.setkey KEY, 128, PolarSSL::Cipher::OPERATION_DECRYPT
|
21
|
+
cipher.set_iv(iv, 16)
|
22
|
+
cipher.update(encrypted)
|
23
|
+
decrypted = cipher.finish
|
24
|
+
|
25
|
+
assert_equal VALUE, decrypted
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_unsupported_cipher
|
29
|
+
assert_raises PolarSSL::Cipher::UnsupportedCipher do
|
30
|
+
PolarSSL::Cipher.new("meh")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_unsupported_key
|
35
|
+
assert_raises PolarSSL::Cipher::Error do
|
36
|
+
cipher = PolarSSL::Cipher.new("AES-128-CTR")
|
37
|
+
cipher.setkey("1234567890123456", 127, PolarSSL::Cipher::OPERATION_ENCRYPT)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'socket'
|
3
|
+
|
4
|
+
class SSLConnectionTest < MiniTest::Test
|
5
|
+
|
6
|
+
def test_simple_connection
|
7
|
+
|
8
|
+
socket = TCPSocket.new('polarssl.org', 443)
|
9
|
+
|
10
|
+
entropy = PolarSSL::Entropy.new
|
11
|
+
|
12
|
+
ctr_drbg = PolarSSL::CtrDrbg.new(entropy)
|
13
|
+
|
14
|
+
ssl = PolarSSL::SSL.new
|
15
|
+
|
16
|
+
ssl.set_endpoint(PolarSSL::SSL::SSL_IS_CLIENT)
|
17
|
+
ssl.set_authmode(PolarSSL::SSL::SSL_VERIFY_NONE)
|
18
|
+
ssl.set_rng(ctr_drbg)
|
19
|
+
|
20
|
+
ssl.set_socket(socket)
|
21
|
+
|
22
|
+
ssl.handshake
|
23
|
+
|
24
|
+
ssl.write("GET / HTTP/1.0\r\nHost: polarssl.org\r\n\r\n")
|
25
|
+
|
26
|
+
response = ""
|
27
|
+
|
28
|
+
while chunk = ssl.read(1024)
|
29
|
+
response << chunk
|
30
|
+
end
|
31
|
+
|
32
|
+
assert response.length > 0
|
33
|
+
|
34
|
+
ssl.close_notify
|
35
|
+
|
36
|
+
socket.close
|
37
|
+
|
38
|
+
ssl.close
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mbedtls
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0.beta1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adam Caudill
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-04-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A gem that lets you use the mbed TLS cryptography library with Ruby.
|
14
|
+
email: adam@adamcaudill.com
|
15
|
+
executables: []
|
16
|
+
extensions:
|
17
|
+
- ext/polarssl/extconf.rb
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- ".gitignore"
|
21
|
+
- ".ruby-version"
|
22
|
+
- ".travis.yml"
|
23
|
+
- COPYING
|
24
|
+
- COPYING.LESSER
|
25
|
+
- Gemfile
|
26
|
+
- Gemfile.lock
|
27
|
+
- RDOC_MAIN.rdoc
|
28
|
+
- README.md
|
29
|
+
- Rakefile
|
30
|
+
- certs/michiels.pem
|
31
|
+
- checksum/polarssl-1.0.1.gem.sha512
|
32
|
+
- ext/polarssl/cipher.c
|
33
|
+
- ext/polarssl/cipher.h
|
34
|
+
- ext/polarssl/ctr_drbg.c
|
35
|
+
- ext/polarssl/ctr_drbg.h
|
36
|
+
- ext/polarssl/entropy.c
|
37
|
+
- ext/polarssl/entropy.h
|
38
|
+
- ext/polarssl/extconf.rb
|
39
|
+
- ext/polarssl/polarssl.c
|
40
|
+
- ext/polarssl/polarssl.h
|
41
|
+
- ext/polarssl/ssl.c
|
42
|
+
- ext/polarssl/ssl.h
|
43
|
+
- lib/.gitkeep
|
44
|
+
- lib/polarssl.rb
|
45
|
+
- lib/polarssl/version.rb
|
46
|
+
- mbedtls.gemspec
|
47
|
+
- polarssl-ruby.sublime-project
|
48
|
+
- test/cipher_encryption_test.rb
|
49
|
+
- test/ctr_drbg_test.rb
|
50
|
+
- test/entropy_test.rb
|
51
|
+
- test/ssl_connection_test.rb
|
52
|
+
- test/test_helper.rb
|
53
|
+
homepage: https://github.com/adamcaudill/mbedtls-ruby
|
54
|
+
licenses:
|
55
|
+
- LGPL-3
|
56
|
+
metadata: {}
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 1.3.1
|
71
|
+
requirements:
|
72
|
+
- mbedtls, >= v2.4.x
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 2.4.8
|
75
|
+
signing_key:
|
76
|
+
specification_version: 4
|
77
|
+
summary: Use the mbed TLS cryptographic and SSL library in Ruby.
|
78
|
+
test_files:
|
79
|
+
- test/cipher_encryption_test.rb
|
80
|
+
- test/ctr_drbg_test.rb
|
81
|
+
- test/entropy_test.rb
|
82
|
+
- test/ssl_connection_test.rb
|