@@ -51,17 +51,13 @@ impl OsswuMap for FieldElement {
51
51
0x3fff_ffff_ffff_ffff ,
52
52
] ,
53
53
c2 : FieldElement :: from_hex (
54
- "019877cc1041b7555743c0ae2e3a3e61fb2aaa2e0e87ea557a563d8b598a0940d0a697a9e0b9e92cfaa314f583c9d066" ,
55
- ) ,
56
- map_a : FieldElement :: from_hex (
57
- "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc" ,
54
+ "2accb4a656b0249c71f0500e83da2fdd7f98e383d68b53871f872fcb9ccb80c53c0de1f8a80f7e1914e2ec69f5a626b3" ,
58
55
) ,
56
+ map_a : FieldElement :: from_u64 ( 3 ) . neg ( ) ,
59
57
map_b : FieldElement :: from_hex (
60
58
"b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef" ,
61
59
) ,
62
- z : FieldElement :: from_hex (
63
- "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffff3" ,
64
- ) ,
60
+ z : FieldElement :: from_u64 ( 12 ) . neg ( ) ,
65
61
} ;
66
62
}
67
63
@@ -100,13 +96,13 @@ impl FromOkm for Scalar {
100
96
101
97
#[ cfg( test) ]
102
98
mod tests {
103
- use crate :: { FieldElement , NistP384 , Scalar } ;
99
+ use crate :: { arithmetic :: field :: MODULUS , FieldElement , NistP384 , Scalar } ;
104
100
use elliptic_curve:: {
105
- bigint:: { ArrayEncoding , NonZero , U384 , U576 } ,
101
+ bigint:: { ArrayEncoding , CheckedSub , NonZero , U384 , U576 } ,
106
102
consts:: U72 ,
107
103
generic_array:: GenericArray ,
108
104
group:: cofactor:: CofactorGroup ,
109
- hash2curve:: { self , ExpandMsgXmd , FromOkm , GroupDigest , MapToCurve } ,
105
+ hash2curve:: { self , ExpandMsgXmd , FromOkm , GroupDigest , MapToCurve , OsswuMap } ,
110
106
ops:: Reduce ,
111
107
sec1:: { self , ToEncodedPoint } ,
112
108
Curve ,
@@ -115,6 +111,21 @@ mod tests {
115
111
use proptest:: { num:: u64:: ANY , prelude:: ProptestConfig , proptest} ;
116
112
use sha2:: Sha384 ;
117
113
114
+ #[ test]
115
+ fn params ( ) {
116
+ let params = <FieldElement as OsswuMap >:: PARAMS ;
117
+
118
+ let c1 = MODULUS . checked_sub ( & U384 :: from_u8 ( 3 ) ) . unwrap ( )
119
+ / NonZero :: new ( U384 :: from_u8 ( 4 ) ) . unwrap ( ) ;
120
+ assert_eq ! (
121
+ GenericArray :: from_iter( params. c1. iter( ) . rev( ) . flat_map( |v| v. to_be_bytes( ) ) ) ,
122
+ c1. to_be_byte_array( )
123
+ ) ;
124
+
125
+ let c2 = FieldElement :: from_u64 ( 12 ) . sqrt ( ) . unwrap ( ) ;
126
+ assert_eq ! ( params. c2, c2) ;
127
+ }
128
+
118
129
#[ test]
119
130
fn hash_to_curve ( ) {
120
131
struct TestVector {
@@ -233,7 +244,7 @@ mod tests {
233
244
}
234
245
}
235
246
236
- /// Taken from <https://www .ietf.org/archive/id /draft-irtf-cfrg-voprf-16.html#name-oprfp-384-sha-384-2 >.
247
+ /// Taken from <https://datatracker .ietf.org/doc/html /draft-irtf-cfrg-voprf#appendix-A.4 >.
237
248
#[ test]
238
249
fn hash_to_scalar_voprf ( ) {
239
250
struct TestVector {
@@ -245,22 +256,22 @@ mod tests {
245
256
246
257
const TEST_VECTORS : & [ TestVector ] = & [
247
258
TestVector {
248
- dst : b"DeriveKeyPairVOPRF10 -\x00 \x00 \x04 " ,
259
+ dst : b"DeriveKeyPairOPRFV1 -\x00 -P384-SHA384 " ,
249
260
key_info : b"test key" ,
250
- seed : & hex ! ( "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3 " ) ,
251
- sk_sm : & hex ! ( "c0503759ddd1e31d8c7eae9304c9b1c16f83d1f6d962e3e7b789cd85fd581800e96c5c4256131aafcff9a76919abbd55 " ) ,
261
+ seed : & hex ! ( "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3 " ) ,
262
+ sk_sm : & hex ! ( "dfe7ddc41a4646901184f2b432616c8ba6d452f9bcd0c4f75a5150ef2b2ed02ef40b8b92f60ae591bcabd72a6518f188 " ) ,
252
263
} ,
253
264
TestVector {
254
- dst : b"DeriveKeyPairVOPRF10 -\x01 \x00 \x04 " ,
265
+ dst : b"DeriveKeyPairOPRFV1 -\x01 -P384-SHA384 " ,
255
266
key_info : b"test key" ,
256
- seed : & hex ! ( "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3 " ) ,
257
- sk_sm : & hex ! ( "514fb6fe2e66af1383840759d56f71730331280f062930ee2a2f7ea42f935acf94087355699d788abfdf09d19a5c85ac " ) ,
267
+ seed : & hex ! ( "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3 " ) ,
268
+ sk_sm : & hex ! ( "051646b9e6e7a71ae27c1e1d0b87b4381db6d3595eeeb1adb41579adbf992f4278f9016eafc944edaa2b43183581779d " ) ,
258
269
} ,
259
270
TestVector {
260
- dst : b"DeriveKeyPairVOPRF10 -\x02 \x00 \x04 " ,
271
+ dst : b"DeriveKeyPairOPRFV1 -\x02 -P384-SHA384 " ,
261
272
key_info : b"test key" ,
262
- seed : & hex ! ( "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3 " ) ,
263
- sk_sm : & hex ! ( "0fcba4a204f67d6c13f780e613915f755319aaa3cb03cd20a5a4a6c403a4812a4fff5d3223e2c309aa66b05cb7611fd4 " ) ,
273
+ seed : & hex ! ( "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3 " ) ,
274
+ sk_sm : & hex ! ( "5b2690d6954b8fbb159f19935d64133f12770c00b68422559c65431942d721ff79d47d7a75906c30b7818ec0f38b7fb2 " ) ,
264
275
} ,
265
276
] ;
266
277
0 commit comments