encrypto 0.0.2 → 0.1.0

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.
@@ -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