trocla 0.1.0 → 0.1.1
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 +4 -4
- data/README.md +6 -0
- data/lib/VERSION +1 -1
- data/lib/trocla/encryptions/ssl.rb +13 -8
- data/lib/trocla/formats/x509.rb +1 -1
- data/lib/trocla/util.rb +4 -0
- data/spec/trocla/encryptions/ssl_spec.rb +5 -2
- data/spec/trocla/util_spec.rb +8 -2
- data/trocla.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cc13bcea543e4ccd2ace87edf965b1ec6e2487b
|
4
|
+
data.tar.gz: c95767b887c4ab8b7b96d44bd540466d6abc822a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9eb288ca58b60a7965bd366ac49425a0e5232ae26b358c914eeccaeedf61aa5f093b6885f4e96d859d173f5224c132bfc2079ae54e1949f80ffc5fa13294747a
|
7
|
+
data.tar.gz: 0a88f7c1e41ff3f77c0db5f2cf7bf0dffe9a6a155b5246150015b9db3871bb7a5f4a39a377eaa88e9426159e4fdd185935fbb7e03694f6dd9157be8037cb48f4
|
data/README.md
CHANGED
@@ -177,6 +177,12 @@ ssl_options:
|
|
177
177
|
|
178
178
|
## Update & Changes
|
179
179
|
|
180
|
+
### to 0.1.1
|
181
|
+
|
182
|
+
1. fix storing data longer that public Keysize -11. Thanks [Timo Goebel](https://github.com/timogoebel)
|
183
|
+
1. add a numeric only charset. Thanks [Jonas Genannt](https://github.com/hggh)
|
184
|
+
1. fix reading key expire time. Thanks [asquelt](https://github.com/asquelt)
|
185
|
+
|
180
186
|
### to 0.1.0
|
181
187
|
|
182
188
|
1. Supporting encryption of the backends. Many thanks to Thomas Gelf
|
data/lib/VERSION
CHANGED
@@ -3,22 +3,27 @@ require 'base64'
|
|
3
3
|
|
4
4
|
class Trocla::Encryptions::Ssl < Trocla::Encryptions::Base
|
5
5
|
def encrypt(value)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
public_key.public_encrypt(value)
|
6
|
+
ciphertext = ''
|
7
|
+
value.scan(/.{0,#{chunksize}}/m).each do |chunk|
|
8
|
+
ciphertext += Base64.encode64(public_key.public_encrypt(chunk)).gsub("\n",'')+"\n" if chunk
|
10
9
|
end
|
10
|
+
ciphertext
|
11
11
|
end
|
12
12
|
|
13
13
|
def decrypt(value)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
private_key.private_decrypt(value)
|
14
|
+
plaintext = ''
|
15
|
+
value.split(/\n/).each do |line|
|
16
|
+
plaintext += private_key.private_decrypt(Base64.decode64(line)) if line
|
18
17
|
end
|
18
|
+
plaintext
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
22
|
+
|
23
|
+
def chunksize
|
24
|
+
public_key.n.num_bytes - 11
|
25
|
+
end
|
26
|
+
|
22
27
|
def private_key
|
23
28
|
pass = nil
|
24
29
|
file = require_option(:private_key)
|
data/lib/trocla/formats/x509.rb
CHANGED
@@ -21,7 +21,7 @@ class Trocla::Formats::X509 < Trocla::Formats::Base
|
|
21
21
|
sign_with = options['ca'] || nil
|
22
22
|
keysize = options['keysize'] || 2048
|
23
23
|
serial = options['serial'] || 1
|
24
|
-
days = options['days'] || 365
|
24
|
+
days = options['days'].to_i || 365
|
25
25
|
altnames = options['altnames'] || nil
|
26
26
|
altnames.collect { |v| "DNS:#{v}" }.join(', ') if altnames
|
27
27
|
|
data/lib/trocla/util.rb
CHANGED
@@ -20,6 +20,7 @@ class Trocla
|
|
20
20
|
'alphanumeric' => alphanumeric,
|
21
21
|
'shellsafe' => shellsafe,
|
22
22
|
'windowssafe' => windowssafe,
|
23
|
+
'numeric' => numeric,
|
23
24
|
}
|
24
25
|
end
|
25
26
|
|
@@ -35,6 +36,9 @@ class Trocla
|
|
35
36
|
def alphanumeric
|
36
37
|
@alphanumeric ||= ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
|
37
38
|
end
|
39
|
+
def numeric
|
40
|
+
@numeric ||= ('0'..'9').to_a
|
41
|
+
end
|
38
42
|
def special_chars
|
39
43
|
@special_chars ||= "*()&![]{}-".split(//)
|
40
44
|
end
|
@@ -9,7 +9,7 @@ describe "Trocla::Encryptions::Ssl" do
|
|
9
9
|
after(:all) do
|
10
10
|
remove_ssl_keys
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
before(:each) do
|
14
14
|
expect_any_instance_of(Trocla).to receive(:read_config).and_return(ssl_test_config)
|
15
15
|
@trocla = Trocla.new
|
@@ -24,6 +24,10 @@ describe "Trocla::Encryptions::Ssl" do
|
|
24
24
|
@trocla.password('random1', 'plain').length.should eql(12)
|
25
25
|
end
|
26
26
|
|
27
|
+
it "should be able to store long random passwords" do
|
28
|
+
@trocla.set_password('random1_long','plain',4096.times.collect{|s| 'x' }.join('')).length.should eql(4096)
|
29
|
+
end
|
30
|
+
|
27
31
|
it "should be able to retrieve stored random passwords" do
|
28
32
|
stored = @trocla.password('random1', 'plain')
|
29
33
|
retrieved = @trocla.password('random1', 'plain')
|
@@ -49,5 +53,4 @@ describe "Trocla::Encryptions::Ssl" do
|
|
49
53
|
yaml['one_key']['plain'].should_not eql(yaml['another_key']['plain'])
|
50
54
|
end
|
51
55
|
end
|
52
|
-
|
53
56
|
end
|
data/spec/trocla/util_spec.rb
CHANGED
@@ -7,11 +7,11 @@ describe "Trocla::Util" do
|
|
7
7
|
it "should be random" do
|
8
8
|
Trocla::Util.send(m).should_not eql(Trocla::Util.send(m))
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
it "should default to length #{length}" do
|
12
12
|
Trocla::Util.send(m).length.should == length
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
it "should be possible to change length" do
|
16
16
|
Trocla::Util.send(m,8).length.should == 8
|
17
17
|
Trocla::Util.send(m,32).length.should == 32
|
@@ -20,6 +20,12 @@ describe "Trocla::Util" do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
describe :numeric_generator do
|
24
|
+
it "should create random numeric password" do
|
25
|
+
Trocla::Util.send(:random_str, 12, 'numeric' ).should =~ /^[0-9]{12}$/
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
23
29
|
describe :salt do
|
24
30
|
it "should only contain characters and numbers" do
|
25
31
|
Trocla::Util.salt =~ /^[a-z0-9]+$/i
|
data/trocla.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: trocla 0.1.
|
5
|
+
# stub: trocla 0.1.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "trocla"
|
9
|
-
s.version = "0.1.
|
9
|
+
s.version = "0.1.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["mh"]
|
14
|
-
s.date = "2015-
|
14
|
+
s.date = "2015-04-19"
|
15
15
|
s.description = "Trocla helps you to generate random passwords and to store them in various formats (plain, MD5, bcrypt) for later retrival."
|
16
16
|
s.email = "mh+trocla@immerda.ch"
|
17
17
|
s.executables = ["trocla"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trocla
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: moneta
|