@@ -51,14 +51,15 @@ final class NistCurve
5151 */
5252 public static function curve256 (): Curve
5353 {
54- $ p = gmp_init ('115792089210356248762697446949407573530086143415290314195533631308867097853951 ' , 10 );
54+ $ p = gmp_init ('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff ' , 16 );
55+ $ a = gmp_init ('0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc ' , 16 );
5556 $ b = gmp_init ('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b ' , 16 );
5657 $ x = gmp_init ('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296 ' , 16 );
5758 $ y = gmp_init ('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5 ' , 16 );
58- $ order = gmp_init ('115792089210356248762697446949407573529996955224135760342422259061068512044369 ' , 10 );
59- $ generator = Point::create ($ x , $ y , $ order );
59+ $ n = gmp_init ('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551 ' , 16 );
60+ $ generator = Point::create ($ x , $ y , $ n );
6061
61- return new Curve (256 , $ p , gmp_init (- 3 , 10 ) , $ b , $ generator );
62+ return new Curve (256 , $ p , $ a , $ b , $ generator );
6263 }
6364
6465 /**
@@ -68,14 +69,15 @@ public static function curve256(): Curve
6869 */
6970 public static function curve384 (): Curve
7071 {
71- $ p = gmp_init ('39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319 ' , 10 );
72+ $ p = gmp_init ('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff ' , 16 );
73+ $ a = gmp_init ('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc ' , 16 );
7274 $ b = gmp_init ('0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef ' , 16 );
7375 $ x = gmp_init ('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7 ' , 16 );
7476 $ y = gmp_init ('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f ' , 16 );
75- $ order = gmp_init ('39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643 ' , 10 );
76- $ generator = Point::create ($ x , $ y , $ order );
77+ $ n = gmp_init ('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973 ' , 16 );
78+ $ generator = Point::create ($ x , $ y , $ n );
7779
78- return new Curve (384 , $ p , gmp_init (- 3 , 10 ) , $ b , $ generator );
80+ return new Curve (384 , $ p , $ a , $ b , $ generator );
7981 }
8082
8183 /**
@@ -85,13 +87,14 @@ public static function curve384(): Curve
8587 */
8688 public static function curve521 (): Curve
8789 {
88- $ p = gmp_init ('6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151 ' , 10 );
89- $ b = gmp_init ('0x051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00 ' , 16 );
90- $ x = gmp_init ('0xc6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66 ' , 16 );
91- $ y = gmp_init ('0x11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650 ' , 16 );
92- $ order = gmp_init ('6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449 ' , 10 );
93- $ generator = Point::create ($ x , $ y , $ order );
90+ $ p = gmp_init ('0x000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ' , 16 );
91+ $ a = gmp_init ('0x000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ' , 16 );
92+ $ b = gmp_init ('0x00000051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00 ' , 16 );
93+ $ x = gmp_init ('0x000000c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66 ' , 16 );
94+ $ y = gmp_init ('0x0000011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650 ' , 16 );
95+ $ n = gmp_init ('0x000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409 ' , 16 );
96+ $ generator = Point::create ($ x , $ y , $ n );
9497
95- return new Curve (521 , $ p , gmp_init (- 3 , 10 ) , $ b , $ generator );
98+ return new Curve (521 , $ p , $ a , $ b , $ generator );
9699 }
97100}
0 commit comments