h2c 0.2.0 → 0.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c6ef57a4910bc2bf43459e35bb04d2ddfb9f5b956802b3b514636e4e21f50d5
4
- data.tar.gz: f3af43483cd595fd3975857b94a7b4387a9a5482cb77efa649c9e3003c68e0c7
3
+ metadata.gz: 3de2455d74c152fea54a81e553295ba16f3122e1af6e3d2196e52055eb179180
4
+ data.tar.gz: 6bc78d7cbfa6110f5cee57aff3d099e1a86a25f3a511b7ea13ad4b366aa38bab
5
5
  SHA512:
6
- metadata.gz: e3950efa14cb1e65fd9f327e4f613aaea376730a033eb51d51c77a34998d2a8f6be5c7e8488133a055b67076a6b62c82b52946172e4480b3acc474aa16f8938f
7
- data.tar.gz: 0f604e4bfc0bfa60ca0f78b040c917b481c02da0091a1756064c08dab8c84e6e241290349aea1cb0151b94d49bb3701d02a93708553e9675cdc5087c79911c27
6
+ metadata.gz: 7654446bc65c08a1eb073f4f4de149809e9b44c58d19f9eb420ff2a6c9f9277c5e2b7e7827cde92514e3807fa1ea7544e344be9441c9ac636d256dbdff522af6
7
+ data.tar.gz: 8e4f8ee2aed37e8639869ea488a276f597dc0264cacd50bd8dc1a22ff2316da3ee2adc879af92a922f54e2f6cd7307d57368ec53be8a4d95a6e551fe38465239
data/Gemfile CHANGED
@@ -9,7 +9,7 @@ gem "rake", "~> 13.0"
9
9
 
10
10
  gem "rspec", "~> 3.0"
11
11
 
12
- gem 'prettier'
12
+ gem 'prettier', '4.0.3'
13
13
 
14
14
  gem 'rubocop-rake'
15
15
  gem 'rubocop-rspec'
data/README.md CHANGED
@@ -10,6 +10,8 @@ The following cipher suites are currently supported:
10
10
  * secp256k1_XMD:SHA-256_SSWU_RO_
11
11
  * BLS12381G1_XMD:SHA-256_SSWU_NU_
12
12
  * BLS12381G1_XMD:SHA-256_SSWU_RO_
13
+ * P256_XMD:SHA-256_SSWU_NU_
14
+ * P256_XMD:SHA-256_SSWU_RO_
13
15
  * P384_XMD:SHA-384_SSWU_NU_
14
16
  * P384_XMD:SHA-384_SSWU_RO_
15
17
  * P521_XMD:SHA-512_SSWU_NU_
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
- module ECDSA
2
+ module BLS
3
3
  class Group
4
4
  BLS12381G1 =
5
- new(
5
+ ECDSA::Group.new(
6
6
  name: "bls12381_g1",
7
7
  p:
8
8
  0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab,
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
- module ECDSA
2
+ module BLS
3
3
  class Group
4
4
  BLS12381G1_11ISO =
5
- new(
5
+ ECDSA::Group.new(
6
6
  name: "bls12381_g1_11iso",
7
7
  p:
8
8
  0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab,
@@ -3,7 +3,7 @@ require "digest"
3
3
 
4
4
  module H2C
5
5
  module Expander
6
- # Expander::XML produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.
6
+ # Expander::XMD produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.
7
7
  class XMD
8
8
  attr_reader :dst, :digest
9
9
  # Constructor
data/lib/h2c/expander.rb CHANGED
@@ -33,6 +33,7 @@ module H2C
33
33
  # Get expander implementation
34
34
  # @param [String] func Hash function name. Currently supported by 'SHA-256' and 'SHA-512'.
35
35
  # @raise [H2C::Error] If invalid func specified.
36
+ # @return [XMD] expander implementation, currently only XMD is supported.
36
37
  def get(func, dst, _k)
37
38
  unless HashFunc::XMD_FUNCS.include?(func)
38
39
  raise H2C::Error, "func #{func} is unsupported."
@@ -31,19 +31,20 @@ module H2C
31
31
  # https://www.ietf.org/archive/id/draft-irtf-cfrg-hash-to-curve-16.html#name-hash_to_field-implementatio
32
32
  # @param [String] msg A byte string containing the message to hash.
33
33
  # @param [Integer] count The number of elements of Field to output.
34
+ # @param [Integer] modulo (Optional) This value is a finite field of characteristic p in the
35
+ # hash to curve specification. Other protocols such as FROST can be order of curve.
34
36
  # @return [Array]
35
- def hash_to_field(msg, count)
36
- field = suite.curve.field
37
+ def hash_to_field(msg, count, modulo = suite.curve.field.prime)
37
38
  len = count * suite.m * suite.l
38
39
  pseudo = suite.exp.expand(msg, len)
39
40
  u = []
40
- (0...count).each do |i|
41
+ count.times do |i|
41
42
  v = []
42
- (0...suite.m).each do |j|
43
+ suite.m.times do |j|
43
44
  offset = suite.l * (j + i * suite.m)
44
45
  t = pseudo[offset, (offset + suite.l)]
45
46
  vj = t.unpack1("H*").to_i(16)
46
- v[j] = field.mod(vj)
47
+ v[j] = vj % modulo
47
48
  end
48
49
  u[i] = v
49
50
  end
@@ -76,8 +76,8 @@ module H2C
76
76
  1
77
77
  ].freeze
78
78
  def initialize
79
- @e0 = ECDSA::Group::BLS12381G1_11ISO
80
- @e1 = ECDSA::Group::BLS12381G1
79
+ @e0 = BLS::Group::BLS12381G1_11ISO
80
+ @e1 = BLS::Group::BLS12381G1
81
81
  end
82
82
 
83
83
  def map(x, y)
data/lib/h2c/suite.rb CHANGED
@@ -6,8 +6,8 @@ module H2C
6
6
 
7
7
  SECP256K1_XMDSHA256_SSWU_NU_ = "secp256k1_XMD:SHA-256_SSWU_NU_"
8
8
  SECP256K1_XMDSHA256_SSWU_RO_ = "secp256k1_XMD:SHA-256_SSWU_RO_"
9
- BLS12381G1_XMDSHA256_SWU_NU_ = "BLS12381G1_XMD:SHA-256_SSWU_NU_"
10
- BLS12381G1_XMDSHA256_SWU_RO_ = "BLS12381G1_XMD:SHA-256_SSWU_RO_"
9
+ BLS12381G1_XMDSHA256_SSWU_NU_ = "BLS12381G1_XMD:SHA-256_SSWU_NU_"
10
+ BLS12381G1_XMDSHA256_SSWU_RO_ = "BLS12381G1_XMD:SHA-256_SSWU_RO_"
11
11
  P256_XMDSHA256_SSWU_NU_ = "P256_XMD:SHA-256_SSWU_NU_"
12
12
  P256_XMDSHA256_SSWU_RO_ = "P256_XMD:SHA-256_SSWU_RO_"
13
13
  P384_XMDSHA384_SSWU_NU_ = "P384_XMD:SHA-384_SSWU_NU_"
@@ -29,12 +29,12 @@ module H2C
29
29
  @l = 48
30
30
  @map = M2C::SSWUAB0.new(H2C::M2C::ISOGeny::Secp256k1.new, -11)
31
31
  @ro = (id == SECP256K1_XMDSHA256_SSWU_RO_)
32
- when BLS12381G1_XMDSHA256_SWU_NU_, BLS12381G1_XMDSHA256_SWU_RO_
33
- @curve = ECDSA::Group::BLS12381G1
32
+ when BLS12381G1_XMDSHA256_SSWU_NU_, BLS12381G1_XMDSHA256_SSWU_RO_
33
+ @curve = BLS::Group::BLS12381G1
34
34
  @exp = Expander.get(HashFunc::SHA256, dst, @k)
35
35
  @l = 64
36
36
  @map = M2C::SSWUAB0.new(H2C::M2C::ISOGeny::BLS12381G1.new, 11)
37
- @ro = (id == BLS12381G1_XMDSHA256_SWU_RO_)
37
+ @ro = (id == BLS12381G1_XMDSHA256_SSWU_RO_)
38
38
  when P256_XMDSHA256_SSWU_NU_, P256_XMDSHA256_SSWU_RO_
39
39
  @curve = ECDSA::Group::Nistp256
40
40
  @exp = Expander.get(HashFunc::SHA256, dst, @k)
data/lib/h2c/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module H2C
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: h2c
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-13 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ecdsa