vault-tree 0.1.0 → 0.3.3
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.
- data/.gitignore +7 -3
- data/CHANGE_LOG.md +15 -0
- data/Gemfile.lock +15 -5
- data/README.md +12 -15
- data/Rakefile +19 -4
- data/features/.nav +11 -0
- data/features/contracts/asymmetric_vault.feature +23 -0
- data/features/contracts/block_chain_key_transfer.feature +34 -0
- data/features/contracts/one_two_three.feature +22 -0
- data/features/contracts/readme.md +111 -0
- data/features/contracts_and_vaults.md +134 -0
- data/features/contributing_to_vault_tree.md +42 -0
- data/features/decision_tree.md +16 -0
- data/features/enforcement_problem.md +20 -0
- data/features/exceptions.feature +56 -5
- data/features/install_and_usage.md +57 -0
- data/features/keywords/assembled_shamir_key.feature +57 -0
- data/features/keywords/contents.feature +24 -0
- data/features/keywords/decryption_key.feature +10 -0
- data/features/keywords/dh_key.feature +56 -0
- data/features/keywords/external_data.feature +11 -0
- data/features/keywords/generated_shamir_key.feature +55 -0
- data/features/keywords/key.feature +38 -0
- data/features/keywords/master_passphrase.feature +68 -0
- data/features/keywords/public_encryption_key.feature +14 -0
- data/features/keywords/random_number.feature +44 -0
- data/features/keywords/readme.md +3 -0
- data/features/keywords/split_key.feature +54 -0
- data/features/keywords/unlocked.feature +51 -0
- data/features/manipulating_contracts.md +84 -0
- data/features/readme.md +6 -0
- data/features/steps/asymmetric_vault.steps.rb +41 -0
- data/features/steps/block_chain_key_transfer.steps.rb +43 -0
- data/features/steps/core.steps.rb +57 -104
- data/features/steps/exceptions.steps.rb +45 -1
- data/features/steps/one_two_three.steps.rb +57 -0
- data/features/steps/secret_sharing.steps.rb +36 -0
- data/features/support/contract_fixtures/asymmetric_vault.0.1.0.json +69 -0
- data/{spec/support/fixtures → features/support/contract_fixtures}/blank_simple_test_contract.json +0 -0
- data/features/support/contract_fixtures/block_chain_key_transfer.0.1.0.json +59 -0
- data/{spec/support/fixtures → features/support/contract_fixtures}/broken_contract.json +0 -0
- data/features/support/contract_fixtures/one_two_three.0.7.0.json +108 -0
- data/{spec/support/fixtures → features/support/contract_fixtures}/simple_test_contract.json +0 -0
- data/features/support/contract_fixtures/template.json +33 -0
- data/features/what_is_vault_tree.md +18 -0
- data/lib/vault-tree.rb +23 -6
- data/lib/vault-tree/contract/close_validator.rb +0 -7
- data/lib/vault-tree/contract/contract.rb +13 -2
- data/lib/vault-tree/contract/doorman.rb +22 -21
- data/lib/vault-tree/contract/vault.rb +18 -2
- data/lib/vault-tree/exceptions/exception_template.erb +0 -0
- data/lib/vault-tree/exceptions/failed_unlock_attempt.rb +6 -0
- data/lib/vault-tree/exceptions/vault_tree_exception.rb +18 -0
- data/lib/vault-tree/keywords/assembled_shamir_key.rb +44 -0
- data/lib/vault-tree/keywords/{vault_contents.rb → contents.rb} +0 -0
- data/lib/vault-tree/keywords/decryption_key.rb +1 -6
- data/lib/vault-tree/keywords/{shared_key.rb → dh_key.rb} +2 -2
- data/lib/vault-tree/keywords/external_data.rb +19 -0
- data/lib/vault-tree/keywords/generated_shamir_key.rb +57 -0
- data/lib/vault-tree/keywords/key.rb +13 -0
- data/lib/vault-tree/keywords/keyword_interpreter.rb +6 -6
- data/lib/vault-tree/keywords/public_encryption_key.rb +1 -5
- data/lib/vault-tree/keywords/random_number.rb +1 -1
- data/lib/vault-tree/keywords/split_key.rb +19 -0
- data/lib/vault-tree/keywords/unlocked.rb +1 -1
- data/lib/vault-tree/lock_smith.rb +182 -0
- data/lib/vault-tree/lock_smith/assembled_shamir_key.rb +64 -0
- data/lib/vault-tree/lock_smith/dh_key_pair.rb +10 -0
- data/lib/vault-tree/lock_smith/generated_shamir_key.rb +65 -0
- data/lib/vault-tree/lock_smith/split_key.rb +23 -0
- data/lib/vault-tree/{config/path_helpers.rb → path_helpers.rb} +26 -2
- data/lib/vault-tree/util/json.rb +1 -0
- data/lib/vault-tree/{config → util}/string.rb +1 -5
- data/lib/vault-tree/version.rb +1 -1
- data/spec/assembled_shamir_key_spec.rb +79 -0
- data/spec/generated_shamir_key_spec.rb +52 -0
- data/spec/lock_smith_spec.rb +90 -0
- data/spec/secret_sharing_spec.rb +43 -0
- data/support/scripts/libsodium_ubuntu.sh +1 -1
- data/vault-tree.gemspec +3 -2
- metadata +123 -41
- data/features/core.feature +0 -44
- data/lib/vault-tree/config/dependencies.rb +0 -4
- data/lib/vault-tree/config/lib.rb +0 -2
- data/lib/vault-tree/lock_smith/asymmetric_cipher.rb +0 -31
- data/lib/vault-tree/lock_smith/crypto_hash.rb +0 -11
- data/lib/vault-tree/lock_smith/digital_signature.rb +0 -32
- data/lib/vault-tree/lock_smith/encryption_key_pair.rb +0 -25
- data/lib/vault-tree/lock_smith/random_number.rb +0 -11
- data/lib/vault-tree/lock_smith/shared_key_pair.rb +0 -12
- data/lib/vault-tree/lock_smith/signing_key_pair.rb +0 -25
- data/lib/vault-tree/lock_smith/symmetric_cipher.rb +0 -25
- data/spec/app/locksmith/asymmetric_cipher_spec.rb +0 -25
- data/spec/app/locksmith/signing_key_pair_spec.rb +0 -22
- data/spec/spec_helper.rb +0 -5
- data/spec/support/fixtures/one_two_three-0.5.0.EXP.json +0 -105
- data/spec/support/fixtures/reference_contract.1.0.0.json +0 -227
data/lib/vault-tree/util/json.rb
CHANGED
@@ -4,7 +4,7 @@ class String
|
|
4
4
|
end
|
5
5
|
|
6
6
|
def extract_ancestor_id
|
7
|
-
self.gsub(/(CONTENTS\[\')|(\'\])/,'').strip
|
7
|
+
self.gsub(/((CONTENTS|KEY)\[\')|(\'\])/,'').strip
|
8
8
|
end
|
9
9
|
|
10
10
|
def checksum
|
@@ -18,8 +18,4 @@ class String
|
|
18
18
|
def camelize
|
19
19
|
self.split("_").each {|s| s.capitalize! }.join("")
|
20
20
|
end
|
21
|
-
|
22
|
-
def has_ancestor?
|
23
|
-
self.include? 'CONTENTS'
|
24
|
-
end
|
25
21
|
end
|
data/lib/vault-tree/version.rb
CHANGED
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
RSpec.configure{ |config| config.color_enabled = true }
|
3
|
+
require_relative '../lib/vault-tree/lock_smith/assembled_shamir_key'
|
4
|
+
|
5
|
+
module VaultTree
|
6
|
+
module Crypto
|
7
|
+
describe AssembledShamirKey do
|
8
|
+
|
9
|
+
describe '#assemble' do
|
10
|
+
|
11
|
+
context 'with 3 out of 5 secrets' do
|
12
|
+
before :each do
|
13
|
+
s = SecretSharing::Shamir.new(5,3)
|
14
|
+
s.create_random_secret
|
15
|
+
@established_secret = s.secret.to_s
|
16
|
+
@expected_digest = LockSmith.new(message: @established_secret).secure_hash
|
17
|
+
@key_shares = s.shares[0..2].map{|s| s.to_s}
|
18
|
+
@assembled_key = AssembledShamirKey.new(key_shares: @key_shares)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'recovers a hash of the shared secret' do
|
22
|
+
@assembled_key.assemble.should == @expected_digest
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with 5 out of 5 secrets' do
|
27
|
+
before :each do
|
28
|
+
s = SecretSharing::Shamir.new(5,5)
|
29
|
+
s.create_random_secret
|
30
|
+
@established_secret = s.secret.to_s
|
31
|
+
@expected_digest = LockSmith.new(message: @established_secret).secure_hash
|
32
|
+
@key_shares = s.shares[0..4].map{|s| s.to_s}
|
33
|
+
@assembled_key = AssembledShamirKey.new(key_shares: @key_shares)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'recovers a hash of the shared secret' do
|
37
|
+
@assembled_key.assemble.should == @expected_digest
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'with 2 out of 2 secrets' do
|
42
|
+
before :each do
|
43
|
+
s = SecretSharing::Shamir.new(2,2)
|
44
|
+
s.create_random_secret
|
45
|
+
@established_secret = s.secret.to_s
|
46
|
+
@expected_digest = LockSmith.new(message: @established_secret).secure_hash
|
47
|
+
@key_shares = s.shares[0..1].map{|s| s.to_s}
|
48
|
+
@assembled_key = AssembledShamirKey.new(key_shares: @key_shares)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'recovers a hash of the shared secret' do
|
52
|
+
@assembled_key.assemble.should == @expected_digest
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'in exceptional situations' do
|
57
|
+
|
58
|
+
it 'throws an exception on init if one of the shares is not a string' do
|
59
|
+
s = SecretSharing::Shamir.new(5,3)
|
60
|
+
s.create_random_secret
|
61
|
+
@established_secret = s.secret.to_s
|
62
|
+
@expected_digest = LockSmith.new(message: @established_secret).secure_hash
|
63
|
+
@key_shares = s.shares[0..2].map{|s| s.to_s}
|
64
|
+
|
65
|
+
# Replace the last string with just an object
|
66
|
+
@key_shares[2] = Object.new
|
67
|
+
expect{AssembledShamirKey.new(key_shares: @key_shares)}.to raise_error(TypeError)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'throws an exception if the key shares are nil' do
|
71
|
+
@key_shares = nil
|
72
|
+
expect{AssembledShamirKey.new(key_shares: @key_shares)}.to raise_error(TypeError)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
RSpec.configure{ |config| config.color_enabled = true }
|
3
|
+
require_relative '../lib/vault-tree/lock_smith/generated_shamir_key'
|
4
|
+
|
5
|
+
module VaultTree
|
6
|
+
module Crypto
|
7
|
+
describe GeneratedShamirKey do
|
8
|
+
|
9
|
+
describe '#generate | #assemble' do
|
10
|
+
|
11
|
+
context 'with 3 out of 5 secrets' do
|
12
|
+
it 'recovers a hash of the shared secret' do
|
13
|
+
generated_key = GeneratedShamirKey.new(outstanding_shares: 5, recovery_threshold: 3)
|
14
|
+
expected_digest = generated_key.key
|
15
|
+
key_shares = generated_key.shares
|
16
|
+
assembled_key = AssembledShamirKey.new(key_shares: key_shares)
|
17
|
+
assembled_key.assemble.should == expected_digest
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'recovers a hash of the shared secret when the shares are requested before the key' do
|
21
|
+
generated_key = GeneratedShamirKey.new(outstanding_shares: 5, recovery_threshold: 3)
|
22
|
+
key_shares = generated_key.shares
|
23
|
+
expected_digest = generated_key.key
|
24
|
+
assembled_key = AssembledShamirKey.new(key_shares: key_shares)
|
25
|
+
assembled_key.assemble.should == expected_digest
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'with 5 out of 5 secrets' do
|
30
|
+
it 'recovers a hash of the shared secret' do
|
31
|
+
generated_key = GeneratedShamirKey.new(outstanding_shares: 5, recovery_threshold: 5)
|
32
|
+
expected_digest = generated_key.key
|
33
|
+
key_shares = generated_key.shares
|
34
|
+
assembled_key = AssembledShamirKey.new(key_shares: key_shares)
|
35
|
+
assembled_key.assemble.should == expected_digest
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'with 2 out of 2 secrets' do
|
40
|
+
it 'recovers a hash of the shared secret' do
|
41
|
+
generated_key = GeneratedShamirKey.new(outstanding_shares: 2, recovery_threshold: 2)
|
42
|
+
expected_digest = generated_key.key
|
43
|
+
key_shares = generated_key.shares
|
44
|
+
assembled_key = AssembledShamirKey.new(key_shares: key_shares)
|
45
|
+
assembled_key.assemble.should == expected_digest
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
RSpec.configure{ |config| config.color_enabled = true }
|
3
|
+
|
4
|
+
require_relative '../lib/vault-tree/lock_smith'
|
5
|
+
|
6
|
+
module VaultTree
|
7
|
+
describe LockSmith do
|
8
|
+
|
9
|
+
describe '#symmetric_encrypt | #symmetric_decrypt' do
|
10
|
+
it 'encrypt and decrypt a simple message' do
|
11
|
+
secret_key = LockSmith.new(message: 'my_secret_key').secure_hash
|
12
|
+
cipher_text = LockSmith.new(message: 'Secret Message', secret_key: secret_key).symmetric_encrypt
|
13
|
+
recovered_msg = LockSmith.new(cipher_text: cipher_text, secret_key: secret_key).symmetric_decrypt
|
14
|
+
recovered_msg.should == 'Secret Message'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#asymmetric_encrypt | #asymmetric_decrypt' do
|
19
|
+
it 'bob can encrypt with alice pub key and Alice can decrypt' do
|
20
|
+
alice_priv_key = LockSmith.new().generate_private_key
|
21
|
+
alice_pub_key = LockSmith.new(private_key: alice_priv_key).generate_public_key
|
22
|
+
alice_pub_key = LockSmith.new(private_key: alice_priv_key).generate_public_key
|
23
|
+
bob_priv_key = LockSmith.new().generate_private_key
|
24
|
+
bob_pub_key = LockSmith.new(private_key: bob_priv_key).generate_public_key
|
25
|
+
cipher_text = LockSmith.new(message: 'Secret Message', public_key: alice_pub_key, private_key: bob_priv_key).asymmetric_encrypt
|
26
|
+
bob_pub_key = LockSmith.new(private_key: bob_priv_key).generate_public_key
|
27
|
+
recovered_msg = LockSmith.new(cipher_text: cipher_text, public_key: bob_pub_key, private_key: alice_priv_key).asymmetric_decrypt
|
28
|
+
recovered_msg.should == 'Secret Message'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#sign_message | #verify_message' do
|
33
|
+
it 'sign and verify a message' do
|
34
|
+
msg = 'My Message to Sign!'
|
35
|
+
sk = LockSmith.new().generate_signing_key
|
36
|
+
vk = LockSmith.new(signing_key: sk).generate_verify_key
|
37
|
+
sig = LockSmith.new(signing_key: sk, message: msg).sign_message
|
38
|
+
LockSmith.new(verify_key: vk, message: msg, signature: sig).verify_message.should be true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#split_secret | #combine_secret_shares' do
|
43
|
+
|
44
|
+
context 'with 3 out of 5 secrets' do
|
45
|
+
it 'recovers the shared secret' do
|
46
|
+
pending
|
47
|
+
secret_key = LockSmith.new().generate_secret_key
|
48
|
+
secret_shares = LockSmith.new(message: secret_key, outstanding_secret_shares: 5, secret_recovery_threshold: 3).split_secret
|
49
|
+
combined_secret = LockSmith.new(message: secret_key, secret_shares: secret_shares).combine_secret_shares
|
50
|
+
combined_secret.should == secret_key
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'with 5 out of 5 secrets' do
|
55
|
+
it 'recovers the shared secret' do
|
56
|
+
pending
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'with 2 out of 2 secrets' do
|
61
|
+
it 'recovers the shared secret' do
|
62
|
+
pending
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'in exceptional situations' do
|
67
|
+
|
68
|
+
it 'throws an exception on init if one of the shares is not a string' do
|
69
|
+
pending
|
70
|
+
s = SecretSharing::Shamir.new(5,3)
|
71
|
+
s.create_random_secret
|
72
|
+
@established_secret = s.secret.to_s
|
73
|
+
@expected_digest = LockSmith.new(message: @established_secret).secure_hash
|
74
|
+
@key_shares = s.shares[0..2].map{|s| s.to_s}
|
75
|
+
|
76
|
+
# Replace the last string with just an object
|
77
|
+
@key_shares[2] = Object.new
|
78
|
+
expect{AssembledShamirKey.new(key_shares: @key_shares)}.to raise_error(TypeError)
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'throws an exception if the key shares are nil' do
|
82
|
+
pending
|
83
|
+
@key_shares = nil
|
84
|
+
expect{AssembledShamirKey.new(key_shares: @key_shares)}.to raise_error(TypeError)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
RSpec.configure{ |config| config.color_enabled = true }
|
3
|
+
require 'secretsharing'
|
4
|
+
|
5
|
+
describe 'Secret Sharing Test Run' do
|
6
|
+
describe 'from the README' do
|
7
|
+
|
8
|
+
it 'demo the gem use' do
|
9
|
+
|
10
|
+
# create an object for 3 out of 5 secret sharing
|
11
|
+
s = SecretSharing::Shamir.new(5,3)
|
12
|
+
|
13
|
+
# create a random secret (returns the secret)
|
14
|
+
s.create_random_secret
|
15
|
+
|
16
|
+
# show secret
|
17
|
+
#puts s.secret
|
18
|
+
created_secret = s.secret
|
19
|
+
|
20
|
+
# show password representation of secret (Base64)
|
21
|
+
#puts s.secret_password
|
22
|
+
|
23
|
+
# show shares
|
24
|
+
#s.shares.each { |share| puts share }
|
25
|
+
|
26
|
+
# recover secret from shares
|
27
|
+
s2 = SecretSharing::Shamir.new(3)
|
28
|
+
|
29
|
+
# Accepts SecretSharing::Shamir::Share objects or
|
30
|
+
# string representations thereof
|
31
|
+
|
32
|
+
# In this case we are useing the string representation
|
33
|
+
s2 << s.shares[0].to_s
|
34
|
+
s2 << s.shares[2].to_s
|
35
|
+
s2 << s.shares[4].to_s
|
36
|
+
assembled_secret = s2.secret
|
37
|
+
#puts assembled_secret
|
38
|
+
|
39
|
+
#Compare assembled to created
|
40
|
+
assembled_secret.should == created_secret
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -19,7 +19,7 @@ sudo apt-get install devscripts debhelper build-essential
|
|
19
19
|
|
20
20
|
# Build and Install libsodium
|
21
21
|
export NAME=libsodium
|
22
|
-
export VERSION=0.4.
|
22
|
+
export VERSION=0.4.3
|
23
23
|
export DEBVERSION=${VERSION}-1
|
24
24
|
#Download and extract the archive
|
25
25
|
if [ ! -f ${NAME}_${VERSION}.orig.tar.gz ]
|
data/vault-tree.gemspec
CHANGED
@@ -18,9 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "rbnacl", "
|
22
|
-
spec.add_dependency "
|
21
|
+
spec.add_dependency "rbnacl", "2.0.0"
|
22
|
+
spec.add_dependency "secretsharing", "0.3"
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
24
|
spec.add_development_dependency "rspec"
|
25
25
|
spec.add_development_dependency "cucumber"
|
26
|
+
spec.add_development_dependency "relish"
|
26
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vault-tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-02-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rbnacl
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 2.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,23 +26,23 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 2.0.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: secretsharing
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - '='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
37
|
+
version: '0.3'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - '='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
45
|
+
version: '0.3'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: bundler
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,6 +91,22 @@ dependencies:
|
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: relish
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
94
110
|
description: Vault Tree is a Ruby library for executing distributed cryptographic
|
95
111
|
contracts.
|
96
112
|
email:
|
@@ -100,23 +116,56 @@ extensions: []
|
|
100
116
|
extra_rdoc_files: []
|
101
117
|
files:
|
102
118
|
- .gitignore
|
119
|
+
- CHANGE_LOG.md
|
103
120
|
- Gemfile
|
104
121
|
- Gemfile.lock
|
105
122
|
- LICENSE.txt
|
106
123
|
- README.md
|
107
124
|
- Rakefile
|
108
125
|
- VagrantFile
|
109
|
-
- features
|
126
|
+
- features/.nav
|
127
|
+
- features/contracts/asymmetric_vault.feature
|
128
|
+
- features/contracts/block_chain_key_transfer.feature
|
129
|
+
- features/contracts/one_two_three.feature
|
130
|
+
- features/contracts/readme.md
|
131
|
+
- features/contracts_and_vaults.md
|
132
|
+
- features/contributing_to_vault_tree.md
|
133
|
+
- features/decision_tree.md
|
134
|
+
- features/enforcement_problem.md
|
110
135
|
- features/exceptions.feature
|
136
|
+
- features/install_and_usage.md
|
137
|
+
- features/keywords/assembled_shamir_key.feature
|
138
|
+
- features/keywords/contents.feature
|
139
|
+
- features/keywords/decryption_key.feature
|
140
|
+
- features/keywords/dh_key.feature
|
141
|
+
- features/keywords/external_data.feature
|
142
|
+
- features/keywords/generated_shamir_key.feature
|
143
|
+
- features/keywords/key.feature
|
144
|
+
- features/keywords/master_passphrase.feature
|
145
|
+
- features/keywords/public_encryption_key.feature
|
146
|
+
- features/keywords/random_number.feature
|
147
|
+
- features/keywords/readme.md
|
148
|
+
- features/keywords/split_key.feature
|
149
|
+
- features/keywords/unlocked.feature
|
150
|
+
- features/manipulating_contracts.md
|
151
|
+
- features/readme.md
|
152
|
+
- features/steps/asymmetric_vault.steps.rb
|
153
|
+
- features/steps/block_chain_key_transfer.steps.rb
|
111
154
|
- features/steps/core.steps.rb
|
112
155
|
- features/steps/exceptions.steps.rb
|
156
|
+
- features/steps/one_two_three.steps.rb
|
157
|
+
- features/steps/secret_sharing.steps.rb
|
158
|
+
- features/support/contract_fixtures/asymmetric_vault.0.1.0.json
|
159
|
+
- features/support/contract_fixtures/blank_simple_test_contract.json
|
160
|
+
- features/support/contract_fixtures/block_chain_key_transfer.0.1.0.json
|
161
|
+
- features/support/contract_fixtures/broken_contract.json
|
162
|
+
- features/support/contract_fixtures/one_two_three.0.7.0.json
|
163
|
+
- features/support/contract_fixtures/simple_test_contract.json
|
164
|
+
- features/support/contract_fixtures/template.json
|
113
165
|
- features/support/env.rb
|
166
|
+
- features/what_is_vault_tree.md
|
114
167
|
- features/world.rb
|
115
168
|
- lib/vault-tree.rb
|
116
|
-
- lib/vault-tree/config/dependencies.rb
|
117
|
-
- lib/vault-tree/config/lib.rb
|
118
|
-
- lib/vault-tree/config/path_helpers.rb
|
119
|
-
- lib/vault-tree/config/string.rb
|
120
169
|
- lib/vault-tree/contract/close_validator.rb
|
121
170
|
- lib/vault-tree/contract/contract.rb
|
122
171
|
- lib/vault-tree/contract/contract_presenter.rb
|
@@ -125,6 +174,8 @@ files:
|
|
125
174
|
- lib/vault-tree/contract/open_validator.rb
|
126
175
|
- lib/vault-tree/contract/vault.rb
|
127
176
|
- lib/vault-tree/exceptions/empty_vault.rb
|
177
|
+
- lib/vault-tree/exceptions/exception_template.erb
|
178
|
+
- lib/vault-tree/exceptions/failed_unlock_attempt.rb
|
128
179
|
- lib/vault-tree/exceptions/fill_attempt_master_password.rb
|
129
180
|
- lib/vault-tree/exceptions/invalid_signature.rb
|
130
181
|
- lib/vault-tree/exceptions/malformed_json.rb
|
@@ -135,35 +186,34 @@ files:
|
|
135
186
|
- lib/vault-tree/exceptions/unsupported_keyword.rb
|
136
187
|
- lib/vault-tree/exceptions/vault_does_not_exist.rb
|
137
188
|
- lib/vault-tree/exceptions/vault_tree_exception.rb
|
189
|
+
- lib/vault-tree/keywords/assembled_shamir_key.rb
|
190
|
+
- lib/vault-tree/keywords/contents.rb
|
138
191
|
- lib/vault-tree/keywords/decryption_key.rb
|
192
|
+
- lib/vault-tree/keywords/dh_key.rb
|
139
193
|
- lib/vault-tree/keywords/external_data.rb
|
194
|
+
- lib/vault-tree/keywords/generated_shamir_key.rb
|
195
|
+
- lib/vault-tree/keywords/key.rb
|
140
196
|
- lib/vault-tree/keywords/keyword.rb
|
141
197
|
- lib/vault-tree/keywords/keyword_interpreter.rb
|
142
198
|
- lib/vault-tree/keywords/master_passphrase.rb
|
143
199
|
- lib/vault-tree/keywords/public_encryption_key.rb
|
144
200
|
- lib/vault-tree/keywords/random_number.rb
|
145
|
-
- lib/vault-tree/keywords/
|
201
|
+
- lib/vault-tree/keywords/split_key.rb
|
146
202
|
- lib/vault-tree/keywords/unlocked.rb
|
147
|
-
- lib/vault-tree/
|
148
|
-
- lib/vault-tree/lock_smith/
|
149
|
-
- lib/vault-tree/lock_smith/
|
150
|
-
- lib/vault-tree/lock_smith/
|
151
|
-
- lib/vault-tree/lock_smith/encryption_key_pair.rb
|
203
|
+
- lib/vault-tree/lock_smith.rb
|
204
|
+
- lib/vault-tree/lock_smith/assembled_shamir_key.rb
|
205
|
+
- lib/vault-tree/lock_smith/dh_key_pair.rb
|
206
|
+
- lib/vault-tree/lock_smith/generated_shamir_key.rb
|
152
207
|
- lib/vault-tree/lock_smith/null_vault.rb
|
153
|
-
- lib/vault-tree/lock_smith/
|
154
|
-
- lib/vault-tree/
|
155
|
-
- lib/vault-tree/lock_smith/signing_key_pair.rb
|
156
|
-
- lib/vault-tree/lock_smith/symmetric_cipher.rb
|
208
|
+
- lib/vault-tree/lock_smith/split_key.rb
|
209
|
+
- lib/vault-tree/path_helpers.rb
|
157
210
|
- lib/vault-tree/util/json.rb
|
211
|
+
- lib/vault-tree/util/string.rb
|
158
212
|
- lib/vault-tree/version.rb
|
159
|
-
- spec/
|
160
|
-
- spec/
|
161
|
-
- spec/
|
162
|
-
- spec/
|
163
|
-
- spec/support/fixtures/broken_contract.json
|
164
|
-
- spec/support/fixtures/one_two_three-0.5.0.EXP.json
|
165
|
-
- spec/support/fixtures/reference_contract.1.0.0.json
|
166
|
-
- spec/support/fixtures/simple_test_contract.json
|
213
|
+
- spec/assembled_shamir_key_spec.rb
|
214
|
+
- spec/generated_shamir_key_spec.rb
|
215
|
+
- spec/lock_smith_spec.rb
|
216
|
+
- spec/secret_sharing_spec.rb
|
167
217
|
- support/cookbooks/ark/.gitignore
|
168
218
|
- support/cookbooks/ark/.kitchen.yml
|
169
219
|
- support/cookbooks/ark/.travis.yml
|
@@ -288,18 +338,50 @@ signing_key:
|
|
288
338
|
specification_version: 3
|
289
339
|
summary: The Self Enforcing Contract
|
290
340
|
test_files:
|
291
|
-
- features
|
341
|
+
- features/.nav
|
342
|
+
- features/contracts/asymmetric_vault.feature
|
343
|
+
- features/contracts/block_chain_key_transfer.feature
|
344
|
+
- features/contracts/one_two_three.feature
|
345
|
+
- features/contracts/readme.md
|
346
|
+
- features/contracts_and_vaults.md
|
347
|
+
- features/contributing_to_vault_tree.md
|
348
|
+
- features/decision_tree.md
|
349
|
+
- features/enforcement_problem.md
|
292
350
|
- features/exceptions.feature
|
351
|
+
- features/install_and_usage.md
|
352
|
+
- features/keywords/assembled_shamir_key.feature
|
353
|
+
- features/keywords/contents.feature
|
354
|
+
- features/keywords/decryption_key.feature
|
355
|
+
- features/keywords/dh_key.feature
|
356
|
+
- features/keywords/external_data.feature
|
357
|
+
- features/keywords/generated_shamir_key.feature
|
358
|
+
- features/keywords/key.feature
|
359
|
+
- features/keywords/master_passphrase.feature
|
360
|
+
- features/keywords/public_encryption_key.feature
|
361
|
+
- features/keywords/random_number.feature
|
362
|
+
- features/keywords/readme.md
|
363
|
+
- features/keywords/split_key.feature
|
364
|
+
- features/keywords/unlocked.feature
|
365
|
+
- features/manipulating_contracts.md
|
366
|
+
- features/readme.md
|
367
|
+
- features/steps/asymmetric_vault.steps.rb
|
368
|
+
- features/steps/block_chain_key_transfer.steps.rb
|
293
369
|
- features/steps/core.steps.rb
|
294
370
|
- features/steps/exceptions.steps.rb
|
371
|
+
- features/steps/one_two_three.steps.rb
|
372
|
+
- features/steps/secret_sharing.steps.rb
|
373
|
+
- features/support/contract_fixtures/asymmetric_vault.0.1.0.json
|
374
|
+
- features/support/contract_fixtures/blank_simple_test_contract.json
|
375
|
+
- features/support/contract_fixtures/block_chain_key_transfer.0.1.0.json
|
376
|
+
- features/support/contract_fixtures/broken_contract.json
|
377
|
+
- features/support/contract_fixtures/one_two_three.0.7.0.json
|
378
|
+
- features/support/contract_fixtures/simple_test_contract.json
|
379
|
+
- features/support/contract_fixtures/template.json
|
295
380
|
- features/support/env.rb
|
381
|
+
- features/what_is_vault_tree.md
|
296
382
|
- features/world.rb
|
297
|
-
- spec/
|
298
|
-
- spec/
|
299
|
-
- spec/
|
300
|
-
- spec/
|
301
|
-
- spec/support/fixtures/broken_contract.json
|
302
|
-
- spec/support/fixtures/one_two_three-0.5.0.EXP.json
|
303
|
-
- spec/support/fixtures/reference_contract.1.0.0.json
|
304
|
-
- spec/support/fixtures/simple_test_contract.json
|
383
|
+
- spec/assembled_shamir_key_spec.rb
|
384
|
+
- spec/generated_shamir_key_spec.rb
|
385
|
+
- spec/lock_smith_spec.rb
|
386
|
+
- spec/secret_sharing_spec.rb
|
305
387
|
has_rdoc:
|