Sha256: 53af046b9473f24a9c7deee344ed217ea3e5121aac38b9a0a44e443c90868700

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

module VaultTree
  class GeneratedShamirKey < Keyword
    attr_reader :outstanding_shares, :recovery_threshold, :share_vaults

    def post_initialize(arg_array)
      @outstanding_shares = arg_array[0]
      @recovery_threshold = arg_array[1]
      @share_vaults = arg_array[2..arg_array.length]
    end

    # Generate a new Shamir key.
    #
    # Check that shares can be saved in empty vaults
    # Put the shares in their respective # vaults.
    # Gnerate and Return the key.
    #
    # @return [String] Secure Hash digest of the generated key
    def evaluate
      validate_share_vaults
      lock_away_key_shares
      generated_key
    end

    private

    def lock_away_key_shares
      c = contract
      share_vaults.each do |v|
        c = c.close_vault(v, data: data_for_vault(v) )
      end
    end

    def data_for_vault(id)
      generated_key_shares[vault_index(id)]
    end

    def vault_index(id)
      share_vaults.index(id)
    end

    def generated_key
      key_object.key
    end

    def generated_key_shares
      key_object.shares
    end

    def key_object
      @key_object ||= Crypto::GeneratedShamirKey.new(outstanding_shares: outstanding_shares, recovery_threshold: recovery_threshold)
    end

    def validate_share_vaults
      true # Add exception tests and functionality later
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vault-tree-0.3.4 lib/vault-tree/keywords/generated_shamir_key.rb
vault-tree-0.3.3 lib/vault-tree/keywords/generated_shamir_key.rb