sharing 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2741454d22738f53a151a7720d1dec3efe64728e32b92efe103392c7ec46c2f
4
- data.tar.gz: '02118b02fe47723227a04e9203d28b248cdccc3b2ab9e747675b63f465856bf3'
3
+ metadata.gz: 5c3ca365fc28e5bd00b60ddae38c473e7cc4fab0bd82601634380e58d823c966
4
+ data.tar.gz: 839ded7393e627ae15fefcd4be3bb05d797ccc0b7a61af54e73232a57f594cdf
5
5
  SHA512:
6
- metadata.gz: e122938b94ee0077b3c90825df2afb2d3bbee50d474779876cf7ad0867f82b27f353303dfa9d6840b9aa6b15f4eb485cad154587811531add995fe5180ef3314
7
- data.tar.gz: 39487860406b1583b7d16beedb2dc0bec498058524972b16167d859d34a48f8e26f5d12218164ccd163690c678c1806615f90a9beb9e1b405c0f4e8e535c6629
6
+ metadata.gz: 75cc42e29de49f5a9391f021753869398b42bcdfd87204de288a37c27f85be3da0883772b9e2722847c78f870bad47558e37f6eff2c24d3f1f41bdeff4c2d44b
7
+ data.tar.gz: 0b399903a1837bdee94707f7317b214b60339ab96b2d3684e62a7be04d93d5882d1b2e7ba238f8bb2146c73663c905e8ad69d667ceb353200cbcfd054154d473
data/CHANGELOG.md CHANGED
@@ -1,5 +1,7 @@
1
- ## [Unreleased]
1
+ ## [0.1.1] - 2022-03-25
2
2
 
3
- ## [0.1.0] - 2022-03-10
3
+ - Fix threshold setting on Shamir's scheme v1
4
+
5
+ ## [0.1.0] - 2022-03-25
4
6
 
5
7
  - Initial release
data/Gemfile CHANGED
@@ -7,7 +7,7 @@ source "https://rubygems.org"
7
7
  # Specify your gem's dependencies in secret_sharing.gemspec
8
8
  gemspec
9
9
 
10
- gem "hensel_code", "~> 0.3.0"
10
+ gem "hensel_code", "~> 0.3.1"
11
11
 
12
12
  gem "prime", "~> 0.1.2"
13
13
 
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- secret_sharing (0.1.0)
5
- hensel_code (~> 0.3.0)
4
+ sharing (0.1.0)
5
+ hensel_code (~> 0.3.1)
6
6
  prime (~> 0.1.2)
7
7
 
8
8
  GEM
@@ -15,13 +15,16 @@ GEM
15
15
  simplecov (>= 0.15, < 0.22)
16
16
  docile (1.4.0)
17
17
  forwardable (1.3.2)
18
- hensel_code (0.3.0)
18
+ hensel_code (0.3.1)
19
+ openssl (~> 3.0.0)
20
+ prime (~> 0.1.2)
19
21
  minitest (5.15.0)
20
22
  minitest-reporters (1.5.0)
21
23
  ansi
22
24
  builder
23
25
  minitest (>= 5.0)
24
26
  ruby-progressbar
27
+ openssl (3.0.0)
25
28
  parallel (1.21.0)
26
29
  parser (3.1.1.0)
27
30
  ast (~> 2.4.1)
@@ -62,7 +65,7 @@ PLATFORMS
62
65
 
63
66
  DEPENDENCIES
64
67
  codecov
65
- hensel_code (~> 0.3.0)
68
+ hensel_code (~> 0.3.1)
66
69
  minitest (~> 5.0)
67
70
  minitest-reporters (~> 1.5)
68
71
  prime (~> 0.1.2)
@@ -70,7 +73,7 @@ DEPENDENCIES
70
73
  rubocop (~> 1.21)
71
74
  rubocop-minitest (~> 0.17.2)
72
75
  rubocop-rake (~> 0.6)
73
- secret_sharing!
76
+ sharing!
74
77
 
75
78
  RUBY VERSION
76
79
  ruby 3.1.0p0
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Secret Sharing
1
+ # Sharing
2
2
 
3
3
  A secret sharing Ruby library.
4
4
 
data/bin/console CHANGED
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "bundler/setup"
5
- require "secret_sharing"
5
+ require "sharing"
6
6
 
7
7
  # You can add fixtures and/or initialization code here to make experimenting
8
8
  # with your gem easier. You can also use a different console, if you like.
@@ -46,14 +46,15 @@ module Sharing
46
46
 
47
47
  def create_shares(secret)
48
48
  random_coefficients = generate_random_coefficients
49
- (1..total_shares).map.with_index { |x, i| [i + 1, f(x, secret, random_coefficients) % p] }
49
+ (1..total_shares).map { |x| [x, f(x, secret, random_coefficients) % p] }
50
50
  end
51
51
 
52
52
  def reconstruct_secret(points)
53
53
  xs = points.map(&:first)
54
54
  ys = points.map(&:last)
55
55
  l0s = lagrange_basis_polynomial(xs)
56
- l0s.zip(ys).map { |l, y| l * y }.sum % p
56
+ reconstructed_secret = l0s.zip(ys).map { |l, y| l * y }.sum % p
57
+ encode_to_integer(reconstructed_secret)
57
58
  end
58
59
 
59
60
  private
@@ -63,7 +64,11 @@ module Sharing
63
64
  end
64
65
 
65
66
  def generate_random_coefficients
66
- random_distinct_numbers("integer", total_shares - 1, lambda_ - 1)
67
+ random_distinct_numbers("integer", threshold - 1, lambda_ - 1)
68
+ end
69
+
70
+ def encode_to_integer(reconstructed_secret)
71
+ (reconstructed_secret.numerator * mod_inverse(reconstructed_secret.denominator, p)) % p
67
72
  end
68
73
  end
69
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sharing
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
data/sharing.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.require_paths = ["lib"]
31
31
 
32
32
  # Uncomment to register a new dependency of your gem
33
- spec.add_dependency "hensel_code", "~> 0.3.0"
33
+ spec.add_dependency "hensel_code", "~> 0.3.1"
34
34
  spec.add_dependency "prime", "~> 0.1.2"
35
35
 
36
36
  # For more information and examples about making a new gem, check out our
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sharing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David William Silva
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.0
19
+ version: 0.3.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.3.0
26
+ version: 0.3.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: prime
29
29
  requirement: !ruby/object:Gem::Requirement