encrypto 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f13267e7d7ae1deb4d799f735feb56237dbb6e81
4
+ data.tar.gz: 7c4650cfb9a559911b11d78b44f45431d303b970
5
+ SHA512:
6
+ metadata.gz: 391fd62a25f093a32335ec93fd869442320e8af94c28e9c9c4a059dbd02640bc837ad84d2c3822a46eab855bc6dced0efad09a54d1f62f5c673fb1d6ace21a65
7
+ data.tar.gz: 289cdcaab80e95e7ecc591a5d9cb0234eeb646fd9fe12f268fd3a8cbc5c3ae47002691cb264a873d47d34397e90a20594c78d252dce3fc6251cf2b667f87bdd6
@@ -2,43 +2,43 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  encrypto (0.0.2)
5
- attr_encrypted (~> 1.3.0)
6
- rbnacl (~> 2.0.0)
5
+ attr_encrypted (~> 1.3.1)
6
+ rbnacl (~> 3.0.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- attr_encrypted (1.3.0)
11
+ attr_encrypted (1.3.2)
12
12
  encryptor (>= 1.3.0)
13
13
  coderay (1.1.0)
14
14
  diff-lcs (1.2.5)
15
- docile (1.1.1)
15
+ docile (1.1.3)
16
16
  encryptor (1.3.0)
17
17
  ffi (1.9.3)
18
18
  method_source (0.8.2)
19
- multi_json (1.8.2)
20
- pry (0.9.12.4)
19
+ multi_json (1.9.3)
20
+ pry (0.9.12.6)
21
21
  coderay (~> 1.0)
22
22
  method_source (~> 0.8)
23
23
  slop (~> 3.4)
24
24
  pry-nav (0.2.3)
25
25
  pry (~> 0.9.10)
26
- rbnacl (2.0.0)
26
+ rbnacl (3.0.0)
27
27
  ffi
28
28
  rspec (2.14.1)
29
29
  rspec-core (~> 2.14.0)
30
30
  rspec-expectations (~> 2.14.0)
31
31
  rspec-mocks (~> 2.14.0)
32
- rspec-core (2.14.7)
33
- rspec-expectations (2.14.4)
32
+ rspec-core (2.14.8)
33
+ rspec-expectations (2.14.5)
34
34
  diff-lcs (>= 1.1.3, < 2.0)
35
- rspec-mocks (2.14.4)
35
+ rspec-mocks (2.14.6)
36
36
  simplecov (0.8.2)
37
37
  docile (~> 1.1.0)
38
38
  multi_json
39
39
  simplecov-html (~> 0.8.0)
40
40
  simplecov-html (0.8.0)
41
- slop (3.4.7)
41
+ slop (3.5.0)
42
42
  spec_coverage (0.0.5)
43
43
  rspec (~> 2.0)
44
44
  simplecov
@@ -14,10 +14,10 @@ Gem::Specification.new do |gem|
14
14
  gem.require_paths = ["lib"]
15
15
  gem.homepage = 'http://github.com/finalist/encrypto'
16
16
 
17
- gem.add_dependency "rbnacl", "~> 2.0.0"
18
- gem.add_dependency "attr_encrypted", "~> 1.3.0"
17
+ gem.add_runtime_dependency 'rbnacl', '~> 3.0', '>= 3.0.0'
18
+ gem.add_runtime_dependency 'attr_encrypted', '~> 1.3', '>= 1.3.1'
19
19
 
20
- gem.add_development_dependency "pry-nav", "~> 0.2.3"
21
- gem.add_development_dependency "rspec", "~> 2.14.1"
22
- gem.add_development_dependency "spec_coverage", "~> 0.0.5"
20
+ gem.add_development_dependency 'pry-nav', '~> 0.2', '>= 0.2.3'
21
+ gem.add_development_dependency 'rspec', '~> 2.14', '>= 2.14.1'
22
+ gem.add_development_dependency 'spec_coverage', '~> 0.0', '>= 0.0.5'
23
23
  end
@@ -10,7 +10,7 @@ module Encrypto
10
10
  end
11
11
 
12
12
  def open(cipher_text)
13
- @nacl_box.open(cipher_text.clone)
13
+ @nacl_box.open(cipher_text)
14
14
  end
15
15
 
16
16
  def self.from_passphrase(passphrase)
@@ -19,11 +19,11 @@ module Encrypto
19
19
  end
20
20
 
21
21
  def self.from_secret_key(secret_key)
22
- new(RbNaCl::RandomNonceBox.from_secret_key(secret_key))
22
+ new(RbNaCl::SimpleBox.from_secret_key(secret_key.b))
23
23
  end
24
24
 
25
25
  def self.from_keypair(public_key, private_key)
26
- new(RbNaCl::RandomNonceBox.from_keypair(public_key, private_key))
26
+ new(RbNaCl::SimpleBox.from_keypair(public_key, private_key))
27
27
  end
28
28
 
29
29
  end
@@ -7,7 +7,7 @@ module Encrypto
7
7
  end
8
8
 
9
9
  def self.to_bytes(key)
10
- key.to_s
10
+ key.to_bytes
11
11
  end
12
12
 
13
13
  def self.public_key_from_bytes(bytes)
@@ -1,3 +1,3 @@
1
1
  module Encrypto
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -7,64 +7,65 @@ module Encrypto
7
7
  let(:passphrase) { 'password' }
8
8
 
9
9
  it 'hashes the secret key' do
10
- RbNaCl::Hash.should_receive(:sha256).with(passphrase)
11
- RbNaCl::RandomNonceBox.stub(:from_secret_key)
12
- Encrypto::Box.from_passphrase(passphrase)
10
+ sha = double
11
+ RbNaCl::Hash.should_receive(:sha256).with(passphrase).and_return(sha)
12
+ Encrypto::Box.should_receive(:from_secret_key).with(sha)
13
+ Box.from_passphrase(passphrase)
13
14
  end
14
15
 
15
16
  it 'creates a random nonce box based on the hashed secret key' do
16
- RbNaCl::Hash.stub(:sha256 => "sha")
17
- RbNaCl::RandomNonceBox.should_receive(:from_secret_key).with("sha")
18
- Encrypto::Box.from_passphrase(passphrase)
17
+ RbNaCl::Hash.stub(sha256: 'sha')
18
+ RbNaCl::SimpleBox.should_receive(:from_secret_key).with('sha')
19
+ Box.from_passphrase(passphrase)
19
20
  end
20
21
 
21
22
  it 'initializes with a random nonce box' do
22
- box = double("box")
23
- RbNaCl::Hash.stub(:sha256 => "sha")
24
- RbNaCl::RandomNonceBox.stub(:from_secret_key => box)
25
- Encrypto::Box.should_receive(:new).with(box)
26
- Encrypto::Box.from_passphrase(passphrase)
23
+ box = double('box')
24
+ RbNaCl::Hash.stub(:sha256 => 'sha')
25
+ RbNaCl::SimpleBox.stub(:from_secret_key => box)
26
+ Box.should_receive(:new).with(box)
27
+ Box.from_passphrase(passphrase)
27
28
  end
28
29
  end
29
30
 
30
- describe ".from_keypair" do
31
- let(:public_key) { double("public key") }
32
- let(:private_key) { double("private key") }
31
+ describe '.from_keypair' do
32
+ let(:public_key) { double('public key') }
33
+ let(:private_key) { double('private key') }
33
34
 
34
- it "creates a random nonce box based on the keypair" do
35
- RbNaCl::RandomNonceBox.should_receive(:from_keypair).with(public_key, private_key)
36
- Encrypto::Box.from_keypair(public_key, private_key)
35
+ it 'creates a random nonce box based on the keypair' do
36
+ RbNaCl::SimpleBox.should_receive(:from_keypair).with(public_key, private_key)
37
+ Box.from_keypair(public_key, private_key)
37
38
  end
38
39
 
39
- it "initializes with a random nonce box" do
40
- box = double("box")
41
- RbNaCl::RandomNonceBox.stub(:from_keypair => box)
42
- Encrypto::Box.should_receive(:new).with(box)
43
- Encrypto::Box.from_keypair(public_key, private_key)
40
+ it 'initializes with a random nonce box' do
41
+ box = double('box')
42
+ RbNaCl::SimpleBox.stub(from_keypair: box)
43
+ Box.should_receive(:new).with(box)
44
+ Box.from_keypair(public_key, private_key)
44
45
  end
45
46
  end
46
47
 
47
48
  describe '#box' do
48
49
  it 'boxes the value' do
49
- value = double("value")
50
+ value = double('value')
50
51
 
51
- some_box = double("box")
52
+ some_box = double('box')
52
53
  some_box.should_receive(:box).with(value)
53
54
 
54
- box = Encrypto::Box.new(some_box)
55
+ box = Box.new(some_box)
55
56
  box.box(value)
56
57
  end
57
58
  end
58
59
 
59
- describe "#open" do
60
- it "opens the cipher text" do
61
- cipher_text = double("cipher text")
60
+ describe '#open' do
61
+ it 'opens the cipher text' do
62
+ cipher_text = double('cipher text')
62
63
  cipher_text.stub(:clone => cipher_text)
63
64
 
64
- some_box = double("box")
65
+ some_box = double('box')
65
66
  some_box.should_receive(:open).with(cipher_text)
66
67
 
67
- box = Encrypto::Box.new(some_box)
68
+ box = Box.new(some_box)
68
69
  box.open(cipher_text)
69
70
  end
70
71
  end
@@ -3,27 +3,27 @@ require 'spec_helper'
3
3
  module Encrypto
4
4
  describe Encrypto do
5
5
 
6
- describe ".generate_keypair" do
7
- it "delegates to Keys" do
8
- Encrypto::Keys.should_receive(:generate_keypair)
6
+ describe '.generate_keypair' do
7
+ it 'delegates to Keys' do
8
+ Keys.should_receive(:generate_keypair)
9
9
  subject.generate_keypair
10
10
  end
11
11
  end
12
12
 
13
- describe ".generate_random_key" do
14
- it "delegates to Random" do
15
- Encrypto::Random.should_receive(:bytes)
13
+ describe '.generate_random_key' do
14
+ it 'delegates to Random' do
15
+ Random.should_receive(:bytes)
16
16
  subject.generate_random_key
17
17
  end
18
18
  end
19
19
 
20
20
  describe '.encrypt_with_passphrase' do
21
21
  it 'boxes the value in a passphrase box' do
22
- value = double("value")
23
- passphrase = double("passphrase")
24
- box = double("box")
22
+ value = double('value')
23
+ passphrase = double('passphrase')
24
+ box = double('box')
25
25
 
26
- Encrypto::Box.should_receive(:from_passphrase).
26
+ Box.should_receive(:from_passphrase).
27
27
  with(passphrase).
28
28
  and_return(box)
29
29
 
@@ -32,15 +32,19 @@ module Encrypto
32
32
 
33
33
  subject.encrypt_with_passphrase(value, passphrase)
34
34
  end
35
+
36
+ it 'returns a cipher text' do
37
+ subject.encrypt_with_passphrase('value', 'passphrase').should be_a String
38
+ end
35
39
  end
36
40
 
37
- describe ".decrypt_with_passphrase" do
38
- it "opens the ciphertext with from passphrase box" do
39
- passphrase = double("passphrase")
40
- box = double("box")
41
- cipher_text = double("cipher text")
41
+ describe '.decrypt_with_passphrase' do
42
+ it 'opens the ciphertext with from passphrase box' do
43
+ passphrase = double('passphrase')
44
+ box = double('box')
45
+ cipher_text = double('cipher text')
42
46
 
43
- Encrypto::Box.should_receive(:from_passphrase)
47
+ Box.should_receive(:from_passphrase)
44
48
  .with(passphrase)
45
49
  .and_return(box)
46
50
 
@@ -49,16 +53,21 @@ module Encrypto
49
53
 
50
54
  subject.decrypt_with_passphrase(cipher_text, passphrase)
51
55
  end
56
+
57
+ it 'decrypts a cipher text' do
58
+ cipher_text = subject.encrypt_with_passphrase('value', 'passphrase')
59
+ subject.decrypt_with_passphrase(cipher_text, 'passphrase').should eql 'value'
60
+ end
52
61
  end
53
62
 
54
63
  describe '.encrypt_with_keypair' do
55
64
  it 'boxes the value in a keypair box' do
56
- value = double("value")
57
- public_key = double("public_key")
58
- signing_private_key = double("signing_private_key")
59
- box = double("box")
65
+ value = double('value')
66
+ public_key = double('public_key')
67
+ signing_private_key = double('signing_private_key')
68
+ box = double('box')
60
69
 
61
- Encrypto::Box.should_receive(:from_keypair).
70
+ Box.should_receive(:from_keypair).
62
71
  with(public_key, signing_private_key).
63
72
  and_return(box)
64
73
 
@@ -67,27 +76,32 @@ module Encrypto
67
76
 
68
77
  subject.encrypt_with_keypair(value, public_key, signing_private_key)
69
78
  end
79
+
80
+ it 'returns a cipher text' do
81
+ public_key, private_key = Keys.generate_keypair
82
+ subject.encrypt_with_keypair('value', public_key, private_key).should be_a String
83
+ end
70
84
  end
71
85
 
72
- describe ".decrypt_with_keypair" do
73
- let(:cipher_text) { double("cipher text") }
74
- let(:public_key) { double("public key") }
75
- let(:private_key) { double("private key") }
86
+ describe '.decrypt_with_keypair' do
87
+ let(:cipher_text) { double('cipher text') }
88
+ let(:public_key) { double('public key') }
89
+ let(:private_key) { double('private key') }
76
90
 
77
- it "decrypts the cipher text with the keypair" do
91
+ it 'decrypts the cipher text with the keypair' do
78
92
  box = double
79
93
 
80
- Encrypto::Box.should_receive(:from_keypair).with(public_key, private_key).and_return(box)
94
+ Box.should_receive(:from_keypair).with(public_key, private_key).and_return(box)
81
95
  box.should_receive(:open).with(cipher_text)
82
96
 
83
97
  subject.decrypt_with_keypair(cipher_text, public_key, private_key)
84
98
  end
85
99
 
86
- it "returns the decrypted cipher text" do
87
- box = double(open: "decrypted value")
88
- Encrypto::Box.stub(from_keypair: box)
100
+ it 'returns the decrypted cipher text' do
101
+ public_key, private_key = Keys.generate_keypair
102
+ cipher_text = subject.encrypt_with_keypair('value', public_key, private_key)
89
103
 
90
- subject.decrypt_with_keypair(cipher_text, public_key, private_key).should eql "decrypted value"
104
+ subject.decrypt_with_keypair(cipher_text, public_key, private_key).should eql 'value'
91
105
  end
92
106
  end
93
107
  end
@@ -3,12 +3,41 @@ require 'spec_helper'
3
3
  module Encrypto
4
4
  describe Keys do
5
5
 
6
- describe ".generate_keypair" do
7
- it "generates a keypair" do
6
+ describe '.generate_keypair' do
7
+ it 'generates a keypair' do
8
8
  public_key = double("public_key")
9
9
  private_key = double("private key", :public_key => public_key)
10
10
  RbNaCl::PrivateKey.should_receive(:generate).and_return(private_key)
11
- Encrypto::Keys.generate_keypair.should eql [public_key, private_key]
11
+ Keys.generate_keypair.should eql [public_key, private_key]
12
+ end
13
+
14
+ it 'returns a private key' do
15
+ public_key, private_key = Keys.generate_keypair
16
+ private_key.should be_a RbNaCl::PrivateKey
17
+ end
18
+
19
+ it 'returns a public key' do
20
+ public_key, private_key = Keys.generate_keypair
21
+ public_key.should be_a RbNaCl::PublicKey
22
+ end
23
+ end
24
+
25
+ describe '.to_bytes' do
26
+ let(:key) { 'x'*32 }
27
+
28
+ it 'returns the bytes of the key' do
29
+ newkey = key.b
30
+ private_key = RbNaCl::PrivateKey.new(newkey)
31
+ Keys.to_bytes(private_key).should eql newkey
32
+ end
33
+ end
34
+
35
+ describe '.public_key_from_bytes' do
36
+ let(:key) { 'x'*32 }
37
+
38
+ it 'returns a public key' do
39
+ public_key = Keys.public_key_from_bytes(key.b)
40
+ public_key.should be_a RbNaCl::PublicKey
12
41
  end
13
42
  end
14
43
 
@@ -3,11 +3,15 @@ require 'spec_helper'
3
3
  module Encrypto
4
4
  describe Random
5
5
 
6
- describe ".bytes" do
7
- it "creates a random byte sequence" do
6
+ describe '.bytes' do
7
+ it 'creates a random byte sequence' do
8
8
  random_bytes = "asf2020fasd"
9
9
  RbNaCl::Random.should_receive(:random_bytes).and_return(random_bytes)
10
- Encrypto::Random.bytes.should eql random_bytes
10
+ Random.bytes.should eql random_bytes
11
+ end
12
+
13
+ it 'returns 32 random bytes' do
14
+ Random.bytes.size.should eql 32
11
15
  end
12
16
  end
13
17
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: encrypto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ruben
@@ -10,71 +9,116 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-12-04 00:00:00.000000000Z
12
+ date: 2013-12-04 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rbnacl
17
- requirement: &70098716360120 !ruby/object:Gem::Requirement
18
- none: false
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
- version: 2.0.0
20
+ version: '3.0'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 3.0.0
23
24
  type: :runtime
24
25
  prerelease: false
25
- version_requirements: *70098716360120
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '3.0'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
26
34
  - !ruby/object:Gem::Dependency
27
35
  name: attr_encrypted
28
- requirement: &70098716359360 !ruby/object:Gem::Requirement
29
- none: false
36
+ requirement: !ruby/object:Gem::Requirement
30
37
  requirements:
31
- - - ~>
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - - ">="
32
42
  - !ruby/object:Gem::Version
33
- version: 1.3.0
43
+ version: 1.3.1
34
44
  type: :runtime
35
45
  prerelease: false
36
- version_requirements: *70098716359360
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '1.3'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.3.1
37
54
  - !ruby/object:Gem::Dependency
38
55
  name: pry-nav
39
- requirement: &70098716358900 !ruby/object:Gem::Requirement
40
- none: false
56
+ requirement: !ruby/object:Gem::Requirement
41
57
  requirements:
42
- - - ~>
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.2'
61
+ - - ">="
43
62
  - !ruby/object:Gem::Version
44
63
  version: 0.2.3
45
64
  type: :development
46
65
  prerelease: false
47
- version_requirements: *70098716358900
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '0.2'
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 0.2.3
48
74
  - !ruby/object:Gem::Dependency
49
75
  name: rspec
50
- requirement: &70098716358440 !ruby/object:Gem::Requirement
51
- none: false
76
+ requirement: !ruby/object:Gem::Requirement
52
77
  requirements:
53
- - - ~>
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '2.14'
81
+ - - ">="
54
82
  - !ruby/object:Gem::Version
55
83
  version: 2.14.1
56
84
  type: :development
57
85
  prerelease: false
58
- version_requirements: *70098716358440
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '2.14'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 2.14.1
59
94
  - !ruby/object:Gem::Dependency
60
95
  name: spec_coverage
61
- requirement: &70098716357960 !ruby/object:Gem::Requirement
62
- none: false
96
+ requirement: !ruby/object:Gem::Requirement
63
97
  requirements:
64
- - - ~>
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '0.0'
101
+ - - ">="
65
102
  - !ruby/object:Gem::Version
66
103
  version: 0.0.5
67
104
  type: :development
68
105
  prerelease: false
69
- version_requirements: *70098716357960
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.0'
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 0.0.5
70
114
  description: A gem that supports encrypting personal data by using rbnacl and attr_encrypted
71
115
  email: service@finalist.nl
72
116
  executables: []
73
117
  extensions: []
74
118
  extra_rdoc_files: []
75
119
  files:
76
- - .gitignore
77
- - .rspec
120
+ - ".gitignore"
121
+ - ".rspec"
78
122
  - Gemfile
79
123
  - Gemfile.lock
80
124
  - README.md
@@ -97,27 +141,26 @@ files:
97
141
  - spec/spec_helper.rb
98
142
  homepage: http://github.com/finalist/encrypto
99
143
  licenses: []
144
+ metadata: {}
100
145
  post_install_message:
101
146
  rdoc_options: []
102
147
  require_paths:
103
148
  - lib
104
149
  required_ruby_version: !ruby/object:Gem::Requirement
105
- none: false
106
150
  requirements:
107
- - - ! '>='
151
+ - - ">="
108
152
  - !ruby/object:Gem::Version
109
153
  version: '0'
110
154
  required_rubygems_version: !ruby/object:Gem::Requirement
111
- none: false
112
155
  requirements:
113
- - - ! '>='
156
+ - - ">="
114
157
  - !ruby/object:Gem::Version
115
158
  version: '0'
116
159
  requirements: []
117
160
  rubyforge_project:
118
- rubygems_version: 1.8.10
161
+ rubygems_version: 2.2.2
119
162
  signing_key:
120
- specification_version: 3
163
+ specification_version: 4
121
164
  summary: A gem that supports encrypting personal data by using rbnacl and attr_encrypted
122
165
  test_files:
123
166
  - spec/encrypto/box_spec.rb