github.com/insight-chain/inb-go@v1.1.3-0.20191221022159-da049980ae38/crypto/bn256/google/constants.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package bn256 6 7 import ( 8 "math/big" 9 ) 10 11 func bigFromBase10(s string) *big.Int { 12 n, _ := new(big.Int).SetString(s, 10) 13 return n 14 } 15 16 // u is the BN parameter that determines the prime: 1868033³. 17 var u = bigFromBase10("4965661367192848881") 18 19 // p is a prime over which we form a basic field: 36u⁴+36u³+24u²+6u+1. 20 var P = bigFromBase10("21888242871839275222246405745257275088696311157297823662689037894645226208583") 21 22 // Order is the number of elements in both G₁ and G₂: 36u⁴+36u³+18u²+6u+1. 23 var Order = bigFromBase10("21888242871839275222246405745257275088548364400416034343698204186575808495617") 24 25 // XiTo2PMinusTnum1 is a prime over which we form a basic field. 26 var XiToPMinusTnum1 = new(big.Int).Mul(big.NewInt(5e+5), big.NewInt(1e+5)) 27 28 // XiTo2PMinusTnum2 is a prime over which we form a basic field. 29 var XiToPMinusTnum2 = new(big.Int).Mul(big.NewInt(1e+8), big.NewInt(1e+5)) 30 31 //XiTo2PMinusTacc1 is Tacc, represented as little-endian 64-bit words. 32 var XiTo2PMinusTacc1 = []byte{149, 80, 137, 227, 60, 253, 240, 174, 42, 61, 22, 248, 133, 77, 35, 131, 164, 53, 138, 150} 33 34 //XiTo2PMinusTacc2 is Tacc, represented as little-endian 64-bit words. 35 var XiTo2PMinusTacc2 = []byte{149, 191, 36, 82, 139, 52, 12, 242, 186, 147, 195, 5, 209, 47, 82, 245, 248, 79, 113, 19} 36 37 //XiTo2PMinusTacc3 is Tacc, represented as little-endian 64-bit words. 38 var XiTo2PMinusTacc3 = []byte{149, 169, 227, 120, 40, 18, 229, 152, 55, 22, 154, 210, 219, 186, 142, 89, 63, 241, 121, 134} 39 40 //XiTo2PMinusTacc4 is Tacc, represented as little-endian 64-bit words. 41 var XiTo2PMinusTacc4 = []byte{149, 120, 51, 108, 108, 194, 170, 186, 94, 154, 14, 134, 212, 83, 89, 31, 128, 207, 31, 190} 42 43 //XiTo2PMinusTacc5 is Tacc, represented as little-endian 64-bit words. 44 var XiTo2PMinusTacc5 = []byte{149, 148, 86, 132, 241, 47, 108, 243, 16, 119, 156, 199, 14, 27, 20, 24, 245, 142, 17, 61} 45 46 //XiTo2PMinusTacc6 is Tacc, represented as little-endian 64-bit words. 47 var XiTo2PMinusTacc6 = []byte{149, 128, 30, 204, 127, 145, 176, 159, 42, 116, 217, 155, 15, 153, 114, 165, 198, 179, 153, 87} 48 49 // xiToPMinus1Over6 is ξ^((p-1)/6) where ξ = i+9. 50 var xiToPMinus1Over6 = &gfP2{bigFromBase10("16469823323077808223889137241176536799009286646108169935659301613961712198316"), bigFromBase10("8376118865763821496583973867626364092589906065868298776909617916018768340080")} 51 52 // xiToPMinus1Over3 is ξ^((p-1)/3) where ξ = i+9. 53 var xiToPMinus1Over3 = &gfP2{bigFromBase10("10307601595873709700152284273816112264069230130616436755625194854815875713954"), bigFromBase10("21575463638280843010398324269430826099269044274347216827212613867836435027261")} 54 55 // xiToPMinus1Over2 is ξ^((p-1)/2) where ξ = i+9. 56 var xiToPMinus1Over2 = &gfP2{bigFromBase10("3505843767911556378687030309984248845540243509899259641013678093033130930403"), bigFromBase10("2821565182194536844548159561693502659359617185244120367078079554186484126554")} 57 58 // xiToPSquaredMinus1Over3 is ξ^((p²-1)/3) where ξ = i+9. 59 var xiToPSquaredMinus1Over3 = bigFromBase10("21888242871839275220042445260109153167277707414472061641714758635765020556616") 60 61 // xiTo2PSquaredMinus2Over3 is ξ^((2p²-2)/3) where ξ = i+9 (a cubic root of unity, mod p). 62 var xiTo2PSquaredMinus2Over3 = bigFromBase10("2203960485148121921418603742825762020974279258880205651966") 63 64 // xiToPSquaredMinus1Over6 is ξ^((1p²-1)/6) where ξ = i+9 (a cubic root of -1, mod p). 65 var xiToPSquaredMinus1Over6 = bigFromBase10("21888242871839275220042445260109153167277707414472061641714758635765020556617") 66 67 // xiTo2PMinus2Over3 is ξ^((2p-2)/3) where ξ = i+9. 68 var xiTo2PMinus2Over3 = &gfP2{bigFromBase10("19937756971775647987995932169929341994314640652964949448313374472400716661030"), bigFromBase10("2581911344467009335267311115468803099551665605076196740867805258568234346338")}