diff --git a/internal/sm9/bn256/constants.go b/internal/sm9/bn256/constants.go index 5e9a7ed..1d7439a 100644 --- a/internal/sm9/bn256/constants.go +++ b/internal/sm9/bn256/constants.go @@ -80,37 +80,48 @@ var pMinus5Over8 = [4]uint64{0x7cadf364fc6a28af, 0xa43e5269634f5ddb, 0x3ac07569f var twoExpPMinus5Over8 = &gfP{0xd5dd560c5235102a, 0xa3772bab091163ac, 0x0ed7304fd0711ab0, 0x8efb889ed7056e1e} // Frobenius Constant, frobConstant = i^((p-1)/6) -var frobConstant = fromBigInt(bigFromHex("3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b")) +// 3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b +var frobConstant = newGFpFromBytes([]byte{0x3f, 0x23, 0xea, 0x58, 0xe5, 0x72, 0x0b, 0xdb, 0x84, 0x3c, 0x6c, 0xfa, 0x9c, 0x08, 0x67, 0x49, 0x47, 0xc5, 0xc8, 0x6e, 0x0d, 0xdd, 0x04, 0xed, 0xa9, 0x1d, 0x83, 0x54, 0x37, 0x7b, 0x69, 0x8b}) // vToPMinus1 is v^(p-1), vToPMinus1 ^ 2 = p - 1 -var vToPMinus1 = fromBigInt(bigFromHex("6c648de5dc0a3f2cf55acc93ee0baf159f9d411806dc5177f5b21fd3da24d011")) +// 6c648de5dc0a3f2cf55acc93ee0baf159f9d411806dc5177f5b21fd3da24d011 +var vToPMinus1 = newGFpFromBytes([]byte{0x6c, 0x64, 0x8d, 0xe5, 0xdc, 0x0a, 0x3f, 0x2c, 0xf5, 0x5a, 0xcc, 0x93, 0xee, 0x0b, 0xaf, 0x15, 0x9f, 0x9d, 0x41, 0x18, 0x06, 0xdc, 0x51, 0x77, 0xf5, 0xb2, 0x1f, 0xd3, 0xda, 0x24, 0xd0, 0x11}) // wToPMinus1 is w^(p-1) -var wToPMinus1 = fromBigInt(bigFromHex("3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b")) +// 3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b +var wToPMinus1 = frobConstant // w2ToPMinus1 is (w^2)^(p-1) -var w2ToPMinus1 = fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334")) +// 0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334 +var w2ToPMinus1 = newGFpFromBytes([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x02, 0xa3, 0xa6, 0xf2, 0x78, 0x02, 0x72, 0x35, 0x4f, 0x8b, 0x78, 0xf4, 0xd5, 0xfc, 0x11, 0x96, 0x7b, 0xe6, 0x53, 0x34}) // wToP2Minus1 is w^(p^2-1) -var wToP2Minus1 = fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334")) +// 0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334 +var wToP2Minus1 = w2ToPMinus1 // w2ToP2Minus1 is (w^2)^(p^2-1), w2ToP2Minus1 = vToPMinus1 * wToPMinus1 -var w2ToP2Minus1 = fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333")) +// 0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333 +var w2ToP2Minus1 = newGFpFromBytes([]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x02, 0xa3, 0xa6, 0xf2, 0x78, 0x02, 0x72, 0x35, 0x4f, 0x8b, 0x78, 0xf4, 0xd5, 0xfc, 0x11, 0x96, 0x7b, 0xe6, 0x53, 0x33}) // vToPMinus1Mw2ToPMinus1 = vToPMinus1 * w2ToPMinus1 -var vToPMinus1Mw2ToPMinus1 = fromBigInt(bigFromHex("2d40a38cf6983351711e5f99520347cc57d778a9f8ff4c8a4c949c7fa2a96686")) +// 2d40a38cf6983351711e5f99520347cc57d778a9f8ff4c8a4c949c7fa2a96686 +var vToPMinus1Mw2ToPMinus1 = newGFpFromBytes([]byte{0x2d, 0x40, 0xa3, 0x8c, 0xf6, 0x98, 0x33, 0x51, 0x71, 0x1e, 0x5f, 0x99, 0x52, 0x03, 0x47, 0xcc, 0x57, 0xd7, 0x78, 0xa9, 0xf8, 0xff, 0x4c, 0x8a, 0x4c, 0x94, 0x9c, 0x7f, 0xa2, 0xa9, 0x66, 0x86}) // betaToNegPPlus1Over3 = i^(-(p-1)/3) -var betaToNegPPlus1Over3 = fromBigInt(bigFromHex("b640000002a3a6f0e303ab4ff2eb2052a9f02115caef75e70f738991676af24a")) +// b640000002a3a6f0e303ab4ff2eb2052a9f02115caef75e70f738991676af24a +var betaToNegPPlus1Over3 = newGFpFromBytes([]byte{0xb6, 0x40, 0x00, 0x00, 0x02, 0xa3, 0xa6, 0xf0, 0xe3, 0x03, 0xab, 0x4f, 0xf2, 0xeb, 0x20, 0x52, 0xa9, 0xf0, 0x21, 0x15, 0xca, 0xef, 0x75, 0xe7, 0x0f, 0x73, 0x89, 0x91, 0x67, 0x6a, 0xf2, 0x4a}) // betaToNegPPlus1Over2 = i^(-(p-1)/2) -var betaToNegPPlus1Over2 = fromBigInt(bigFromHex("49db721a269967c4e0a8debc0783182f82555233139e9d63efbd7b54092c756c")) +// 49db721a269967c4e0a8debc0783182f82555233139e9d63efbd7b54092c756c +var betaToNegPPlus1Over2 = newGFpFromBytes([]byte{0x49, 0xdb, 0x72, 0x1a, 0x26, 0x99, 0x67, 0xc4, 0xe0, 0xa8, 0xde, 0xbc, 0x07, 0x83, 0x18, 0x2f, 0x82, 0x55, 0x52, 0x33, 0x13, 0x9e, 0x9d, 0x63, 0xef, 0xbd, 0x7b, 0x54, 0x09, 0x2c, 0x75, 0x6c}) // betaToNegP2Plus1Over3 = i^(-(p^2-1)/3) -var betaToNegP2Plus1Over3 = fromBigInt(bigFromHex("b640000002a3a6f0e303ab4ff2eb2052a9f02115caef75e70f738991676af249")) +// b640000002a3a6f0e303ab4ff2eb2052a9f02115caef75e70f738991676af249 +var betaToNegP2Plus1Over3 = newGFpFromBytes([]byte{0xb6, 0x40, 0x00, 0x00, 0x02, 0xa3, 0xa6, 0xf0, 0xe3, 0x03, 0xab, 0x4f, 0xf2, 0xeb, 0x20, 0x52, 0xa9, 0xf0, 0x21, 0x15, 0xca, 0xef, 0x75, 0xe7, 0x0f, 0x73, 0x89, 0x91, 0x67, 0x6a, 0xf2, 0x49}) // betaToNegP2Plus1Over2 = i^(-(p^2-1)/2) -var betaToNegP2Plus1Over2 = fromBigInt(bigFromHex("b640000002a3a6f1d603ab4ff58ec74521f2934b1a7aeedbe56f9b27e351457c")) +// b640000002a3a6f1d603ab4ff58ec74521f2934b1a7aeedbe56f9b27e351457c +var betaToNegP2Plus1Over2 = newGFpFromBytes([]byte{0xb6, 0x40, 0x00, 0x00, 0x02, 0xa3, 0xa6, 0xf1, 0xd6, 0x03, 0xab, 0x4f, 0xf5, 0x8e, 0xc7, 0x45, 0x21, 0xf2, 0x93, 0x4b, 0x1a, 0x7a, 0xee, 0xdb, 0xe5, 0x6f, 0x9b, 0x27, 0xe3, 0x51, 0x45, 0x7c}) var sToPMinus1 = w2ToPMinus1 diff --git a/internal/sm9/bn256/curve.go b/internal/sm9/bn256/curve.go index d8bf0f5..0fe1bce 100644 --- a/internal/sm9/bn256/curve.go +++ b/internal/sm9/bn256/curve.go @@ -16,8 +16,8 @@ var threeCurveB = newGFp(3 * 5) // curveGen is the generator of G₁. var curveGen = &curvePoint{ - x: *fromBigInt(bigFromHex("93DE051D62BF718FF5ED0704487D01D6E1E4086909DC3280E8C4E4817C66DDDD")), - y: *fromBigInt(bigFromHex("21FE8DDA4F21E607631065125C395BBC1C1C00CBFA6024350C464CD70A3EA616")), + x: *newGFpFromBytes([]byte{0x93, 0xDE, 0x05, 0x1D, 0x62, 0xBF, 0x71, 0x8F, 0xF5, 0xED, 0x07, 0x04, 0x48, 0x7D, 0x01, 0xD6, 0xE1, 0xE4, 0x08, 0x69, 0x09, 0xDC, 0x32, 0x80, 0xE8, 0xC4, 0xE4, 0x81, 0x7C, 0x66, 0xDD, 0xDD}), + y: *newGFpFromBytes([]byte{0x21, 0xFE, 0x8D, 0xDA, 0x4F, 0x21, 0xE6, 0x07, 0x63, 0x10, 0x65, 0x12, 0x5C, 0x39, 0x5B, 0xBC, 0x1C, 0x1C, 0x00, 0xCB, 0xFA, 0x60, 0x24, 0x35, 0x0C, 0x46, 0x4C, 0xD7, 0x0A, 0x3E, 0xA6, 0x16}), z: *one, t: *one, } diff --git a/internal/sm9/bn256/g1.go b/internal/sm9/bn256/g1.go index 672177c..df3878d 100644 --- a/internal/sm9/bn256/g1.go +++ b/internal/sm9/bn256/g1.go @@ -407,8 +407,11 @@ func (g1 *G1Curve) pointFromAffine(x, y *big.Int) (a *G1, err error) { if x.BitLen() > g1.params.BitSize || y.BitLen() > g1.params.BitSize { return a, errors.New("overflowing coordinate") } - a.p.x = *fromBigInt(x) - a.p.y = *fromBigInt(y) + var buf [32]byte + x.FillBytes(buf[:]) + a.p.x = *newGFpFromBytes(buf[:]) + y.FillBytes(buf[:]) + a.p.y = *newGFpFromBytes(buf[:]) a.p.z = *newGFp(1) a.p.t = *newGFp(1) diff --git a/internal/sm9/bn256/gfp.go b/internal/sm9/bn256/gfp.go index b64d1ac..2c614e8 100644 --- a/internal/sm9/bn256/gfp.go +++ b/internal/sm9/bn256/gfp.go @@ -3,10 +3,7 @@ package bn256 import ( "errors" "fmt" - "math/big" "math/bits" - - "github.com/emmansun/gmsm/internal/byteorder" ) type gfP [4]uint64 @@ -27,33 +24,10 @@ func newGFp(x int64) (out *gfP) { return out } -func fromBigInt(x *big.Int) (out *gfP) { +func newGFpFromBytes(in []byte) (out *gfP) { out = &gfP{} - var a *big.Int - if x.Sign() >= 0 { - a = x - } else { - a = new(big.Int).Neg(x) - } - bytes := a.Bytes() - if len(bytes) > 32 { - panic("sm9: invalid byte length") - } else if len(bytes) < 32 { - fixedBytes := make([]byte, 32) - copy(fixedBytes[32-len(bytes):], bytes) - bytes = fixedBytes - } - for i := 0; i < 4; i++ { - start := len(bytes) - 8 - out[i] = byteorder.BEUint64(bytes[start:]) - bytes = bytes[:start] - } - if x.Sign() < 0 { - gfpNeg(out, out) - } - if x.Sign() != 0 { - montEncode(out, out) - } + gfpUnmarshal(out, (*[32]byte)(in)) + montEncode(out, out) return out } @@ -71,7 +45,7 @@ func (e *gfP) exp(f *gfP, bits [4]uint64) { sum.Set(rN1) power.Set(f) - for word := 0; word < 4; word++ { + for word := range 4 { for bit := uint(0); bit < 64; bit++ { if (bits[word]>>bit)&1 == 1 { gfpMul(sum, sum, power) diff --git a/internal/sm9/bn256/gfp12.go b/internal/sm9/bn256/gfp12.go index 4f9bc27..503a004 100644 --- a/internal/sm9/bn256/gfp12.go +++ b/internal/sm9/bn256/gfp12.go @@ -23,32 +23,32 @@ func gfP12Decode(in *gfP12) *gfP12 { var gfP12Gen *gfP12 = &gfP12{ x: gfP4{ x: gfP2{ - x: *fromBigInt(bigFromHex("256943fbdb2bf87ab91ae7fbeaff14e146cf7e2279b9d155d13461e09b22f523")), - y: *fromBigInt(bigFromHex("0167b0280051495c6af1ec23ba2cd2ff1cdcdeca461a5ab0b5449e9091308310")), + x: *newGFpFromBytes([]byte{0x25, 0x69, 0x43, 0xfb, 0xdb, 0x2b, 0xf8, 0x7a, 0xb9, 0x1a, 0xe7, 0xfb, 0xea, 0xff, 0x14, 0xe1, 0x46, 0xcf, 0x7e, 0x22, 0x79, 0xb9, 0xd1, 0x55, 0xd1, 0x34, 0x61, 0xe0, 0x9b, 0x22, 0xf5, 0x23}), + y: *newGFpFromBytes([]byte{0x01, 0x67, 0xb0, 0x28, 0x00, 0x51, 0x49, 0x5c, 0x6a, 0xf1, 0xec, 0x23, 0xba, 0x2c, 0xd2, 0xff, 0x1c, 0xdc, 0xde, 0xca, 0x46, 0x1a, 0x5a, 0xb0, 0xb5, 0x44, 0x9e, 0x90, 0x91, 0x30, 0x83, 0x10}), }, y: gfP2{ - x: *fromBigInt(bigFromHex("5e7addaddf7fbfe16291b4e89af50b8217ddc47ba3cba833c6e77c3fb027685e")), - y: *fromBigInt(bigFromHex("79d0c8337072c93fef482bb055f44d6247ccac8e8e12525854b3566236337ebe")), + x: *newGFpFromBytes([]byte{0x5e, 0x7a, 0xdd, 0xad, 0xdf, 0x7f, 0xbf, 0xe1, 0x62, 0x91, 0xb4, 0xe8, 0x9a, 0xf5, 0x0b, 0x82, 0x17, 0xdd, 0xc4, 0x7b, 0xa3, 0xcb, 0xa8, 0x33, 0xc6, 0xe7, 0x7c, 0x3f, 0xb0, 0x27, 0x68, 0x5e}), + y: *newGFpFromBytes([]byte{0x79, 0xd0, 0xc8, 0x33, 0x70, 0x72, 0xc9, 0x3f, 0xef, 0x48, 0x2b, 0xb0, 0x55, 0xf4, 0x4d, 0x62, 0x47, 0xcc, 0xac, 0x8e, 0x8e, 0x12, 0x52, 0x58, 0x54, 0xb3, 0x56, 0x62, 0x36, 0x33, 0x7e, 0xbe}), }, }, y: gfP4{ x: gfP2{ - x: *fromBigInt(bigFromHex("082cde173022da8cd09b28a2d80a8cee53894436a52007f978dc37f36116d39b")), - y: *fromBigInt(bigFromHex("3fa7ed741eaed99a58f53e3df82df7ccd3407bcc7b1d44a9441920ced5fb824f")), + x: *newGFpFromBytes([]byte{0x08, 0x2c, 0xde, 0x17, 0x30, 0x22, 0xda, 0x8c, 0xd0, 0x9b, 0x28, 0xa2, 0xd8, 0x0a, 0x8c, 0xee, 0x53, 0x89, 0x44, 0x36, 0xa5, 0x20, 0x07, 0xf9, 0x78, 0xdc, 0x37, 0xf3, 0x61, 0x16, 0xd3, 0x9b}), + y: *newGFpFromBytes([]byte{0x3f, 0xa7, 0xed, 0x74, 0x1e, 0xae, 0xd9, 0x9a, 0x58, 0xf5, 0x3e, 0x3d, 0xf8, 0x2d, 0xf7, 0xcc, 0xd3, 0x40, 0x7b, 0xcc, 0x7b, 0x1d, 0x44, 0xa9, 0x44, 0x19, 0x20, 0xce, 0xd5, 0xfb, 0x82, 0x4f}), }, y: gfP2{ - x: *fromBigInt(bigFromHex("7fc6eb2aa771d99c9234fddd31752edfd60723e05a4ebfdeb5c33fbd47e0cf06")), - y: *fromBigInt(bigFromHex("6fa6b6fa6dd6b6d3b19a959a110e748154eef796dc0fc2dd766ea414de786968")), + x: *newGFpFromBytes([]byte{0x7f, 0xc6, 0xeb, 0x2a, 0xa7, 0x71, 0xd9, 0x9c, 0x92, 0x34, 0xfd, 0xdd, 0x31, 0x75, 0x2e, 0xdf, 0xd6, 0x07, 0x23, 0xe0, 0x5a, 0x4e, 0xbf, 0xde, 0xb5, 0xc3, 0x3f, 0xbd, 0x47, 0xe0, 0xcf, 0x06}), + y: *newGFpFromBytes([]byte{0x6f, 0xa6, 0xb6, 0xfa, 0x6d, 0xd6, 0xb6, 0xd3, 0xb1, 0x9a, 0x95, 0x9a, 0x11, 0x0e, 0x74, 0x81, 0x54, 0xee, 0xf7, 0x96, 0xdc, 0x0f, 0xc2, 0xdd, 0x76, 0x6e, 0xa4, 0x14, 0xde, 0x78, 0x69, 0x68}), }, }, z: gfP4{ x: gfP2{ - x: *fromBigInt(bigFromHex("8ffe1c0e9de45fd0fed790ac26be91f6b3f0a49c084fe29a3fb6ed288ad7994d")), - y: *fromBigInt(bigFromHex("1664a1366beb3196f0443e15f5f9042a947354a5678430d45ba031cff06db927")), + x: *newGFpFromBytes([]byte{0x8f, 0xfe, 0x1c, 0x0e, 0x9d, 0xe4, 0x5f, 0xd0, 0xfe, 0xd7, 0x90, 0xac, 0x26, 0xbe, 0x91, 0xf6, 0xb3, 0xf0, 0xa4, 0x9c, 0x08, 0x4f, 0xe2, 0x9a, 0x3f, 0xb6, 0xed, 0x28, 0x8a, 0xd7, 0x99, 0x4d}), + y: *newGFpFromBytes([]byte{0x16, 0x64, 0xa1, 0x36, 0x6b, 0xeb, 0x31, 0x96, 0xf0, 0x44, 0x3e, 0x15, 0xf5, 0xf9, 0x04, 0x2a, 0x94, 0x73, 0x54, 0xa5, 0x67, 0x84, 0x30, 0xd4, 0x5b, 0xa0, 0x31, 0xcf, 0xf0, 0x6d, 0xb9, 0x27}), }, y: gfP2{ - x: *fromBigInt(bigFromHex("7f7c6d52b475e6aaa827fdc5b4175ac6929320f782d998f86b6b57cda42a0426")), - y: *fromBigInt(bigFromHex("36a699de7c136f78eee2dbac4ca9727bff0cee02ee920f5822e65ea170aa9669")), + x: *newGFpFromBytes([]byte{0x7f, 0x7c, 0x6d, 0x52, 0xb4, 0x75, 0xe6, 0xaa, 0xa8, 0x27, 0xfd, 0xc5, 0xb4, 0x17, 0x5a, 0xc6, 0x92, 0x93, 0x20, 0xf7, 0x82, 0xd9, 0x98, 0xf8, 0x6b, 0x6b, 0x57, 0xcd, 0xa4, 0x2a, 0x04, 0x26}), + y: *newGFpFromBytes([]byte{0x36, 0xa6, 0x99, 0xde, 0x7c, 0x13, 0x6f, 0x78, 0xee, 0xe2, 0xdb, 0xac, 0x4c, 0xa9, 0x72, 0x7b, 0xff, 0x0c, 0xee, 0x02, 0xee, 0x92, 0x0f, 0x58, 0x22, 0xe6, 0x5e, 0xa1, 0x70, 0xaa, 0x96, 0x69}), }, }, } @@ -227,13 +227,13 @@ func (e *gfP12) SquareNC(a *gfP12) *gfP12 { } // Cyclo6Square is used in final exponentiation after easy part(a ^ ((p^2 + 1)(p^6-1))). -// Note that after the easy part of the final exponentiation, -// the resulting element lies in cyclotomic subgroup. +// Note that after the easy part of the final exponentiation, +// the resulting element lies in cyclotomic subgroup. // "New software speed records for cryptographic pairings" // Section 3.3, Final exponentiation // https://cryptojedi.org/papers/dclxvi-20100714.pdf // The fomula reference: -// Granger/Scott (PKC2010). +// Granger/Scott (PKC2010). // Section 3.2 // https://eprint.iacr.org/2009/565.pdf func (e *gfP12) Cyclo6Square(a *gfP12) *gfP12 { diff --git a/internal/sm9/bn256/gfp12_b6.go b/internal/sm9/bn256/gfp12_b6.go index 4781d36..e528c7b 100644 --- a/internal/sm9/bn256/gfp12_b6.go +++ b/internal/sm9/bn256/gfp12_b6.go @@ -18,30 +18,30 @@ func gfP12b6Decode(in *gfP12b6) *gfP12b6 { var gfP12b6Gen *gfP12b6 = &gfP12b6{ x: gfP6{ x: gfP2{ - x: *fromBigInt(bigFromHex("256943fbdb2bf87ab91ae7fbeaff14e146cf7e2279b9d155d13461e09b22f523")), - y: *fromBigInt(bigFromHex("0167b0280051495c6af1ec23ba2cd2ff1cdcdeca461a5ab0b5449e9091308310")), + x: *newGFpFromBytes([]byte{0x25, 0x69, 0x43, 0xfb, 0xdb, 0x2b, 0xf8, 0x7a, 0xb9, 0x1a, 0xe7, 0xfb, 0xea, 0xff, 0x14, 0xe1, 0x46, 0xcf, 0x7e, 0x22, 0x79, 0xb9, 0xd1, 0x55, 0xd1, 0x34, 0x61, 0xe0, 0x9b, 0x22, 0xf5, 0x23}), + y: *newGFpFromBytes([]byte{0x01, 0x67, 0xb0, 0x28, 0x00, 0x51, 0x49, 0x5c, 0x6a, 0xf1, 0xec, 0x23, 0xba, 0x2c, 0xd2, 0xff, 0x1c, 0xdc, 0xde, 0xca, 0x46, 0x1a, 0x5a, 0xb0, 0xb5, 0x44, 0x9e, 0x90, 0x91, 0x30, 0x83, 0x10}), }, y: gfP2{ - x: *fromBigInt(bigFromHex("8ffe1c0e9de45fd0fed790ac26be91f6b3f0a49c084fe29a3fb6ed288ad7994d")), - y: *fromBigInt(bigFromHex("1664a1366beb3196f0443e15f5f9042a947354a5678430d45ba031cff06db927")), + x: *newGFpFromBytes([]byte{0x8f, 0xfe, 0x1c, 0x0e, 0x9d, 0xe4, 0x5f, 0xd0, 0xfe, 0xd7, 0x90, 0xac, 0x26, 0xbe, 0x91, 0xf6, 0xb3, 0xf0, 0xa4, 0x9c, 0x08, 0x4f, 0xe2, 0x9a, 0x3f, 0xb6, 0xed, 0x28, 0x8a, 0xd7, 0x99, 0x4d}), + y: *newGFpFromBytes([]byte{0x16, 0x64, 0xa1, 0x36, 0x6b, 0xeb, 0x31, 0x96, 0xf0, 0x44, 0x3e, 0x15, 0xf5, 0xf9, 0x04, 0x2a, 0x94, 0x73, 0x54, 0xa5, 0x67, 0x84, 0x30, 0xd4, 0x5b, 0xa0, 0x31, 0xcf, 0xf0, 0x6d, 0xb9, 0x27}), }, z: gfP2{ - x: *fromBigInt(bigFromHex("7fc6eb2aa771d99c9234fddd31752edfd60723e05a4ebfdeb5c33fbd47e0cf06")), - y: *fromBigInt(bigFromHex("6fa6b6fa6dd6b6d3b19a959a110e748154eef796dc0fc2dd766ea414de786968")), + x: *newGFpFromBytes([]byte{0x7f, 0xc6, 0xeb, 0x2a, 0xa7, 0x71, 0xd9, 0x9c, 0x92, 0x34, 0xfd, 0xdd, 0x31, 0x75, 0x2e, 0xdf, 0xd6, 0x07, 0x23, 0xe0, 0x5a, 0x4e, 0xbf, 0xde, 0xb5, 0xc3, 0x3f, 0xbd, 0x47, 0xe0, 0xcf, 0x06}), + y: *newGFpFromBytes([]byte{0x6f, 0xa6, 0xb6, 0xfa, 0x6d, 0xd6, 0xb6, 0xd3, 0xb1, 0x9a, 0x95, 0x9a, 0x11, 0x0e, 0x74, 0x81, 0x54, 0xee, 0xf7, 0x96, 0xdc, 0x0f, 0xc2, 0xdd, 0x76, 0x6e, 0xa4, 0x14, 0xde, 0x78, 0x69, 0x68}), }, }, y: gfP6{ x: gfP2{ - x: *fromBigInt(bigFromHex("082cde173022da8cd09b28a2d80a8cee53894436a52007f978dc37f36116d39b")), - y: *fromBigInt(bigFromHex("3fa7ed741eaed99a58f53e3df82df7ccd3407bcc7b1d44a9441920ced5fb824f")), + x: *newGFpFromBytes([]byte{0x08, 0x2c, 0xde, 0x17, 0x30, 0x22, 0xda, 0x8c, 0xd0, 0x9b, 0x28, 0xa2, 0xd8, 0x0a, 0x8c, 0xee, 0x53, 0x89, 0x44, 0x36, 0xa5, 0x20, 0x07, 0xf9, 0x78, 0xdc, 0x37, 0xf3, 0x61, 0x16, 0xd3, 0x9b}), + y: *newGFpFromBytes([]byte{0x3f, 0xa7, 0xed, 0x74, 0x1e, 0xae, 0xd9, 0x9a, 0x58, 0xf5, 0x3e, 0x3d, 0xf8, 0x2d, 0xf7, 0xcc, 0xd3, 0x40, 0x7b, 0xcc, 0x7b, 0x1d, 0x44, 0xa9, 0x44, 0x19, 0x20, 0xce, 0xd5, 0xfb, 0x82, 0x4f}), }, y: gfP2{ - x: *fromBigInt(bigFromHex("5e7addaddf7fbfe16291b4e89af50b8217ddc47ba3cba833c6e77c3fb027685e")), - y: *fromBigInt(bigFromHex("79d0c8337072c93fef482bb055f44d6247ccac8e8e12525854b3566236337ebe")), + x: *newGFpFromBytes([]byte{0x5e, 0x7a, 0xdd, 0xad, 0xdf, 0x7f, 0xbf, 0xe1, 0x62, 0x91, 0xb4, 0xe8, 0x9a, 0xf5, 0x0b, 0x82, 0x17, 0xdd, 0xc4, 0x7b, 0xa3, 0xcb, 0xa8, 0x33, 0xc6, 0xe7, 0x7c, 0x3f, 0xb0, 0x27, 0x68, 0x5e}), + y: *newGFpFromBytes([]byte{0x79, 0xd0, 0xc8, 0x33, 0x70, 0x72, 0xc9, 0x3f, 0xef, 0x48, 0x2b, 0xb0, 0x55, 0xf4, 0x4d, 0x62, 0x47, 0xcc, 0xac, 0x8e, 0x8e, 0x12, 0x52, 0x58, 0x54, 0xb3, 0x56, 0x62, 0x36, 0x33, 0x7e, 0xbe}), }, z: gfP2{ - x: *fromBigInt(bigFromHex("7f7c6d52b475e6aaa827fdc5b4175ac6929320f782d998f86b6b57cda42a0426")), - y: *fromBigInt(bigFromHex("36a699de7c136f78eee2dbac4ca9727bff0cee02ee920f5822e65ea170aa9669")), + x: *newGFpFromBytes([]byte{0x7f, 0x7c, 0x6d, 0x52, 0xb4, 0x75, 0xe6, 0xaa, 0xa8, 0x27, 0xfd, 0xc5, 0xb4, 0x17, 0x5a, 0xc6, 0x92, 0x93, 0x20, 0xf7, 0x82, 0xd9, 0x98, 0xf8, 0x6b, 0x6b, 0x57, 0xcd, 0xa4, 0x2a, 0x04, 0x26}), + y: *newGFpFromBytes([]byte{0x36, 0xa6, 0x99, 0xde, 0x7c, 0x13, 0x6f, 0x78, 0xee, 0xe2, 0xdb, 0xac, 0x4c, 0xa9, 0x72, 0x7b, 0xff, 0x0c, 0xee, 0x02, 0xee, 0x92, 0x0f, 0x58, 0x22, 0xe6, 0x5e, 0xa1, 0x70, 0xaa, 0x96, 0x69}), }, }, } @@ -202,13 +202,13 @@ func (e *gfP12b6) SquareNC(a *gfP12b6) *gfP12b6 { } // Cyclo6Square is used in final exponentiation after easy part(a ^ ((p^2 + 1)(p^6-1))). -// Note that after the easy part of the final exponentiation, -// the resulting element lies in cyclotomic subgroup. +// Note that after the easy part of the final exponentiation, +// the resulting element lies in cyclotomic subgroup. // "New software speed records for cryptographic pairings" // Section 3.3, Final exponentiation // https://cryptojedi.org/papers/dclxvi-20100714.pdf // The fomula reference: -// Granger/Scott (PKC2010). +// Granger/Scott (PKC2010). // Section 3.2 // https://eprint.iacr.org/2009/565.pdf func (e *gfP12b6) Cyclo6Square(a *gfP12b6) *gfP12b6 { @@ -334,11 +334,11 @@ func (e *gfP12b6) Cyclo6Squares(a *gfP12b6, n int) *gfP12b6 { gfP4Square(t11, t00, &in.x.y, &in.y.z) gfP4Square(t12, t01, &in.y.x, &in.x.z) gfP4Square(t02, t10, &in.x.x, &in.y.y) - + f00.MulU1(t02) t02.Set(t10) t10.Set(f00) - + f00.Add(t00, t00) t00.Add(f00, t00) f00.Add(t01, t01) @@ -351,7 +351,7 @@ func (e *gfP12b6) Cyclo6Squares(a *gfP12b6, n int) *gfP12b6 { t11.Add(f00, t11) f00.Add(t12, t12) t12.Add(f00, t12) - + f00.Add(&in.y.z, &in.y.z) f00.Neg(f00) f01.Add(&in.y.y, &in.y.y) @@ -361,7 +361,7 @@ func (e *gfP12b6) Cyclo6Squares(a *gfP12b6, n int) *gfP12b6 { f10.Add(&in.x.z, &in.x.z) f11.Add(&in.x.y, &in.x.y) f12.Add(&in.x.x, &in.x.x) - + f00.Add(f00, t00) f01.Add(f01, t01) f02.Add(f02, t02) diff --git a/internal/sm9/bn256/gfp12_b6_test.go b/internal/sm9/bn256/gfp12_b6_test.go index e5ed779..3e58b42 100644 --- a/internal/sm9/bn256/gfp12_b6_test.go +++ b/internal/sm9/bn256/gfp12_b6_test.go @@ -7,16 +7,16 @@ import ( var p6 = gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } @@ -123,8 +123,8 @@ func TestToGfP12(t *testing.T) { } // after mul gfp - x2.MulGfP(x, fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"))) - p12_1.MulGFP(p12, fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"))) + x2.MulGfP(x, newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")) + p12_1.MulGFP(p12, newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")) x3.SetGfP12(p12_1) if *x2 != *x3 { x3 = gfP12b6Decode(x3) @@ -134,8 +134,8 @@ func TestToGfP12(t *testing.T) { // after mul gfp2 gfp2 := &gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), } x2.MulGfP2(x, gfp2) @@ -183,7 +183,7 @@ func Test_gfP12b6Invert(t *testing.T) { func TestSToPMinus1Over2(t *testing.T) { expected := &gfP2{} - expected.y.Set(fromBigInt(bigFromHex("3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b"))) + expected.y.Set(newGFpFromHex("3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b")) expected.x.Set(zero) s := &gfP6{} @@ -218,7 +218,7 @@ func TestSToPSquaredMinus1Over2(t *testing.T) { s.Exp(s, p2) expected := &gfP2{} - expected.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334"))) + expected.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334")) expected.x.Set(zero) if !(s.x.IsZero() && s.y.IsZero() && s.z == *expected) { @@ -252,7 +252,7 @@ func TestSToP4Minus1Over2(t *testing.T) { s.Exp(s, p4) expected := &gfP2{} - expected.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333"))) + expected.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333")) expected.x.Set(zero) if !(s.x.IsZero() && s.y.IsZero() && s.z == *expected) { diff --git a/internal/sm9/bn256/gfp12_test.go b/internal/sm9/bn256/gfp12_test.go index 543e7b8..879222f 100644 --- a/internal/sm9/bn256/gfp12_test.go +++ b/internal/sm9/bn256/gfp12_test.go @@ -7,12 +7,12 @@ import ( var testdataP4 = gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } @@ -243,7 +243,7 @@ func Test_gfP12Frobenius_Case1(t *testing.T) { i = gfP12Decode(i) expected.z.x.SetZero() expected.z.y.x.Set(zero) - expected.z.y.y.Set(fromBigInt(bigFromHex("3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b"))) + expected.z.y.y.Set(newGFpFromHex("3f23ea58e5720bdb843c6cfa9c08674947c5c86e0ddd04eda91d8354377b698b")) expected.x.SetZero() expected.y.SetZero() expected = gfP12Decode(expected) @@ -262,7 +262,7 @@ func Test_gfP12Frobenius_Case2(t *testing.T) { i = gfP12Decode(i) expected.z.x.SetZero() expected.z.y.x.Set(zero) - expected.z.y.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334"))) + expected.z.y.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334")) expected.x.SetZero() expected.y.SetZero() expected = gfP12Decode(expected) @@ -282,7 +282,7 @@ func Test_gfP12FrobeniusP2_Case1(t *testing.T) { i = gfP12Decode(i) expected.z.x.SetZero() expected.z.y.x.Set(zero) - expected.z.y.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334"))) + expected.z.y.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334")) expected.x.SetZero() expected.y.SetZero() expected = gfP12Decode(expected) @@ -302,7 +302,7 @@ func Test_gfP12FrobeniusP2_Case2(t *testing.T) { i = gfP12Decode(i) expected.z.x.SetZero() expected.z.y.x.Set(zero) - expected.z.y.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333"))) + expected.z.y.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333")) expected.x.SetZero() expected.y.SetZero() expected = gfP12Decode(expected) @@ -323,7 +323,7 @@ func Test_gfP12FrobeniusP3_Case1(t *testing.T) { i = gfP12Decode(i) expected.z.x.SetZero() expected.z.y.x.Set(zero) - expected.z.y.y.Set(fromBigInt(bigFromHex("6c648de5dc0a3f2cf55acc93ee0baf159f9d411806dc5177f5b21fd3da24d011"))) + expected.z.y.y.Set(newGFpFromHex("6c648de5dc0a3f2cf55acc93ee0baf159f9d411806dc5177f5b21fd3da24d011")) expected.x.SetZero() expected.y.SetZero() expected = gfP12Decode(expected) @@ -344,7 +344,7 @@ func Test_gfP12FrobeniusP3_Case2(t *testing.T) { i = gfP12Decode(i) expected.z.x.SetZero() expected.z.y.x.Set(zero) - expected.z.y.y.Set(fromBigInt(bigFromHex("b640000002a3a6f1d603ab4ff58ec74521f2934b1a7aeedbe56f9b27e351457c"))) // -1 + expected.z.y.y.Set(newGFpFromHex("b640000002a3a6f1d603ab4ff58ec74521f2934b1a7aeedbe56f9b27e351457c")) // -1 expected.x.SetZero() expected.y.SetZero() expected = gfP12Decode(expected) diff --git a/internal/sm9/bn256/gfp2_test.go b/internal/sm9/bn256/gfp2_test.go index d0a61c9..7ac5bb8 100644 --- a/internal/sm9/bn256/gfp2_test.go +++ b/internal/sm9/bn256/gfp2_test.go @@ -7,12 +7,12 @@ import ( func TestGfp2BasicOperations(t *testing.T) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } y := &gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), } expectedAdd := "(5bf55bb67d25f098609a367366d94d6599da7405db44c388edb64706908922e4, 728185f97d3df3a01d3ad2a0e140d12011e10fa47d50fd12e6413a361e549cd9)" expectedSub := "(0e6cca2ef0f4dce3fa4a249bb48a25d84dbf1f63ac843004e3b586d5dac6e8eb, 51785a37fb519603d4b026648151d768ebe9b9193a9c83c365c31316fb711845)" @@ -125,8 +125,8 @@ func TestGfp2BasicOperations(t *testing.T) { func Test_gfP2Invert(t *testing.T) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } xInv := &gfP2{} @@ -141,7 +141,7 @@ func Test_gfP2Invert(t *testing.T) { } x = &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), *zero, } @@ -155,7 +155,7 @@ func Test_gfP2Invert(t *testing.T) { x = &gfP2{ *zero, - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } xInv.Invert(x) @@ -169,8 +169,8 @@ func Test_gfP2Invert(t *testing.T) { func Test_gfP2Exp(t *testing.T) { x := &gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), } got := &gfP2{} got.Exp(x, big.NewInt(1)) @@ -181,8 +181,8 @@ func Test_gfP2Exp(t *testing.T) { func Test_gfP2Frobenius(t *testing.T) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } expected := &gfP2{} expected.Exp(x, p) @@ -207,8 +207,8 @@ func Test_gfP2Frobenius(t *testing.T) { func Test_gfP2Sqrt(t *testing.T) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } x2, x3, sqrt, sqrtNeg := &gfP2{}, &gfP2{}, &gfP2{}, &gfP2{} x2.Mul(x, x) @@ -227,12 +227,12 @@ func Test_gfP2Sqrt(t *testing.T) { func BenchmarkGfP2Mul(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } y := &gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), } t := &gfP2{} b.ReportAllocs() @@ -244,8 +244,8 @@ func BenchmarkGfP2Mul(b *testing.B) { func BenchmarkGfP2MulScalar(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } t := &gfP2{} @@ -258,8 +258,8 @@ func BenchmarkGfP2MulScalar(b *testing.B) { func BenchmarkGfP2MulU1(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } t := &gfP2{} @@ -272,12 +272,12 @@ func BenchmarkGfP2MulU1(b *testing.B) { func BenchmarkGfP2MulU(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } y := &gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), } t := &gfP2{} @@ -290,8 +290,8 @@ func BenchmarkGfP2MulU(b *testing.B) { func BenchmarkGfP2Square(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } b.ReportAllocs() b.ResetTimer() @@ -302,8 +302,8 @@ func BenchmarkGfP2Square(b *testing.B) { func BenchmarkGfP2SquareU(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } b.ReportAllocs() b.ResetTimer() @@ -314,8 +314,8 @@ func BenchmarkGfP2SquareU(b *testing.B) { func BenchmarkGfP2Invert(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } t := &gfP2{} b.ReportAllocs() @@ -327,8 +327,8 @@ func BenchmarkGfP2Invert(b *testing.B) { func BenchmarkGfP2Neg(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } b.ReportAllocs() b.ResetTimer() @@ -340,8 +340,8 @@ func BenchmarkGfP2Neg(b *testing.B) { func BenchmarkGfP2Neg2(b *testing.B) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } b.ReportAllocs() b.ResetTimer() @@ -354,8 +354,8 @@ func BenchmarkGfP2Neg2(b *testing.B) { /* func Test_gfP2QuadraticResidue(t *testing.T) { x := &gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), } n := bigFromHex("40df880001e10199aa9f985292a7740a5f3e998ff60a2401e81d08b99ba6f8ff691684e427df891a9250c20f55961961fe81f6fc785a9512ad93e28f5cfb4f84") y := &gfP2{} diff --git a/internal/sm9/bn256/gfp4_test.go b/internal/sm9/bn256/gfp4_test.go index d118e23..ad23513 100644 --- a/internal/sm9/bn256/gfp4_test.go +++ b/internal/sm9/bn256/gfp4_test.go @@ -8,12 +8,12 @@ import ( func TestGfp4BasicOperations(t *testing.T) { x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } y := &gfP4{} @@ -115,12 +115,12 @@ func TestGfp4BasicOperations(t *testing.T) { func Test_gfP4Square(t *testing.T) { x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } xmulx := &gfP4{} @@ -140,12 +140,12 @@ func Test_gfP4Invert(t *testing.T) { gfp2Zero := (&gfP2{}).SetZero() x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } @@ -160,8 +160,8 @@ func Test_gfP4Invert(t *testing.T) { x = &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, *gfp2Zero, } @@ -176,8 +176,8 @@ func Test_gfP4Invert(t *testing.T) { x = &gfP4{ *gfp2Zero, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } @@ -192,12 +192,12 @@ func Test_gfP4Invert(t *testing.T) { func Test_gfP4Frobenius(t *testing.T) { x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } expected := &gfP4{} @@ -218,7 +218,7 @@ func Test_gfP4Frobenius_Case1(t *testing.T) { i.Exp(i, pMinus1) i = gfP4Decode(i) expected.y.x.Set(zero) - expected.y.y.Set(fromBigInt(bigFromHex("6c648de5dc0a3f2cf55acc93ee0baf159f9d411806dc5177f5b21fd3da24d011"))) + expected.y.y.Set(newGFpFromHex("6c648de5dc0a3f2cf55acc93ee0baf159f9d411806dc5177f5b21fd3da24d011")) expected.x.SetZero() expected = gfP4Decode(expected) if expected.x != i.x || expected.y != i.y { @@ -229,12 +229,12 @@ func Test_gfP4Frobenius_Case1(t *testing.T) { func Test_gfP4FrobeniusP2(t *testing.T) { x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } expected := &gfP4{} @@ -267,12 +267,12 @@ func Test_gfP4FrobeniusP2_Case1(t *testing.T) { func Test_gfP4FrobeniusP3(t *testing.T) { x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } expected := &gfP4{} @@ -289,22 +289,22 @@ func Test_gfP4FrobeniusP3(t *testing.T) { func BenchmarkGfP4Mul(b *testing.B) { x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } y := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, } t := &gfP4{} @@ -318,12 +318,12 @@ func BenchmarkGfP4Mul(b *testing.B) { func BenchmarkGfP4Square(b *testing.B) { x := &gfP4{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } t := &gfP4{} diff --git a/internal/sm9/bn256/gfp6_test.go b/internal/sm9/bn256/gfp6_test.go index 6b36441..eef7fdf 100644 --- a/internal/sm9/bn256/gfp6_test.go +++ b/internal/sm9/bn256/gfp6_test.go @@ -8,16 +8,16 @@ import ( func TestMulS(t *testing.T) { x := &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } s := &gfP6{} @@ -52,28 +52,28 @@ func Test_gfP6Square(t *testing.T) { gfp2Zero := (&gfP2{}).SetZero() x := &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } testGfP6Square(t, x) x = &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, *gfp2Zero, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } testGfP6Square(t, x) @@ -94,28 +94,28 @@ func Test_gfP6Invert(t *testing.T) { gfp2Zero := (&gfP2{}).SetZero() x := &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } testGfP6Invert(t, x) x = &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, *gfp2Zero, } @@ -124,12 +124,12 @@ func Test_gfP6Invert(t *testing.T) { x = &gfP6{ *gfp2Zero, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, } testGfP6Invert(t, x) @@ -137,13 +137,13 @@ func Test_gfP6Invert(t *testing.T) { x = &gfP6{ gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, *gfp2Zero, gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, } testGfP6Invert(t, x) @@ -154,7 +154,7 @@ func Test_gfP6Invert(t *testing.T) { // sToPMinus1 = 0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334 func TestSToPMinus1(t *testing.T) { expected := &gfP2{} - expected.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334"))) + expected.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334")) expected.x.Set(zero) s := &gfP6{} @@ -170,7 +170,7 @@ func TestSToPMinus1(t *testing.T) { // s2ToPMinus1 = 0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333 func TestS2ToPMinus1(t *testing.T) { expected := &gfP2{} - expected.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333"))) + expected.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333")) expected.x.Set(zero) s := &gfP6{} @@ -182,7 +182,7 @@ func TestS2ToPMinus1(t *testing.T) { } s2 := &gfP2{} - s2.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334"))) + s2.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65334")) s2.x.Set(zero) s2.Square(s2) @@ -194,16 +194,16 @@ func TestS2ToPMinus1(t *testing.T) { func Test_gfP6Frobenius(t *testing.T) { x := &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } expected := &gfP6{} @@ -223,7 +223,7 @@ func TestSToPSquaredMinus1(t *testing.T) { s.Exp(s, p2) expected := &gfP2{} - expected.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333"))) + expected.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333")) expected.x.Set(zero) if !(s.x.IsZero() && s.y.IsZero() && s.z == *expected) { @@ -233,11 +233,11 @@ func TestSToPSquaredMinus1(t *testing.T) { func TestSTo2PSquaredMinus2(t *testing.T) { expected := &gfP2{} - expected.y.Set(fromBigInt(bigFromHex("b640000002a3a6f0e303ab4ff2eb2052a9f02115caef75e70f738991676af249"))) + expected.y.Set(newGFpFromHex("b640000002a3a6f0e303ab4ff2eb2052a9f02115caef75e70f738991676af249")) expected.x.Set(zero) s2 := &gfP2{} - s2.y.Set(fromBigInt(bigFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333"))) + s2.y.Set(newGFpFromHex("0000000000000000f300000002a3a6f2780272354f8b78f4d5fc11967be65333")) s2.x.Set(zero) s2.Square(s2) @@ -250,16 +250,16 @@ func TestSTo2PSquaredMinus2(t *testing.T) { func Test_gfP6FrobeniusP2(t *testing.T) { x := &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } expected := &gfP6{} @@ -275,16 +275,16 @@ func Test_gfP6FrobeniusP2(t *testing.T) { func Test_gfP6FrobeniusP4(t *testing.T) { x := &gfP6{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141"), + *newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96"), + *newGFpFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7"), }, } expected := &gfP6{} diff --git a/internal/sm9/bn256/gfp_test.go b/internal/sm9/bn256/gfp_test.go index 497b9b7..fafd041 100644 --- a/internal/sm9/bn256/gfp_test.go +++ b/internal/sm9/bn256/gfp_test.go @@ -6,15 +6,25 @@ import ( "testing" ) +func fromBigInt(x *big.Int) (out *gfP) { + var buf [32]byte + x.FillBytes(buf[:]) + return newGFpFromBytes(buf[:]) +} + +func newGFpFromHex(x string) (out *gfP) { + return fromBigInt(bigFromHex(x)) +} + func TestGfpBasicOperations(t *testing.T) { - x := fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")) - y := fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")) - expectedAdd := fromBigInt(bigFromHex("0691692307d370af56226e57920199fbbe10f216c67fbc9468c7f225a4b1f21f")) - expectedDouble := fromBigInt(bigFromHex("551de7a0ee24723edcf314ff72f478fac1c7c4e7044238acc3913cfbcdaf7d05")) - expectedSub := fromBigInt(bigFromHex("67b381821c52a5624f3304a8149be8461e3bc07adcb872c38aa65051ba53ba97")) - expectedNeg := fromBigInt(bigFromHex("7f1d8aad70909be90358f1d02240062433cc3a0248ded72febb879ec33ce6f22")) - expectedMul := fromBigInt(bigFromHex("3d08bbad376584e4f74bd31f78f716372b96ba8c3f939c12b8d54e79b6489e76")) - expectedMul2 := fromBigInt(bigFromHex("1df94a9e05a559ff38e0ab50cece734dc058d33738ceacaa15986a67cbff1ef6")) + x := newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141") + y := newGFpFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B") + expectedAdd := newGFpFromHex("0691692307d370af56226e57920199fbbe10f216c67fbc9468c7f225a4b1f21f") + expectedDouble := newGFpFromHex("551de7a0ee24723edcf314ff72f478fac1c7c4e7044238acc3913cfbcdaf7d05") + expectedSub := newGFpFromHex("67b381821c52a5624f3304a8149be8461e3bc07adcb872c38aa65051ba53ba97") + expectedNeg := newGFpFromHex("7f1d8aad70909be90358f1d02240062433cc3a0248ded72febb879ec33ce6f22") + expectedMul := newGFpFromHex("3d08bbad376584e4f74bd31f78f716372b96ba8c3f939c12b8d54e79b6489e76") + expectedMul2 := newGFpFromHex("1df94a9e05a559ff38e0ab50cece734dc058d33738ceacaa15986a67cbff1ef6") t.Parallel() t.Run("add", func(t *testing.T) { @@ -142,7 +152,7 @@ func TestGfpSqr(t *testing.T) { } func TestFromMont(t *testing.T) { - x := fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")) + x := newGFpFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141") ret1, ret2 := &gfP{}, &gfP{} gfpFromMont(ret1, x) gfpMul(ret2, x, &gfP{1}) @@ -240,7 +250,7 @@ func TestGeneratedSqrt(t *testing.T) { } func TestInvert(t *testing.T) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") xInv := &gfP{} xInv.Invert(x) y := &gfP{} @@ -251,7 +261,7 @@ func TestInvert(t *testing.T) { } func TestGfpNeg(t *testing.T) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") got := &gfP{} gfpSub(got, zero, x) expected := &gfP{} @@ -267,7 +277,7 @@ func TestGfpNeg(t *testing.T) { } func BenchmarkGfPUnmarshal(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() var out [32]byte @@ -278,7 +288,7 @@ func BenchmarkGfPUnmarshal(b *testing.B) { } func BenchmarkGfPMul(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -288,7 +298,7 @@ func BenchmarkGfPMul(b *testing.B) { } func BenchmarkGfPSqr(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -298,7 +308,7 @@ func BenchmarkGfPSqr(b *testing.B) { } func BenchmarkGfPTriple(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -308,7 +318,7 @@ func BenchmarkGfPTriple(b *testing.B) { } func BenchmarkGfPTriple2(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -319,7 +329,7 @@ func BenchmarkGfPTriple2(b *testing.B) { } func BenchmarkGfPDouble(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -329,7 +339,7 @@ func BenchmarkGfPDouble(b *testing.B) { } func BenchmarkGfPDouble2(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -339,7 +349,7 @@ func BenchmarkGfPDouble2(b *testing.B) { } func BenchmarkGfPNeg(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -349,7 +359,7 @@ func BenchmarkGfPNeg(b *testing.B) { } func BenchmarkGfPNeg2(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -359,7 +369,7 @@ func BenchmarkGfPNeg2(b *testing.B) { } func BenchmarkGfPInvert(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} @@ -369,7 +379,7 @@ func BenchmarkGfPInvert(b *testing.B) { } func BenchmarkGfPInvert2(b *testing.B) { - x := fromBigInt(bigFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596")) + x := newGFpFromHex("9093a2b979e6186f43a9b28d41ba644d533377f2ede8c66b19774bf4a9c7a596") b.ReportAllocs() b.ResetTimer() ret := &gfP{} diff --git a/internal/sm9/bn256/twist.go b/internal/sm9/bn256/twist.go index 6a2b84e..b7d7ce0 100644 --- a/internal/sm9/bn256/twist.go +++ b/internal/sm9/bn256/twist.go @@ -25,12 +25,12 @@ var threeTwistB = &gfP2{ // twistGen is the generator of group G₂. var twistGen = &twistPoint{ gfP2{ - *fromBigInt(bigFromHex("85AEF3D078640C98597B6027B441A01FF1DD2C190F5E93C454806C11D8806141")), - *fromBigInt(bigFromHex("3722755292130B08D2AAB97FD34EC120EE265948D19C17ABF9B7213BAF82D65B")), + *newGFpFromBytes([]byte{0x85, 0xAE, 0xF3, 0xD0, 0x78, 0x64, 0x0C, 0x98, 0x59, 0x7B, 0x60, 0x27, 0xB4, 0x41, 0xA0, 0x1F, 0xF1, 0xDD, 0x2C, 0x19, 0x0F, 0x5E, 0x93, 0xC4, 0x54, 0x80, 0x6C, 0x11, 0xD8, 0x80, 0x61, 0x41}), + *newGFpFromBytes([]byte{0x37, 0x22, 0x75, 0x52, 0x92, 0x13, 0x0B, 0x08, 0xD2, 0xAA, 0xB9, 0x7F, 0xD3, 0x4E, 0xC1, 0x20, 0xEE, 0x26, 0x59, 0x48, 0xD1, 0x9C, 0x17, 0xAB, 0xF9, 0xB7, 0x21, 0x3B, 0xAF, 0x82, 0xD6, 0x5B}), }, gfP2{ - *fromBigInt(bigFromHex("17509B092E845C1266BA0D262CBEE6ED0736A96FA347C8BD856DC76B84EBEB96")), - *fromBigInt(bigFromHex("A7CF28D519BE3DA65F3170153D278FF247EFBA98A71A08116215BBA5C999A7C7")), + *newGFpFromBytes([]byte{0x17, 0x50, 0x9B, 0x09, 0x2E, 0x84, 0x5C, 0x12, 0x66, 0xBA, 0x0D, 0x26, 0x2C, 0xBE, 0xE6, 0xED, 0x07, 0x36, 0xA9, 0x6F, 0xA3, 0x47, 0xC8, 0xBD, 0x85, 0x6D, 0xC7, 0x6B, 0x84, 0xEB, 0xEB, 0x96}), + *newGFpFromBytes([]byte{0xA7, 0xCF, 0x28, 0xD5, 0x19, 0xBE, 0x3D, 0xA6, 0x5F, 0x31, 0x70, 0x15, 0x3D, 0x27, 0x8F, 0xF2, 0x47, 0xEF, 0xBA, 0x98, 0xA7, 0x1A, 0x08, 0x11, 0x62, 0x15, 0xBB, 0xA5, 0xC9, 0x99, 0xA7, 0xC7}), }, gfP2{*newGFp(0), *newGFp(1)}, gfP2{*newGFp(0), *newGFp(1)},