vault-tree 0.3.4 → 0.6.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.
Files changed (190) hide show
  1. data/.gitignore +3 -0
  2. data/.rspec +1 -0
  3. data/CHANGE_LOG.md +27 -0
  4. data/README.md +15 -73
  5. data/features/contracts/asymmetric_vault.feature +69 -2
  6. data/features/contracts/block_chain_key_transfer.feature +59 -0
  7. data/features/contracts/one_two_three.feature +109 -1
  8. data/features/contracts/readme.md +5 -6
  9. data/features/contracts_and_vaults.md +19 -24
  10. data/features/decision_tree.md +1 -1
  11. data/features/exceptions.feature +54 -43
  12. data/features/install_and_usage.md +38 -33
  13. data/features/keywords/assembled_shamir_key.feature +17 -17
  14. data/features/keywords/dh_key.feature +5 -5
  15. data/features/keywords/external_input.feature +35 -0
  16. data/features/keywords/external_key.feature +24 -0
  17. data/features/keywords/key.feature +3 -3
  18. data/features/keywords/random_number.feature +3 -3
  19. data/features/keywords/shamir_key_shares.feature +29 -0
  20. data/features/keywords/shamir_share.feature +40 -0
  21. data/features/keywords/split_key.feature +10 -9
  22. data/features/keywords/unlocked.feature +3 -3
  23. data/features/readme.md +1 -1
  24. data/features/steps/asymmetric_vault.steps.rb +14 -21
  25. data/features/steps/block_chain_key_transfer.steps.rb +17 -22
  26. data/features/steps/core.steps.rb +60 -71
  27. data/features/steps/exceptions.steps.rb +27 -64
  28. data/features/steps/external_input.steps.rb +17 -0
  29. data/features/steps/one_two_three.steps.rb +21 -27
  30. data/features/steps/secret_sharing.steps.rb +36 -19
  31. data/lib/vault-tree.rb +1 -1
  32. data/lib/vault-tree/contract/content_ciphertext.rb +33 -0
  33. data/lib/vault-tree/contract/content_plaintext.rb +33 -0
  34. data/lib/vault-tree/contract/contract.rb +15 -72
  35. data/lib/vault-tree/contract/contract_header.rb +11 -0
  36. data/lib/vault-tree/contract/vault.rb +24 -74
  37. data/lib/vault-tree/contract/vault_key.rb +21 -0
  38. data/lib/vault-tree/contract/vault_list.rb +56 -0
  39. data/lib/vault-tree/exceptions/empty_vault.rb +18 -3
  40. data/lib/vault-tree/exceptions/failed_lock_attempt.rb +18 -0
  41. data/lib/vault-tree/exceptions/failed_unlock_attempt.rb +23 -1
  42. data/lib/vault-tree/exceptions/invalid_external_input.rb +16 -0
  43. data/lib/vault-tree/exceptions/{missing_passphrase.rb → invalid_shamir_split.rb} +2 -1
  44. data/lib/vault-tree/exceptions/library_exception.rb +64 -0
  45. data/lib/vault-tree/exceptions/missing_partner_decryption_key.rb +11 -1
  46. data/lib/vault-tree/exceptions/unsupported_keyword.rb +17 -1
  47. data/lib/vault-tree/exceptions/vault_does_not_exist.rb +8 -1
  48. data/lib/vault-tree/keywords/assembled_shamir_key.rb +1 -1
  49. data/lib/vault-tree/keywords/contents.rb +1 -1
  50. data/lib/vault-tree/keywords/dh_key.rb +2 -2
  51. data/lib/vault-tree/keywords/external_input.rb +58 -0
  52. data/lib/vault-tree/keywords/external_key.rb +20 -0
  53. data/lib/vault-tree/keywords/key.rb +7 -1
  54. data/lib/vault-tree/keywords/keyword_interpreter.rb +5 -3
  55. data/lib/vault-tree/keywords/public_encryption_key.rb +1 -5
  56. data/lib/vault-tree/keywords/shamir_key_shares.rb +18 -0
  57. data/lib/vault-tree/keywords/shamir_share.rb +18 -0
  58. data/lib/vault-tree/keywords/split_key.rb +1 -1
  59. data/lib/vault-tree/lock_smith.rb +7 -8
  60. data/lib/vault-tree/lock_smith/{generated_shamir_key.rb → shamir_key_shares.rb} +22 -21
  61. data/lib/vault-tree/lock_smith/{split_key.rb → split_key_crypto.rb} +0 -0
  62. data/lib/vault-tree/version.rb +1 -1
  63. data/spec/assembled_shamir_key_spec.rb +0 -1
  64. data/spec/custom_exception_spec.rb +81 -0
  65. data/spec/lock_smith_spec.rb +0 -48
  66. data/spec/secret_sharing_spec.rb +0 -1
  67. data/spec/shamir_key_shares_spec.rb +27 -0
  68. data/vault-tree.gemspec +1 -1
  69. metadata +33 -139
  70. data/Gemfile.lock +0 -53
  71. data/VagrantFile +0 -30
  72. data/features/keywords/external_data.feature +0 -11
  73. data/features/keywords/generated_shamir_key.feature +0 -55
  74. data/features/keywords/master_passphrase.feature +0 -68
  75. data/features/manipulating_contracts.md +0 -84
  76. data/features/support/contract_fixtures/asymmetric_vault.0.1.0.json +0 -69
  77. data/features/support/contract_fixtures/blank_simple_test_contract.json +0 -14
  78. data/features/support/contract_fixtures/block_chain_key_transfer.0.1.0.json +0 -59
  79. data/features/support/contract_fixtures/broken_contract.json +0 -55
  80. data/features/support/contract_fixtures/one_two_three.0.7.0.json +0 -108
  81. data/features/support/contract_fixtures/simple_test_contract.json +0 -14
  82. data/features/support/contract_fixtures/template.json +0 -33
  83. data/lib/vault-tree/contract/close_validator.rb +0 -28
  84. data/lib/vault-tree/contract/doorman.rb +0 -113
  85. data/lib/vault-tree/contract/open_validator.rb +0 -20
  86. data/lib/vault-tree/exceptions/exception_template.erb +0 -0
  87. data/lib/vault-tree/exceptions/fill_attempt_master_password.rb +0 -6
  88. data/lib/vault-tree/exceptions/missing_external_data.rb +0 -6
  89. data/lib/vault-tree/exceptions/vault_tree_exception.rb +0 -25
  90. data/lib/vault-tree/keywords/external_data.rb +0 -32
  91. data/lib/vault-tree/keywords/generated_shamir_key.rb +0 -57
  92. data/lib/vault-tree/keywords/master_passphrase.rb +0 -9
  93. data/spec/generated_shamir_key_spec.rb +0 -52
  94. data/support/cookbooks/ark/.gitignore +0 -12
  95. data/support/cookbooks/ark/.kitchen.yml +0 -34
  96. data/support/cookbooks/ark/.travis.yml +0 -6
  97. data/support/cookbooks/ark/Berksfile +0 -9
  98. data/support/cookbooks/ark/CHANGELOG.md +0 -87
  99. data/support/cookbooks/ark/CONTRIBUTING.md +0 -257
  100. data/support/cookbooks/ark/README.md +0 -301
  101. data/support/cookbooks/ark/Rakefile +0 -36
  102. data/support/cookbooks/ark/TESTING.md +0 -25
  103. data/support/cookbooks/ark/Toftfile +0 -15
  104. data/support/cookbooks/ark/attributes/default.rb +0 -6
  105. data/support/cookbooks/ark/chefignore +0 -96
  106. data/support/cookbooks/ark/files/default/foo.tar.gz +0 -0
  107. data/support/cookbooks/ark/files/default/foo.tbz +0 -0
  108. data/support/cookbooks/ark/files/default/foo.tgz +0 -0
  109. data/support/cookbooks/ark/files/default/foo.zip +0 -0
  110. data/support/cookbooks/ark/files/default/tests/minitest/default_test.rb +0 -0
  111. data/support/cookbooks/ark/files/default/tests/minitest/support/helpers.rb +0 -0
  112. data/support/cookbooks/ark/files/default/tests/minitest/test_test.rb +0 -94
  113. data/support/cookbooks/ark/libraries/default.rb +0 -167
  114. data/support/cookbooks/ark/metadata.rb +0 -13
  115. data/support/cookbooks/ark/providers/default.rb +0 -370
  116. data/support/cookbooks/ark/recipes/default.rb +0 -31
  117. data/support/cookbooks/ark/recipes/test.rb +0 -138
  118. data/support/cookbooks/ark/resources/default.rb +0 -54
  119. data/support/cookbooks/ark/templates/default/add_to_path.sh.erb +0 -1
  120. data/support/cookbooks/ark/test/support/Gemfile +0 -4
  121. data/support/cookbooks/build-essential/README.md +0 -24
  122. data/support/cookbooks/build-essential/metadata.rb +0 -10
  123. data/support/cookbooks/build-essential/recipes/default.rb +0 -45
  124. data/support/cookbooks/chruby/.gitignore +0 -15
  125. data/support/cookbooks/chruby/.kitchen.yml +0 -26
  126. data/support/cookbooks/chruby/.ruby_version +0 -1
  127. data/support/cookbooks/chruby/Berksfile +0 -3
  128. data/support/cookbooks/chruby/Gemfile +0 -7
  129. data/support/cookbooks/chruby/LICENSE +0 -14
  130. data/support/cookbooks/chruby/README.md +0 -92
  131. data/support/cookbooks/chruby/Rakefile +0 -7
  132. data/support/cookbooks/chruby/Thorfile +0 -6
  133. data/support/cookbooks/chruby/Vagrantfile +0 -86
  134. data/support/cookbooks/chruby/attributes/default.rb +0 -10
  135. data/support/cookbooks/chruby/chefignore +0 -96
  136. data/support/cookbooks/chruby/metadata.rb +0 -11
  137. data/support/cookbooks/chruby/recipes/default.rb +0 -43
  138. data/support/cookbooks/chruby/recipes/system.rb +0 -25
  139. data/support/cookbooks/chruby/templates/default/chruby.sh.erb +0 -22
  140. data/support/cookbooks/chruby/test/integration/default/bash/embedded_test.sh +0 -1
  141. data/support/cookbooks/git/.gitignore +0 -14
  142. data/support/cookbooks/git/.kitchen.yml +0 -46
  143. data/support/cookbooks/git/Berksfile +0 -8
  144. data/support/cookbooks/git/CHANGELOG.md +0 -87
  145. data/support/cookbooks/git/CONTRIBUTING +0 -29
  146. data/support/cookbooks/git/Gemfile +0 -3
  147. data/support/cookbooks/git/LICENSE +0 -201
  148. data/support/cookbooks/git/README.md +0 -115
  149. data/support/cookbooks/git/TESTING.md +0 -25
  150. data/support/cookbooks/git/attributes/default.rb +0 -40
  151. data/support/cookbooks/git/metadata.rb +0 -35
  152. data/support/cookbooks/git/recipes/default.rb +0 -53
  153. data/support/cookbooks/git/recipes/server.rb +0 -58
  154. data/support/cookbooks/git/recipes/source.rb +0 -49
  155. data/support/cookbooks/git/recipes/windows.rb +0 -37
  156. data/support/cookbooks/git/templates/default/git-xinetd.d.erb +0 -10
  157. data/support/cookbooks/git/templates/default/sv-git-daemon-log-run.erb +0 -2
  158. data/support/cookbooks/git/templates/default/sv-git-daemon-run.erb +0 -3
  159. data/support/cookbooks/install_ruby/README.md +0 -3
  160. data/support/cookbooks/install_ruby/metadata.rb +0 -10
  161. data/support/cookbooks/install_ruby/recipes/default.rb +0 -14
  162. data/support/cookbooks/ruby_build/.gitignore +0 -6
  163. data/support/cookbooks/ruby_build/.kitchen.yml +0 -31
  164. data/support/cookbooks/ruby_build/.travis.yml +0 -4
  165. data/support/cookbooks/ruby_build/Berksfile +0 -10
  166. data/support/cookbooks/ruby_build/CHANGELOG.md +0 -72
  167. data/support/cookbooks/ruby_build/Gemfile +0 -14
  168. data/support/cookbooks/ruby_build/README.md +0 -338
  169. data/support/cookbooks/ruby_build/Rakefile +0 -21
  170. data/support/cookbooks/ruby_build/attributes/default.rb +0 -67
  171. data/support/cookbooks/ruby_build/chefignore +0 -53
  172. data/support/cookbooks/ruby_build/libraries/ruby_build_recipe_helpers.rb +0 -40
  173. data/support/cookbooks/ruby_build/metadata.rb +0 -18
  174. data/support/cookbooks/ruby_build/providers/ruby.rb +0 -88
  175. data/support/cookbooks/ruby_build/recipes/default.rb +0 -69
  176. data/support/cookbooks/ruby_build/resources/ruby.rb +0 -33
  177. data/support/cookbooks/ruby_build/test/cookbooks/alltherubies/metadata.rb +0 -10
  178. data/support/cookbooks/ruby_build/test/cookbooks/alltherubies/recipes/default.rb +0 -59
  179. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/_verify_tests.bash +0 -33
  180. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_1.8.7.bats +0 -29
  181. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_1.9.2.bats +0 -18
  182. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_1.9.3.bats +0 -18
  183. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_2.0.0.bats +0 -18
  184. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_jruby.bats +0 -20
  185. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_rbx.bats +0 -18
  186. data/support/cookbooks/ruby_build/test/integration/alltherubies/bats/verify_ree.bats +0 -19
  187. data/support/cookbooks/ruby_build/test/integration/installation/bats/installation.bats +0 -6
  188. data/support/scripts/libsodium_ubuntu.sh +0 -80
  189. data/support/tasks/.gitkeep +0 -0
  190. data/support/tasks/libsodium_install.rb +0 -57
@@ -1,14 +0,0 @@
1
- {
2
- "header": {},
3
- "vaults": {
4
-
5
- "simple_message":{
6
- "owner": "tester",
7
- "fill_with": "EXTERNAL_DATA",
8
- "lock_with": "MASTER_PASSPHRASE",
9
- "unlock_with": "MASTER_PASSPHRASE",
10
- "contents": ""
11
- }
12
-
13
- }
14
- }
@@ -1,33 +0,0 @@
1
- {
2
- "header": {
3
- "title":"",
4
- "description":""
5
- },
6
- "vaults": {
7
-
8
- "":{
9
- "description":"",
10
- "fill_with": "",
11
- "lock_with": "",
12
- "unlock_with": "",
13
- "contents": ""
14
- },
15
-
16
- "":{
17
- "description":"",
18
- "fill_with": "",
19
- "lock_with": "",
20
- "unlock_with": "",
21
- "contents": ""
22
- },
23
-
24
- "":{
25
- "description":"",
26
- "fill_with": "",
27
- "lock_with": "",
28
- "unlock_with": "",
29
- "contents": ""
30
- }
31
-
32
- }
33
- }
@@ -1,28 +0,0 @@
1
- module VaultTree
2
- class CloseValidator
3
- attr_reader :vault
4
-
5
- def initialize(vault)
6
- @vault = vault
7
- end
8
-
9
- def validate!
10
- confirm_valid_fill_keyword
11
- true
12
- end
13
-
14
- private
15
-
16
- def confirm_valid_fill_keyword
17
- raise Exceptions::FillAttemptMasterPassword if vault.fill_with == 'MASTER_PASSPHRASE'
18
- end
19
-
20
- def external_data_required?
21
- vault.fill_with == 'EXTERNAL_DATA'
22
- end
23
-
24
- def external_data_missing?
25
- vault.contract.external_data(vault.id).nil?
26
- end
27
- end
28
- end
@@ -1,113 +0,0 @@
1
- module VaultTree
2
- class Vault
3
- class Doorman
4
- attr_reader :vault
5
-
6
- def initialize(vault)
7
- @vault = vault
8
- end
9
-
10
- def locked_contents
11
- CloseValidator.new(vault).validate!
12
- already_locked? ? contents : ciphertext_contents
13
- end
14
-
15
- def unlocked_contents
16
- OpenValidator.new(vault).validate!
17
- plaintext_contents
18
- end
19
-
20
- private
21
-
22
- def ciphertext_contents
23
- dh_locking_key? ? asymmetric_ciphertext : symmetric_ciphertext
24
- end
25
-
26
- def plaintext_contents
27
- dh_unlocking_key? ? asymmetric_plaintext : symmetric_plaintext
28
- end
29
-
30
- def asymmetric_ciphertext
31
- LockSmith.new(public_key: locking_public_key, private_key: locking_secret_key, message: filler).asymmetric_encrypt
32
- end
33
-
34
- def asymmetric_plaintext
35
- begin
36
- LockSmith.new(public_key: unlocking_public_key, private_key: unlocking_secret_key, cipher_text: contents).asymmetric_decrypt
37
- rescue(RbNaCl::CryptoError)
38
- raise(Exceptions::FailedUnlockAttempt)
39
- end
40
- end
41
-
42
- def symmetric_ciphertext
43
- key_hash = LockSmith.new(message: locking_key).secure_hash
44
- LockSmith.new(message: filler, secret_key: key_hash).symmetric_encrypt
45
- end
46
-
47
- def symmetric_plaintext
48
- begin
49
- key_hash = LockSmith.new(message: unlocking_key).secure_hash
50
- LockSmith.new(cipher_text: contents, secret_key: key_hash).symmetric_decrypt
51
- rescue(RbNaCl::CryptoError)
52
- raise(Exceptions::FailedUnlockAttempt)
53
- end
54
- end
55
-
56
- def locking_key
57
- vault.locking_key
58
- end
59
-
60
- def unlocking_key
61
- vault.unlocking_key
62
- end
63
-
64
- def locking_public_key
65
- locking_key_pair.public_key
66
- end
67
-
68
- def locking_secret_key
69
- locking_key_pair.secret_key
70
- end
71
-
72
- def unlocking_public_key
73
- unlocking_key_pair.public_key
74
- end
75
-
76
- def unlocking_secret_key
77
- unlocking_key_pair.secret_key
78
- end
79
-
80
- def locking_key_pair
81
- vault.locking_key if dh_locking_key?
82
- end
83
-
84
- def unlocking_key_pair
85
- vault.unlocking_key if dh_unlocking_key?
86
- end
87
-
88
- def empty?
89
- vault.empty?
90
- end
91
-
92
- def already_locked?
93
- ! empty?
94
- end
95
-
96
- def filler
97
- vault.filler
98
- end
99
-
100
- def contents
101
- vault.contents
102
- end
103
-
104
- def dh_locking_key?
105
- vault.lock_with =~ /DH_KEY/
106
- end
107
-
108
- def dh_unlocking_key?
109
- vault.unlock_with =~ /DH_KEY/
110
- end
111
- end
112
- end
113
- end
@@ -1,20 +0,0 @@
1
- module VaultTree
2
- class OpenValidator
3
- attr_reader :vault
4
-
5
- def initialize(vault)
6
- @vault = vault
7
- end
8
-
9
- def validate!
10
- confirm_vault_not_empty
11
- true
12
- end
13
-
14
- private
15
-
16
- def confirm_vault_not_empty
17
- raise Exceptions::EmptyVault if vault.empty?
18
- end
19
- end
20
- end
File without changes
@@ -1,6 +0,0 @@
1
- module VaultTree
2
- module Exceptions
3
- class FillAttemptMasterPassword < VaultTreeException
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module VaultTree
2
- module Exceptions
3
- class MissingExternalData < VaultTreeException
4
- end
5
- end
6
- end
@@ -1,25 +0,0 @@
1
- require 'erb'
2
- module VaultTree
3
- module Exceptions
4
- class VaultTreeException < StandardError
5
- # WORK IN PROGRESS
6
- #
7
- #def self.exception
8
- # self.present_exception
9
- # self.new
10
- #end
11
-
12
- #def self.present_exception
13
- # STDOUT.write template.result(binding)
14
- #end
15
-
16
- #def self.template
17
- # ERB.new File.new(template_path).read, nil, "%"
18
- #end
19
-
20
- #def self.template_path
21
- # "lib/vault-tree/exceptions/exception_template.erb"
22
- #end
23
- end
24
- end
25
- end
@@ -1,32 +0,0 @@
1
- module VaultTree
2
- class ExternalData < Keyword
3
-
4
- def evaluate
5
- check_for_external_data
6
- contract.external_data(id)
7
- end
8
-
9
- def id
10
- vault.id
11
- end
12
-
13
- private
14
-
15
- def check_for_external_data
16
- raise(Exceptions::MissingExternalData) if missing_external_data?
17
- end
18
-
19
- def missing_external_data?
20
- nil_external_data? || empty_external_data?
21
- end
22
-
23
- def nil_external_data?
24
- contract.external_data_hash.nil?
25
- end
26
-
27
- def empty_external_data?
28
- contract.external_data_hash.empty?
29
- end
30
-
31
- end
32
- end
@@ -1,57 +0,0 @@
1
- module VaultTree
2
- class GeneratedShamirKey < Keyword
3
- attr_reader :outstanding_shares, :recovery_threshold, :share_vaults
4
-
5
- def post_initialize(arg_array)
6
- @outstanding_shares = arg_array[0]
7
- @recovery_threshold = arg_array[1]
8
- @share_vaults = arg_array[2..arg_array.length]
9
- end
10
-
11
- # Generate a new Shamir key.
12
- #
13
- # Check that shares can be saved in empty vaults
14
- # Put the shares in their respective # vaults.
15
- # Gnerate and Return the key.
16
- #
17
- # @return [String] Secure Hash digest of the generated key
18
- def evaluate
19
- validate_share_vaults
20
- lock_away_key_shares
21
- generated_key
22
- end
23
-
24
- private
25
-
26
- def lock_away_key_shares
27
- c = contract
28
- share_vaults.each do |v|
29
- c = c.close_vault(v, data: data_for_vault(v) )
30
- end
31
- end
32
-
33
- def data_for_vault(id)
34
- generated_key_shares[vault_index(id)]
35
- end
36
-
37
- def vault_index(id)
38
- share_vaults.index(id)
39
- end
40
-
41
- def generated_key
42
- key_object.key
43
- end
44
-
45
- def generated_key_shares
46
- key_object.shares
47
- end
48
-
49
- def key_object
50
- @key_object ||= Crypto::GeneratedShamirKey.new(outstanding_shares: outstanding_shares, recovery_threshold: recovery_threshold)
51
- end
52
-
53
- def validate_share_vaults
54
- true # Add exception tests and functionality later
55
- end
56
- end
57
- end
@@ -1,9 +0,0 @@
1
- module VaultTree
2
- class MasterPassphrase < Keyword
3
-
4
- def evaluate
5
- contract.master_passphrase
6
- end
7
-
8
- end
9
- end
@@ -1,52 +0,0 @@
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
@@ -1,12 +0,0 @@
1
- .vagrant
2
- Berksfile.lock
3
- Gemfile.lock
4
- *~
5
- *#
6
- .#*
7
- \#*#
8
- .*.sw[a-z]
9
- *.un~
10
- /cookbooks
11
- .kitchen
12
- .kitchen.local.yml
@@ -1,34 +0,0 @@
1
- ---
2
- driver_plugin: vagrant
3
- driver_config:
4
- require_chef_omnibus: true
5
-
6
- platforms:
7
- - name: ubuntu-12.04
8
- driver_config:
9
- box: opscode-ubuntu-12.04
10
- box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box
11
- run_list:
12
- - recipe[apt]
13
-
14
- - name: ubuntu-10.04
15
- driver_config:
16
- box: opscode-ubuntu-10.04
17
- box_url: http://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-10.04_provisionerless.box
18
- run_list:
19
- - recipe[apt]
20
-
21
- - name: centos-6.4
22
- driver_config:
23
- box: opscode-centos-6.4
24
- box_url: http://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_centos-6.4_provisionerless.box
25
- run_list:
26
- - recipe[yum::epel]
27
-
28
- suites:
29
- - name: default
30
- run_list:
31
- - recipe[minitest-handler]
32
- - recipe[ark]
33
- - recipe[ark::test]
34
- attributes: {}