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 +4 -4
- data/Gemfile +1 -1
- data/README.md +2 -0
- data/lib/ext/curve/bls12381_g1.rb +2 -2
- data/lib/ext/curve/bls12381_g1_11iso.rb +2 -2
- data/lib/h2c/expander/xmd.rb +1 -1
- data/lib/h2c/expander.rb +1 -0
- data/lib/h2c/hash_to_point.rb +6 -5
- data/lib/h2c/m2c/isogeny/bls12381_g1.rb +2 -2
- data/lib/h2c/suite.rb +5 -5
- data/lib/h2c/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3de2455d74c152fea54a81e553295ba16f3122e1af6e3d2196e52055eb179180
|
4
|
+
data.tar.gz: 6bc78d7cbfa6110f5cee57aff3d099e1a86a25f3a511b7ea13ad4b366aa38bab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7654446bc65c08a1eb073f4f4de149809e9b44c58d19f9eb420ff2a6c9f9277c5e2b7e7827cde92514e3807fa1ea7544e344be9441c9ac636d256dbdff522af6
|
7
|
+
data.tar.gz: 8e4f8ee2aed37e8639869ea488a276f597dc0264cacd50bd8dc1a22ff2316da3ee2adc879af92a922f54e2f6cd7307d57368ec53be8a4d95a6e551fe38465239
|
data/Gemfile
CHANGED
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_
|
data/lib/h2c/expander/xmd.rb
CHANGED
@@ -3,7 +3,7 @@ require "digest"
|
|
3
3
|
|
4
4
|
module H2C
|
5
5
|
module Expander
|
6
|
-
# Expander::
|
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."
|
data/lib/h2c/hash_to_point.rb
CHANGED
@@ -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
|
-
|
41
|
+
count.times do |i|
|
41
42
|
v = []
|
42
|
-
|
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] =
|
47
|
+
v[j] = vj % modulo
|
47
48
|
end
|
48
49
|
u[i] = v
|
49
50
|
end
|
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
|
-
|
10
|
-
|
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
|
33
|
-
@curve =
|
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 ==
|
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
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.
|
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:
|
11
|
+
date: 2024-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ecdsa
|