h2c 0.2.0 → 0.2.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: 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