diff --git a/.github/workflows/gofmt.yml b/.github/workflows/gofmt.yml new file mode 100644 index 00000000..a60ba936 --- /dev/null +++ b/.github/workflows/gofmt.yml @@ -0,0 +1,11 @@ +name: Go-fmt +on: push +jobs: + gofmt: + name: Go fmt project + runs-on: ubuntu-latest + steps: + - name: check out + uses: actions/checkout@v3 + - name: go fmt project + uses: Jerome1337/gofmt-action@v1.0.4 \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 380e2e85..8732edb7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,11 +2,11 @@ name: Go Test on: push: branches: - - master - - release/* + - master + - release/* pull_request: branches: - - master + - master jobs: build: @@ -14,18 +14,20 @@ jobs: runs-on: macOS-latest steps: - - name: Set up Go 1.13 - uses: actions/setup-go@v1 - with: - go-version: 1.13 - id: go + - name: Set up Go 1.20 + uses: actions/setup-go@v3 + with: + go-version: 1.20.3 + id: go - - name: Check out code into the Go module directory - uses: actions/checkout@v1 + - name: Check out code into the Go module directory + uses: actions/checkout@v3 - - name: Get dependencies - run: go get -v -t -d ./... + - name: Clean dependencies + run: go clean --modcache - - name: Run Tests - run: make test_unit_race + - name: Get dependencies + run: go mod tidy + - name: Run Tests + run: make test_unit_race diff --git a/Makefile b/Makefile index 92758806..4ffff95f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -MODULE = github.com/binance-chain/tss-lib +MODULE = github.com/bnb-chain/tss-lib/v2 PACKAGES = $(shell go list ./... | grep -v '/vendor/') all: protob test @@ -8,7 +8,7 @@ all: protob test protob: @echo "--> Building Protocol Buffers" - @for protocol in message signature ecdsa-keygen ecdsa-signing ecdsa-resharing; do \ + @for protocol in message signature ecdsa-keygen ecdsa-signing ecdsa-resharing eddsa-keygen eddsa-signing eddsa-resharing; do \ echo "Generating $$protocol.pb.go" ; \ protoc --go_out=. ./protob/$$protocol.proto ; \ done @@ -22,12 +22,14 @@ build: protob test_unit: @echo "--> Running Unit Tests" @echo "!!! WARNING: This will take a long time :)" - go test -timeout 20m $(PACKAGES) + go clean -testcache + go test -timeout 60m $(PACKAGES) test_unit_race: @echo "--> Running Unit Tests (with Race Detection)" @echo "!!! WARNING: This will take a long time :)" - go test -timeout 30m -race $(PACKAGES) + go clean -testcache + go test -timeout 60m -race $(PACKAGES) test: make test_unit diff --git a/README.md b/README.md index a3ebf45e..c4411d96 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ [1]: https://img.shields.io/badge/license-MIT-blue.svg [2]: LICENSE -[3]: https://godoc.org/github.com/binance-chain/tss-lib?status.svg -[4]: https://godoc.org/github.com/binance-chain/tss-lib -[5]: https://goreportcard.com/badge/github.com/binance-chain/tss-lib -[6]: https://goreportcard.com/report/github.com/binance-chain/tss-lib +[3]: https://godoc.org/github.com/bnb-chain/tss-lib?status.svg +[4]: https://godoc.org/github.com/bnb-chain/tss-lib +[5]: https://goreportcard.com/badge/github.com/bnb-chain/tss-lib +[6]: https://goreportcard.com/report/github.com/bnb-chain/tss-lib Permissively MIT Licensed. @@ -43,12 +43,6 @@ The `LocalParty` that you use should be from the `keygen`, `signing` or `reshari ### Setup ```go -// Set up elliptic curve -// use ECDSA, which is used by default -tss.SetCurve(s256k1.S256()) -// or use EdDSA -// tss.SetCurve(edwards.Edwards()) - // When using the keygen party it is recommended that you pre-compute the "safe primes" and Paillier secret beforehand because this can take some time. // This code will generate those parameters using a concurrency limit equal to the number of available CPU cores. preParams, _ := keygen.GeneratePreParams(1 * time.Minute) @@ -62,7 +56,14 @@ parties := tss.SortPartyIDs(getParticipantPartyIDs()) // The `uniqueKey` is a unique identifying key for this peer (such as its p2p public key) as a big.Int. thisParty := tss.NewPartyID(id, moniker, uniqueKey) ctx := tss.NewPeerContext(parties) -params := tss.NewParameters(ctx, thisParty, len(parties), threshold) + +// Select an elliptic curve +// use ECDSA +curve := tss.S256() +// or use EdDSA +// curve := tss.Edwards() + +params := tss.NewParameters(curve, ctx, thisParty, len(parties), threshold) // You should keep a local mapping of `id` strings to `*PartyID` instances so that an incoming message can have its origin party's `*PartyID` recovered for passing to `UpdateFromBytes` (see below) partyIDMap := make(map[string]*PartyID) @@ -135,6 +136,10 @@ In a typical use case, it is expected that a transport implementation will consu This way there is no need to deal with Marshal/Unmarshalling Protocol Buffers to implement a transport. +## Changes of Preparams of ECDSA in v2.0 + +Two fields PaillierSK.P and PaillierSK.Q is added in version 2.0. They are used to generate Paillier key proofs. Key valuts generated from versions before 2.0 need to regenerate(resharing) the key valuts to update the praparams with the necessary fileds filled. + ## How to use this securely ⚠️ This section is important. Be sure to read it! @@ -150,7 +155,7 @@ Additionally, there should be a mechanism in your transport to allow for "reliab Timeouts and errors should be handled by your application. The method `WaitingFor` may be called on a `Party` to get the set of other parties that it is still waiting for messages from. You may also get the set of culprit parties that caused an error from a `*tss.Error`. ## Security Audit -A full review of this library was carried out by Kudelski Security and their final report was made available in October, 2019. A copy of this report [`audit-binance-tss-lib-final-20191018.pdf`](https://github.com/binance-chain/tss-lib/releases/download/v1.0.0/audit-binance-tss-lib-final-20191018.pdf) may be found in the v1.0.0 release notes of this repository. +A full review of this library was carried out by Kudelski Security and their final report was made available in October, 2019. A copy of this report [`audit-binance-tss-lib-final-20191018.pdf`](https://github.com/bnb-chain/tss-lib/releases/download/v1.0.0/audit-binance-tss-lib-final-20191018.pdf) may be found in the v1.0.0 release notes of this repository. ## References \[1\] https://eprint.iacr.org/2019/114.pdf diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..16a6f256 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,11 @@ +# Security Policy + +## Reporting a Bug or Vulnerability + +For non-security problems please open an issue in this GitHub repository. + +If you find any security issues please send a report confidentially to https://bugcrowd.com/binance. + +Please include notes about the impact of the issue and a walkthrough on how it can be exploited. + +For severe security issues that completely breach the safety of the scheme or leak the secret shares we would be happy to reward you with a bounty based on the security impact and severity. Please include a link to this notice in your email. diff --git a/common/hash.go b/common/hash.go index 5edd33d4..2ffcec1e 100644 --- a/common/hash.go +++ b/common/hash.go @@ -35,11 +35,16 @@ func SHA512_256(in ...[]byte) []byte { for _, bz := range in { bzSize += len(bz) } - data = make([]byte, 0, len(inLenBz)+bzSize+inLen) + dataCap := len(inLenBz) + bzSize + inLen + (inLen * 8) + data = make([]byte, 0, dataCap) data = append(data, inLenBz...) for _, bz := range in { data = append(data, bz...) data = append(data, hashInputDelimiter) // safety delimiter + dataLen := make([]byte, 8) // 64-bits + binary.LittleEndian.PutUint64(dataLen, uint64(len(bz))) + data = append(data, dataLen...) // Security audit: length of each byte buffer should be added after + // each security delimiters in order to enforce proper domain separation } // n < len(data) or an error will never happen. // see: https://golang.org/pkg/hash/#Hash and https://github.com/golang/go/wiki/Hashing#the-hashhash-interface @@ -68,11 +73,16 @@ func SHA512_256i(in ...*big.Int) *big.Int { ptrs[i] = n.Bytes() bzSize += len(ptrs[i]) } - data = make([]byte, 0, len(inLenBz)+bzSize+inLen) + dataCap := len(inLenBz) + bzSize + inLen + (inLen * 8) + data = make([]byte, 0, dataCap) data = append(data, inLenBz...) for i := range in { data = append(data, ptrs[i]...) data = append(data, hashInputDelimiter) // safety delimiter + dataLen := make([]byte, 8) // 64-bits + binary.LittleEndian.PutUint64(dataLen, uint64(len(ptrs[i]))) + data = append(data, dataLen...) // Security audit: length of each byte buffer should be added after + // each security delimiters in order to enforce proper domain separation } // n < len(data) or an error will never happen. // see: https://golang.org/pkg/hash/#Hash and https://github.com/golang/go/wiki/Hashing#the-hashhash-interface @@ -83,6 +93,52 @@ func SHA512_256i(in ...*big.Int) *big.Int { return new(big.Int).SetBytes(state.Sum(nil)) } +// SHA512_256i_TAGGED tagged version of SHA512_256i +func SHA512_256i_TAGGED(tag []byte, in ...*big.Int) *big.Int { + tagBz := SHA512_256(tag) + var data []byte + state := crypto.SHA512_256.New() + state.Write(tagBz) + state.Write(tagBz) + inLen := len(in) + if inLen == 0 { + return nil + } + bzSize := 0 + // prevent hash collisions with this prefix containing the block count + inLenBz := make([]byte, 64/8) + // converting between int and uint64 doesn't change the sign bit, but it may be interpreted as a larger value. + // this prefix is never read/interpreted, so that doesn't matter. + binary.LittleEndian.PutUint64(inLenBz, uint64(inLen)) + ptrs := make([][]byte, inLen) + for i, n := range in { + if n == nil { + ptrs[i] = zero.Bytes() + } else { + ptrs[i] = n.Bytes() + } + bzSize += len(ptrs[i]) + } + dataCap := len(inLenBz) + bzSize + inLen + (inLen * 8) + data = make([]byte, 0, dataCap) + data = append(data, inLenBz...) + for i := range in { + data = append(data, ptrs[i]...) + data = append(data, hashInputDelimiter) // safety delimiter + dataLen := make([]byte, 8) // 64-bits + binary.LittleEndian.PutUint64(dataLen, uint64(len(ptrs[i]))) + data = append(data, dataLen...) // Security audit: length of each byte buffer should be added after + // each security delimiters in order to enforce proper domain separation + } + // n < len(data) or an error will never happen. + // see: https://golang.org/pkg/hash/#Hash and https://github.com/golang/go/wiki/Hashing#the-hashhash-interface + if _, err := state.Write(data); err != nil { + Logger.Error(err) + return nil + } + return new(big.Int).SetBytes(state.Sum(nil)) +} + func SHA512_256iOne(in *big.Int) *big.Int { var data []byte state := crypto.SHA512_256.New() diff --git a/common/hash_utils_test.go b/common/hash_utils_test.go index 1a07f0d7..c0fdce2c 100644 --- a/common/hash_utils_test.go +++ b/common/hash_utils_test.go @@ -11,7 +11,7 @@ import ( "reflect" "testing" - "github.com/binance-chain/tss-lib/common" + "github.com/bnb-chain/tss-lib/v2/common" ) func TestRejectionSample(t *testing.T) { diff --git a/common/int.go b/common/int.go index 5a951c09..54c798cd 100644 --- a/common/int.go +++ b/common/int.go @@ -58,3 +58,14 @@ func (mi *modInt) ModInverse(g *big.Int) *big.Int { func (mi *modInt) i() *big.Int { return (*big.Int)(mi) } + +func IsInInterval(b *big.Int, bound *big.Int) bool { + return b.Cmp(bound) == -1 && b.Cmp(zero) >= 0 +} + +func AppendBigIntToBytesSlice(commonBytes []byte, appended *big.Int) []byte { + resultBytes := make([]byte, len(commonBytes), len(commonBytes)+len(appended.Bytes())) + copy(resultBytes, commonBytes) + resultBytes = append(resultBytes, appended.Bytes()...) + return resultBytes +} diff --git a/common/random.go b/common/random.go index 24a8d7c7..333cf549 100644 --- a/common/random.go +++ b/common/random.go @@ -92,11 +92,38 @@ func IsNumberInMultiplicativeGroup(n, v *big.Int) bool { gcd.GCD(nil, nil, v, n).Cmp(one) == 0 } -// Return a random generator of RQn with high probability. -// THIS METHOD ONLY WORKS IF N IS THE PRODUCT OF TWO SAFE PRIMES! +// Return a random generator of RQn with high probability. +// THIS METHOD ONLY WORKS IF N IS THE PRODUCT OF TWO SAFE PRIMES! +// // https://github.com/didiercrunch/paillier/blob/d03e8850a8e4c53d04e8016a2ce8762af3278b71/utils.go#L39 func GetRandomGeneratorOfTheQuadraticResidue(n *big.Int) *big.Int { f := GetRandomPositiveRelativelyPrimeInt(n) fSq := new(big.Int).Mul(f, f) return fSq.Mod(fSq, n) } + +// GetRandomQuadraticNonResidue returns a quadratic non residue of odd n. +func GetRandomQuadraticNonResidue(n *big.Int) *big.Int { + for { + w := GetRandomPositiveInt(n) + if big.Jacobi(w, n) == -1 { + return w + } + } +} + +// GetRandomBytes returns random bytes of length. +func GetRandomBytes(length int) ([]byte, error) { + // Per [BIP32], the seed must be in range [MinSeedBytes, MaxSeedBytes]. + if length <= 0 { + return nil, errors.New("invalid length") + } + + buf := make([]byte, length) + _, err := rand.Read(buf) + if err != nil { + return nil, err + } + + return buf, nil +} diff --git a/common/random_test.go b/common/random_test.go index 8d7b779b..b7ca5f95 100644 --- a/common/random_test.go +++ b/common/random_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" + "github.com/bnb-chain/tss-lib/v2/common" ) const ( diff --git a/common/safe_prime.go b/common/safe_prime.go index 6e94ea68..fad2d1f1 100644 --- a/common/safe_prime.go +++ b/common/safe_prime.go @@ -15,7 +15,6 @@ import ( "math/big" "sync" "sync/atomic" - "time" ) const ( @@ -96,10 +95,15 @@ var smallPrimes = []uint8{ // operations. var smallPrimesProduct = new(big.Int).SetUint64(16294579238595022365) +// ErrGeneratorCancelled is an error returned from GetRandomSafePrimesConcurrent +// when the work of the generator has been cancelled as a result of the context +// being done (cancellation or timeout). +var ErrGeneratorCancelled = fmt.Errorf("generator work cancelled") + // GetRandomSafePrimesConcurrent tries to find safe primes concurrently. // The returned results are safe primes `p` and prime `q` such that `p=2q+1`. // Concurrency level can be controlled with the `concurrencyLevel` parameter. -// If a safe prime could not be found in the specified `timeout`, the error +// If a safe prime could not be found before the context is done, the error // is returned. Also, if at least one search process failed, error is returned // as well. // @@ -121,7 +125,7 @@ var smallPrimesProduct = new(big.Int).SetUint64(16294579238595022365) // This function generates safe primes of at least 6 `bitLen`. For every // generated safe prime, the two most significant bits are always set to `1` // - we don't want the generated number to be too small. -func GetRandomSafePrimesConcurrent(bitLen, numPrimes int, timeout time.Duration, concurrency int) ([]*GermainSafePrime, error) { +func GetRandomSafePrimesConcurrent(ctx context.Context, bitLen, numPrimes int, concurrency int) ([]*GermainSafePrime, error) { if bitLen < 6 { return nil, errors.New("safe prime size must be at least 6 bits") } @@ -139,35 +143,28 @@ func GetRandomSafePrimesConcurrent(bitLen, numPrimes int, timeout time.Duration, defer close(errCh) defer waitGroup.Wait() - ctx, cancel := context.WithCancel(context.Background()) + generatorCtx, cancelGeneratorCtx := context.WithCancel(ctx) + defer cancelGeneratorCtx() for i := 0; i < concurrency; i++ { waitGroup.Add(1) runGenPrimeRoutine( - ctx, primeCh, errCh, waitGroup, rand.Reader, bitLen, + generatorCtx, primeCh, errCh, waitGroup, rand.Reader, bitLen, ) } - // Cancel after the specified timeout. - go func() { - time.Sleep(timeout) - cancel() - }() - needed := int32(numPrimes) for { select { case result := <-primeCh: primes = append(primes, result) if atomic.AddInt32(&needed, -1) <= 0 { - cancel() return primes[:numPrimes], nil } case err := <-errCh: - cancel() return nil, err case <-ctx.Done(): - return nil, fmt.Errorf("generator timed out after %v", timeout) + return nil, ErrGeneratorCancelled } } } diff --git a/common/safe_prime_test.go b/common/safe_prime_test.go index f2042e86..083c736b 100644 --- a/common/safe_prime_test.go +++ b/common/safe_prime_test.go @@ -7,6 +7,7 @@ package common import ( + "context" "math/big" "runtime" "testing" @@ -42,7 +43,9 @@ func Test_Validate_Bad(t *testing.T) { } func TestGetRandomGermainPrimeConcurrent(t *testing.T) { - sgps, err := GetRandomSafePrimesConcurrent(1024, 2, 20*time.Minute, runtime.NumCPU()) + ctx, cancel := context.WithTimeout(context.Background(), 20*time.Minute) + defer cancel() + sgps, err := GetRandomSafePrimesConcurrent(ctx, 1024, 2, runtime.NumCPU()) assert.NoError(t, err) assert.Equal(t, 2, len(sgps)) for _, sgp := range sgps { diff --git a/common/signature.pb.go b/common/signature.pb.go index 43049d2d..f1e802ac 100644 --- a/common/signature.pb.go +++ b/common/signature.pb.go @@ -1,28 +1,38 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 // source: protob/signature.proto package common import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // // Container for output signatures, mostly used for marshalling this data structure to a mobile app type SignatureData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // Ethereum-style recovery byte; only the first byte is relevant SignatureRecovery []byte `protobuf:"bytes,2,opt,name=signature_recovery,json=signatureRecovery,proto3" json:"signature_recovery,omitempty"` @@ -30,87 +40,153 @@ type SignatureData struct { R []byte `protobuf:"bytes,3,opt,name=r,proto3" json:"r,omitempty"` S []byte `protobuf:"bytes,4,opt,name=s,proto3" json:"s,omitempty"` // M represents the original message digest that was signed M - M []byte `protobuf:"bytes,5,opt,name=m,proto3" json:"m,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + M []byte `protobuf:"bytes,5,opt,name=m,proto3" json:"m,omitempty"` } -func (m *SignatureData) Reset() { *m = SignatureData{} } -func (m *SignatureData) String() string { return proto.CompactTextString(m) } -func (*SignatureData) ProtoMessage() {} -func (*SignatureData) Descriptor() ([]byte, []int) { - return fileDescriptor_a73ad5e44f61b3fb, []int{0} +func (x *SignatureData) Reset() { + *x = SignatureData{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_signature_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignatureData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignatureData.Unmarshal(m, b) -} -func (m *SignatureData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignatureData.Marshal(b, m, deterministic) -} -func (m *SignatureData) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignatureData.Merge(m, src) +func (x *SignatureData) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignatureData) XXX_Size() int { - return xxx_messageInfo_SignatureData.Size(m) -} -func (m *SignatureData) XXX_DiscardUnknown() { - xxx_messageInfo_SignatureData.DiscardUnknown(m) + +func (*SignatureData) ProtoMessage() {} + +func (x *SignatureData) ProtoReflect() protoreflect.Message { + mi := &file_protob_signature_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignatureData proto.InternalMessageInfo +// Deprecated: Use SignatureData.ProtoReflect.Descriptor instead. +func (*SignatureData) Descriptor() ([]byte, []int) { + return file_protob_signature_proto_rawDescGZIP(), []int{0} +} -func (m *SignatureData) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *SignatureData) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *SignatureData) GetSignatureRecovery() []byte { - if m != nil { - return m.SignatureRecovery +func (x *SignatureData) GetSignatureRecovery() []byte { + if x != nil { + return x.SignatureRecovery } return nil } -func (m *SignatureData) GetR() []byte { - if m != nil { - return m.R +func (x *SignatureData) GetR() []byte { + if x != nil { + return x.R } return nil } -func (m *SignatureData) GetS() []byte { - if m != nil { - return m.S +func (x *SignatureData) GetS() []byte { + if x != nil { + return x.S } return nil } -func (m *SignatureData) GetM() []byte { - if m != nil { - return m.M +func (x *SignatureData) GetM() []byte { + if x != nil { + return x.M } return nil } -func init() { - proto.RegisterType((*SignatureData)(nil), "SignatureData") +var File_protob_signature_proto protoreflect.FileDescriptor + +var file_protob_signature_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x62, 0x69, 0x6e, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x22, 0x86, 0x01, 0x0a, 0x0d, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x0c, 0x0a, 0x01, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x01, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, + 0x6d, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protob_signature_proto_rawDescOnce sync.Once + file_protob_signature_proto_rawDescData = file_protob_signature_proto_rawDesc +) + +func file_protob_signature_proto_rawDescGZIP() []byte { + file_protob_signature_proto_rawDescOnce.Do(func() { + file_protob_signature_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_signature_proto_rawDescData) + }) + return file_protob_signature_proto_rawDescData +} + +var file_protob_signature_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_protob_signature_proto_goTypes = []interface{}{ + (*SignatureData)(nil), // 0: binance.tsslib.SignatureData +} +var file_protob_signature_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } -func init() { proto.RegisterFile("protob/signature.proto", fileDescriptor_a73ad5e44f61b3fb) } - -var fileDescriptor_a73ad5e44f61b3fb = []byte{ - // 139 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2b, 0x28, 0xca, 0x2f, - 0xc9, 0x4f, 0xd2, 0x2f, 0xce, 0x4c, 0xcf, 0x4b, 0x2c, 0x29, 0x2d, 0x4a, 0xd5, 0x03, 0x0b, 0x28, - 0xb5, 0x31, 0x72, 0xf1, 0x06, 0xc3, 0xc4, 0x5c, 0x12, 0x4b, 0x12, 0x85, 0x64, 0xb8, 0x38, 0xe1, - 0x8a, 0x24, 0x18, 0x15, 0x18, 0x35, 0x78, 0x82, 0x10, 0x02, 0x42, 0xba, 0x5c, 0x42, 0x70, 0x4e, - 0x7c, 0x51, 0x6a, 0x72, 0x7e, 0x59, 0x6a, 0x51, 0xa5, 0x04, 0x13, 0x58, 0x99, 0x20, 0x5c, 0x26, - 0x08, 0x2a, 0x21, 0xc4, 0xc3, 0xc5, 0x58, 0x24, 0xc1, 0x0c, 0x96, 0x65, 0x2c, 0x02, 0xf1, 0x8a, - 0x25, 0x58, 0x20, 0xbc, 0x62, 0x10, 0x2f, 0x57, 0x82, 0x15, 0xc2, 0xcb, 0x75, 0xe2, 0x8a, 0xe2, - 0xd0, 0xd3, 0x4f, 0xce, 0xcf, 0xcd, 0xcd, 0xcf, 0x4b, 0x62, 0x03, 0xbb, 0xcd, 0x18, 0x10, 0x00, - 0x00, 0xff, 0xff, 0x99, 0x1e, 0xab, 0x5b, 0xb5, 0x00, 0x00, 0x00, +func init() { file_protob_signature_proto_init() } +func file_protob_signature_proto_init() { + if File_protob_signature_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_signature_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignatureData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_signature_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_signature_proto_goTypes, + DependencyIndexes: file_protob_signature_proto_depIdxs, + MessageInfos: file_protob_signature_proto_msgTypes, + }.Build() + File_protob_signature_proto = out.File + file_protob_signature_proto_rawDesc = nil + file_protob_signature_proto_goTypes = nil + file_protob_signature_proto_depIdxs = nil } diff --git a/common/slice.go b/common/slice.go index 28aafd31..d40a9480 100644 --- a/common/slice.go +++ b/common/slice.go @@ -50,3 +50,15 @@ func NonEmptyMultiBytes(bzs [][]byte, expectLen ...int) bool { } return true } + +// PadToLengthBytesInPlace pad {0, ...} to the front of src if len(src) < length +// output length is equal to the parameter length +func PadToLengthBytesInPlace(src []byte, length int) []byte { + oriLen := len(src) + if oriLen < length { + for i := 0; i < length-oriLen; i++ { + src = append([]byte{0}, src...) + } + } + return src +} diff --git a/crypto/ckd/child_key_derivation.go b/crypto/ckd/child_key_derivation.go new file mode 100644 index 00000000..422cffed --- /dev/null +++ b/crypto/ckd/child_key_derivation.go @@ -0,0 +1,259 @@ +// Copyright © Swingby + +package ckd + +import ( + "bytes" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/hmac" + "crypto/sha256" + "crypto/sha512" + "encoding/binary" + "errors" + "hash" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/btcsuite/btcd/btcec/v2" + "github.com/btcsuite/btcutil/base58" + "golang.org/x/crypto/ripemd160" +) + +type ExtendedKey struct { + ecdsa.PublicKey + Depth uint8 + ChildIndex uint32 + ChainCode []byte // 32 bytes + ParentFP []byte // parent fingerprint + Version []byte +} + +// For more information about child key derivation see https://github.com/binance-chain/tss-lib/issues/104 +// https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki . +// The functions below do not implement the full BIP-32 specification. As mentioned in the Jira ticket above, +// we only use non-hardened derived keys. + +const ( + + // HardenedKeyStart hardened key starts. + HardenedKeyStart = 0x80000000 // 2^31 + + // max Depth + maxDepth = 1<<8 - 1 + + PubKeyBytesLenCompressed = 33 + + pubKeyCompressed byte = 0x2 + + serializedKeyLen = 78 + + // MinSeedBytes is the minimum number of bytes allowed for a seed to + // a master node. + MinSeedBytes = 16 // 128 bits + + // MaxSeedBytes is the maximum number of bytes allowed for a seed to + // a master node. + MaxSeedBytes = 64 // 512 bits +) + +// Extended public key serialization, defined in BIP32 +func (k *ExtendedKey) String() string { + // version(4) || depth(1) || parentFP (4) || childinde(4) || chaincode (32) || key(33) || checksum(4) + var childNumBytes [4]byte + binary.BigEndian.PutUint32(childNumBytes[:], k.ChildIndex) + + serializedBytes := make([]byte, 0, serializedKeyLen+4) + serializedBytes = append(serializedBytes, k.Version...) + serializedBytes = append(serializedBytes, k.Depth) + serializedBytes = append(serializedBytes, k.ParentFP...) + serializedBytes = append(serializedBytes, childNumBytes[:]...) + serializedBytes = append(serializedBytes, k.ChainCode...) + pubKeyBytes := serializeCompressed(k.PublicKey.X, k.PublicKey.Y) + serializedBytes = append(serializedBytes, pubKeyBytes...) + + checkSum := doubleHashB(serializedBytes)[:4] + serializedBytes = append(serializedBytes, checkSum...) + return base58.Encode(serializedBytes) +} + +// NewExtendedKeyFromString returns a new extended key from a base58-encoded extended key +func NewExtendedKeyFromString(key string, curve elliptic.Curve) (*ExtendedKey, error) { + // version(4) || depth(1) || parentFP (4) || childinde(4) || chaincode (32) || key(33) || checksum(4) + + decoded := base58.Decode(key) + if len(decoded) != serializedKeyLen+4 { + return nil, errors.New("invalid extended key") + } + + // Split the payload and checksum up and ensure the checksum matches. + payload := decoded[:len(decoded)-4] + checkSum := decoded[len(decoded)-4:] + expectedCheckSum := doubleHashB(payload)[:4] + if !bytes.Equal(checkSum, expectedCheckSum) { + return nil, errors.New("invalid extended key") + } + + // Deserialize each of the payload fields. + version := payload[:4] + depth := payload[4:5][0] + parentFP := payload[5:9] + childNum := binary.BigEndian.Uint32(payload[9:13]) + chainCode := payload[13:45] + keyData := payload[45:78] + + var pubKey ecdsa.PublicKey + + if c, ok := curve.(*btcec.KoblitzCurve); ok { + pk, err := btcec.ParsePubKey(keyData) + if err != nil { + return nil, err + } + pubKey = ecdsa.PublicKey{ + Curve: c, + X: pk.X(), + Y: pk.Y(), + } + } else { + px, py := elliptic.Unmarshal(curve, keyData) + pubKey = ecdsa.PublicKey{ + Curve: curve, + X: px, + Y: py, + } + } + + return &ExtendedKey{ + PublicKey: pubKey, + Depth: depth, + ChildIndex: childNum, + ChainCode: chainCode, + ParentFP: parentFP, + Version: version, + }, nil +} + +func doubleHashB(b []byte) []byte { + first := sha256.Sum256(b) + second := sha256.Sum256(first[:]) + return second[:] +} + +func calcHash(buf []byte, hasher hash.Hash) []byte { + hasher.Write(buf) + return hasher.Sum(nil) +} + +func hash160(buf []byte) []byte { + return calcHash(calcHash(buf, sha256.New()), ripemd160.New()) +} + +func isOdd(a *big.Int) bool { + return a.Bit(0) == 1 +} + +// PaddedAppend append src to dst, if less than size padding 0 at start +func paddedAppend(dst []byte, srcPaddedSize int, src []byte) []byte { + return append(dst, paddedBytes(srcPaddedSize, src)...) +} + +// PaddedBytes padding byte array to size length +func paddedBytes(size int, src []byte) []byte { + offset := size - len(src) + tmp := src + if offset > 0 { + tmp = make([]byte, size) + copy(tmp[offset:], src) + } + return tmp +} + +// SerializeCompressed serializes a public key 33-byte compressed format +func serializeCompressed(publicKeyX *big.Int, publicKeyY *big.Int) []byte { + b := make([]byte, 0, PubKeyBytesLenCompressed) + format := pubKeyCompressed + if isOdd(publicKeyY) { + format |= 0x1 + } + b = append(b, format) + return paddedAppend(b, 32, publicKeyX.Bytes()) +} + +func DeriveChildKeyFromHierarchy(indicesHierarchy []uint32, pk *ExtendedKey, mod *big.Int, curve elliptic.Curve) (*big.Int, *ExtendedKey, error) { + var k = pk + var err error + var childKey *ExtendedKey + mod_ := common.ModInt(mod) + ilNum := big.NewInt(0) + for index := range indicesHierarchy { + ilNumOld := ilNum + ilNum, childKey, err = DeriveChildKey(indicesHierarchy[index], k, curve) + if err != nil { + return nil, nil, err + } + k = childKey + ilNum = mod_.Add(ilNum, ilNumOld) + } + return ilNum, k, nil +} + +// DeriveChildKey Derive a child key from the given parent key. The function returns "IL" ("I left"), per BIP-32 spec. It also +// returns the derived child key. +func DeriveChildKey(index uint32, pk *ExtendedKey, curve elliptic.Curve) (*big.Int, *ExtendedKey, error) { + if index >= HardenedKeyStart { + return nil, nil, errors.New("the index must be non-hardened") + } + if pk.Depth == maxDepth { + return nil, nil, errors.New("cannot derive key beyond max depth") + } + + cryptoPk, err := crypto.NewECPoint(curve, pk.X, pk.Y) + if err != nil { + common.Logger.Error("error getting pubkey from extendedkey") + return nil, nil, err + } + + pkPublicKeyBytes := serializeCompressed(pk.X, pk.Y) + + data := make([]byte, 37) + copy(data, pkPublicKeyBytes) + binary.BigEndian.PutUint32(data[33:], index) + + // I = HMAC-SHA512(Key = chainCode, Data=data) + hmac512 := hmac.New(sha512.New, pk.ChainCode) + hmac512.Write(data) + ilr := hmac512.Sum(nil) + il := ilr[:32] + childChainCode := ilr[32:] + ilNum := new(big.Int).SetBytes(il) + + if ilNum.Cmp(curve.Params().N) >= 0 || ilNum.Sign() == 0 { + // falling outside of the valid range for curve private keys + err = errors.New("invalid derived key") + common.Logger.Error("error deriving child key") + return nil, nil, err + } + + deltaG := crypto.ScalarBaseMult(curve, ilNum) + if deltaG.X().Sign() == 0 || deltaG.Y().Sign() == 0 { + err = errors.New("invalid child") + common.Logger.Error("error invalid child") + return nil, nil, err + } + childCryptoPk, err := cryptoPk.Add(deltaG) + if err != nil { + common.Logger.Error("error adding delta G to parent key") + return nil, nil, err + } + + childPk := &ExtendedKey{ + PublicKey: *childCryptoPk.ToECDSAPubKey(), + Depth: pk.Depth + 1, + ChildIndex: index, + ChainCode: childChainCode, + ParentFP: hash160(pkPublicKeyBytes)[:4], + Version: pk.Version, + } + return ilNum, childPk, nil +} diff --git a/crypto/ckd/child_key_derivation_test.go b/crypto/ckd/child_key_derivation_test.go new file mode 100644 index 00000000..6511e4ef --- /dev/null +++ b/crypto/ckd/child_key_derivation_test.go @@ -0,0 +1,132 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package ckd_test + +import ( + "testing" + + . "github.com/bnb-chain/tss-lib/v2/crypto/ckd" + "github.com/btcsuite/btcd/btcec/v2" +) + +func TestPublicDerivation(t *testing.T) { + // port from https://github.com/btcsuite/btcutil/blob/master/hdkeychain/extendedkey_test.go + // The public extended keys for test vectors in [BIP32]. + testVec1MasterPubKey := "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8" + testVec2MasterPubKey := "xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB" + + tests := []struct { + name string + master string + path []uint32 + wantPub string + }{ + // Test vector 1 + { + name: "test vector 1 chain m", + master: testVec1MasterPubKey, + path: []uint32{}, + wantPub: "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8", + }, + { + name: "test vector 1 chain m/0", + master: testVec1MasterPubKey, + path: []uint32{0}, + wantPub: "xpub68Gmy5EVb2BdFbj2LpWrk1M7obNuaPTpT5oh9QCCo5sRfqSHVYWex97WpDZzszdzHzxXDAzPLVSwybe4uPYkSk4G3gnrPqqkV9RyNzAcNJ1", + }, + { + name: "test vector 1 chain m/0/1", + master: testVec1MasterPubKey, + path: []uint32{0, 1}, + wantPub: "xpub6AvUGrnEpfvJBbfx7sQ89Q8hEMPM65UteqEX4yUbUiES2jHfjexmfJoxCGSwFMZiPBaKQT1RiKWrKfuDV4vpgVs4Xn8PpPTR2i79rwHd4Zr", + }, + { + name: "test vector 1 chain m/0/1/2", + master: testVec1MasterPubKey, + path: []uint32{0, 1, 2}, + wantPub: "xpub6BqyndF6rhZqmgktFCBcapkwubGxPqoAZtQaYewJHXVKZcLdnqBVC8N6f6FSHWUghjuTLeubWyQWfJdk2G3tGgvgj3qngo4vLTnnSjAZckv", + }, + { + name: "test vector 1 chain m/0/1/2/2", + master: testVec1MasterPubKey, + path: []uint32{0, 1, 2, 2}, + wantPub: "xpub6FHUhLbYYkgFQiFrDiXRfQFXBB2msCxKTsNyAExi6keFxQ8sHfwpogY3p3s1ePSpUqLNYks5T6a3JqpCGszt4kxbyq7tUoFP5c8KWyiDtPp", + }, + { + name: "test vector 1 chain m/0/1/2/2/1000000000", + master: testVec1MasterPubKey, + path: []uint32{0, 1, 2, 2, 1000000000}, + wantPub: "xpub6GX3zWVgSgPc5tgjE6ogT9nfwSADD3tdsxpzd7jJoJMqSY12Be6VQEFwDCp6wAQoZsH2iq5nNocHEaVDxBcobPrkZCjYW3QUmoDYzMFBDu9", + }, + + // Test vector 2 + { + name: "test vector 2 chain m", + master: testVec2MasterPubKey, + path: []uint32{}, + wantPub: "xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB", + }, + { + name: "test vector 2 chain m/0", + master: testVec2MasterPubKey, + path: []uint32{0}, + wantPub: "xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH", + }, + { + name: "test vector 2 chain m/0/2147483647", + master: testVec2MasterPubKey, + path: []uint32{0, 2147483647}, + wantPub: "xpub6ASAVgeWMg4pmutghzHG3BohahjwNwPmy2DgM6W9wGegtPrvNgjBwuZRD7hSDFhYfunq8vDgwG4ah1gVzZysgp3UsKz7VNjCnSUJJ5T4fdD", + }, + { + name: "test vector 2 chain m/0/2147483647/1", + master: testVec2MasterPubKey, + path: []uint32{0, 2147483647, 1}, + wantPub: "xpub6CrnV7NzJy4VdgP5niTpqWJiFXMAca6qBm5Hfsry77SQmN1HGYHnjsZSujoHzdxf7ZNK5UVrmDXFPiEW2ecwHGWMFGUxPC9ARipss9rXd4b", + }, + { + name: "test vector 2 chain m/0/2147483647/1/2147483646", + master: testVec2MasterPubKey, + path: []uint32{0, 2147483647, 1, 2147483646}, + wantPub: "xpub6FL2423qFaWzHCvBndkN9cbkn5cysiUeFq4eb9t9kE88jcmY63tNuLNRzpHPdAM4dUpLhZ7aUm2cJ5zF7KYonf4jAPfRqTMTRBNkQL3Tfta", + }, + { + name: "test vector 2 chain m/0/2147483647/1/2147483646/2", + master: testVec2MasterPubKey, + path: []uint32{0, 2147483647, 1, 2147483646, 2}, + wantPub: "xpub6H7WkJf547AiSwAbX6xsm8Bmq9M9P1Gjequ5SipsjipWmtXSyp4C3uwzewedGEgAMsDy4jEvNTWtxLyqqHY9C12gaBmgUdk2CGmwachwnWK", + }, + } + +tests: + for i, test := range tests { + extKey, err := NewExtendedKeyFromString(test.master, btcec.S256()) + if err != nil { + t.Errorf("NewKeyFromString #%d (%s): unexpected error "+ + "creating extended key: %v", i, test.name, + err) + continue + } + + for _, childNum := range test.path { + var err error + _, extKey, err = DeriveChildKey(childNum, extKey, btcec.S256()) + if err != nil { + t.Errorf("err: %v", err) + continue tests + } + } + + pubStr := extKey.String() + if pubStr != test.wantPub { + t.Errorf("Derive #%d (%s): mismatched serialized "+ + "public extended key -- got: %s, want: %s", i, + test.name, pubStr, test.wantPub) + continue + } + } +} diff --git a/crypto/commitments/commitment.go b/crypto/commitments/commitment.go index c5a09487..d273fe74 100644 --- a/crypto/commitments/commitment.go +++ b/crypto/commitments/commitment.go @@ -12,7 +12,7 @@ package commitments import ( "math/big" - "github.com/binance-chain/tss-lib/common" + "github.com/bnb-chain/tss-lib/v2/common" ) const ( @@ -58,11 +58,7 @@ func (cmt *HashCommitDecommit) Verify() bool { return false } hash := common.SHA512_256i(D...) - if hash.Cmp(C) == 0 { - return true - } else { - return false - } + return hash.Cmp(C) == 0 } func (cmt *HashCommitDecommit) DeCommit() (bool, HashDeCommitment) { diff --git a/crypto/commitments/commitment_test.go b/crypto/commitments/commitment_test.go index 20ffedc0..3dedf214 100644 --- a/crypto/commitments/commitment_test.go +++ b/crypto/commitments/commitment_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" - . "github.com/binance-chain/tss-lib/crypto/commitments" + . "github.com/bnb-chain/tss-lib/v2/crypto/commitments" ) func TestCreateVerify(t *testing.T) { diff --git a/crypto/dlnproof/proof.go b/crypto/dlnproof/proof.go index eefadf64..43dd1556 100644 --- a/crypto/dlnproof/proof.go +++ b/crypto/dlnproof/proof.go @@ -15,8 +15,8 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - cmts "github.com/binance-chain/tss-lib/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/common" + cmts "github.com/bnb-chain/tss-lib/v2/crypto/commitments" ) const Iterations = 128 @@ -28,6 +28,10 @@ type ( } ) +var ( + one = big.NewInt(1) +) + func NewDLNProof(h1, h2, x, p, q, N *big.Int) *Proof { pMulQ := new(big.Int).Mul(p, q) modN, modPQ := common.ModInt(N), common.ModInt(pMulQ) @@ -53,7 +57,33 @@ func (p *Proof) Verify(h1, h2, N *big.Int) bool { if p == nil { return false } + if N.Sign() != 1 { + return false + } modN := common.ModInt(N) + h1_ := new(big.Int).Mod(h1, N) + if h1_.Cmp(one) != 1 || h1_.Cmp(N) != -1 { + return false + } + h2_ := new(big.Int).Mod(h2, N) + if h2_.Cmp(one) != 1 || h2_.Cmp(N) != -1 { + return false + } + if h1_.Cmp(h2_) == 0 { + return false + } + for i := range p.T { + a := new(big.Int).Mod(p.T[i], N) + if a.Cmp(one) != 1 || a.Cmp(N) != -1 { + return false + } + } + for i := range p.Alpha { + a := new(big.Int).Mod(p.Alpha[i], N) + if a.Cmp(one) != 1 || a.Cmp(N) != -1 { + return false + } + } msg := append([]*big.Int{h1, h2, N}, p.Alpha[:]...) c := common.SHA512_256i(msg...) cIBI := new(big.Int) diff --git a/crypto/ecpoint.go b/crypto/ecpoint.go index 9ea5afe0..d0248398 100644 --- a/crypto/ecpoint.go +++ b/crypto/ecpoint.go @@ -8,6 +8,7 @@ package crypto import ( "bytes" + "crypto/ecdsa" "crypto/elliptic" "encoding/binary" "encoding/json" @@ -15,7 +16,9 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/tss" + "github.com/decred/dcrd/dcrec/edwards/v2" + + "github.com/bnb-chain/tss-lib/v2/tss" ) // ECPoint convenience helper @@ -24,6 +27,11 @@ type ECPoint struct { coords [2]*big.Int } +var ( + eight = big.NewInt(8) + eightInv = new(big.Int).ModInverse(eight, edwards.Edwards().Params().N) +) + // Creates a new ECPoint and checks that the given coordinates are on the elliptic curve. func NewECPoint(curve elliptic.Curve, X, Y *big.Int) (*ECPoint, error) { if !isOnCurve(curve, X, Y) { @@ -53,14 +61,29 @@ func (p *ECPoint) Add(p1 *ECPoint) (*ECPoint, error) { func (p *ECPoint) ScalarMult(k *big.Int) *ECPoint { x, y := p.curve.ScalarMult(p.X(), p.Y(), k.Bytes()) - newP, _ := NewECPoint(p.curve, x, y) // it must be on the curve, no need to check. + newP, err := NewECPoint(p.curve, x, y) // it must be on the curve, no need to check. + if err != nil { + panic(fmt.Errorf("scalar mult to an ecpoint %s", err.Error())) + } return newP } +func (p *ECPoint) ToECDSAPubKey() *ecdsa.PublicKey { + return &ecdsa.PublicKey{ + Curve: p.curve, + X: p.X(), + Y: p.Y(), + } +} + func (p *ECPoint) IsOnCurve() bool { return isOnCurve(p.curve, p.coords[0], p.coords[1]) } +func (p *ECPoint) Curve() elliptic.Curve { + return p.curve +} + func (p *ECPoint) Equals(p2 *ECPoint) bool { if p == nil || p2 == nil { return false @@ -77,9 +100,16 @@ func (p *ECPoint) ValidateBasic() bool { return p != nil && p.coords[0] != nil && p.coords[1] != nil && p.IsOnCurve() } +func (p *ECPoint) EightInvEight() *ECPoint { + return p.ScalarMult(eight).ScalarMult(eightInv) +} + func ScalarBaseMult(curve elliptic.Curve, k *big.Int) *ECPoint { x, y := curve.ScalarBaseMult(k.Bytes()) - p, _ := NewECPoint(curve, x, y) // it must be on the curve, no need to check. + p, err := NewECPoint(curve, x, y) // it must be on the curve, no need to check. + if err != nil { + panic(fmt.Errorf("scalar mult to an ecpoint %s", err.Error())) + } return p } @@ -199,24 +229,44 @@ func (p *ECPoint) GobDecode(buf []byte) error { // crypto.ECPoint is not inherently json marshal-able func (p *ECPoint) MarshalJSON() ([]byte, error) { + ecName, ok := tss.GetCurveName(p.curve) + if !ok { + return nil, fmt.Errorf("cannot find %T name in curve registry, please call tss.RegisterCurve(name, curve) to register it first", p.curve) + } + return json.Marshal(&struct { + Curve string Coords [2]*big.Int }{ + Curve: string(ecName), Coords: p.coords, }) } func (p *ECPoint) UnmarshalJSON(payload []byte) error { aux := &struct { + Curve string Coords [2]*big.Int }{} if err := json.Unmarshal(payload, &aux); err != nil { return err } - p.curve = tss.EC() p.coords = [2]*big.Int{aux.Coords[0], aux.Coords[1]} + + if len(aux.Curve) > 0 { + ec, ok := tss.GetCurveByName(tss.CurveName(aux.Curve)) + if !ok { + return fmt.Errorf("cannot find curve named with %s in curve registry, please call tss.RegisterCurve(name, curve) to register it first", aux.Curve) + } + p.curve = ec + } else { + // forward compatible, use global ec as default value + p.curve = tss.EC() + } + if !p.IsOnCurve() { - return errors.New("ECPoint.UnmarshalJSON: the point is not on the elliptic curve") + return fmt.Errorf("ECPoint.UnmarshalJSON: the point is not on the elliptic curve (%T) ", p.curve) } + return nil } diff --git a/crypto/ecpoint_test.go b/crypto/ecpoint_test.go index 6a4962ae..5f745dbc 100644 --- a/crypto/ecpoint_test.go +++ b/crypto/ecpoint_test.go @@ -7,12 +7,18 @@ package crypto_test import ( + "encoding/hex" + "encoding/json" "math/big" "reflect" "testing" - . "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/tss" + "github.com/btcsuite/btcd/btcec/v2" + "github.com/decred/dcrd/dcrec/edwards/v2" + "github.com/stretchr/testify/assert" + + . "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/tss" ) func TestFlattenECPoints(t *testing.T) { @@ -113,3 +119,49 @@ func TestUnFlattenECPoints(t *testing.T) { }) } } + +func TestS256EcpointJsonSerialization(t *testing.T) { + ec := btcec.S256() + tss.RegisterCurve("secp256k1", ec) + + pubKeyBytes, err := hex.DecodeString("03935336acb03b2b801d8f8ac5e92c56c4f6e93319901fdfffba9d340a874e2879") + assert.NoError(t, err) + pbk, err := btcec.ParsePubKey(pubKeyBytes) + assert.NoError(t, err) + + point, err := NewECPoint(ec, pbk.X(), pbk.Y()) + assert.NoError(t, err) + bz, err := json.Marshal(point) + assert.NoError(t, err) + assert.True(t, len(bz) > 0) + + var umpoint ECPoint + err = json.Unmarshal(bz, &umpoint) + assert.NoError(t, err) + + assert.True(t, point.Equals(&umpoint)) + assert.True(t, reflect.TypeOf(point.Curve()) == reflect.TypeOf(umpoint.Curve())) +} + +func TestEdwardsEcpointJsonSerialization(t *testing.T) { + ec := edwards.Edwards() + tss.RegisterCurve("ed25519", ec) + + pubKeyBytes, err := hex.DecodeString("ae1e5bf5f3d6bf58b5c222088671fcbe78b437e28fae944c793897b26091f249") + assert.NoError(t, err) + pbk, err := edwards.ParsePubKey(pubKeyBytes) + assert.NoError(t, err) + + point, err := NewECPoint(ec, pbk.X, pbk.Y) + assert.NoError(t, err) + bz, err := json.Marshal(point) + assert.NoError(t, err) + assert.True(t, len(bz) > 0) + + var umpoint ECPoint + err = json.Unmarshal(bz, &umpoint) + assert.NoError(t, err) + + assert.True(t, point.Equals(&umpoint)) + assert.True(t, reflect.TypeOf(point.Curve()) == reflect.TypeOf(umpoint.Curve())) +} diff --git a/crypto/facproof/proof.go b/crypto/facproof/proof.go new file mode 100644 index 00000000..32ac00cf --- /dev/null +++ b/crypto/facproof/proof.go @@ -0,0 +1,214 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package facproof + +import ( + "crypto/elliptic" + "errors" + "fmt" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" +) + +const ( + ProofFacBytesParts = 11 +) + +type ( + ProofFac struct { + P, Q, A, B, T, Sigma, Z1, Z2, W1, W2, V *big.Int + } +) + +var ( + // rangeParameter l limits the bits of p or q to be in [1024-l, 1024+l] + rangeParameter = new(big.Int).Lsh(big.NewInt(1), 15) + one = big.NewInt(1) +) + +// NewProof implements prooffac +func NewProof(Session []byte, ec elliptic.Curve, N0, NCap, s, t, N0p, N0q *big.Int) (*ProofFac, error) { + if ec == nil || N0 == nil || NCap == nil || s == nil || t == nil || N0p == nil || N0q == nil { + return nil, errors.New("ProveFac constructor received nil value(s)") + } + + q := ec.Params().N + q3 := new(big.Int).Mul(q, q) + q3 = new(big.Int).Mul(q, q3) + qNCap := new(big.Int).Mul(q, NCap) + qN0NCap := new(big.Int).Mul(qNCap, N0) + q3NCap := new(big.Int).Mul(q3, NCap) + q3N0NCap := new(big.Int).Mul(q3NCap, N0) + sqrtN0 := new(big.Int).Sqrt(N0) + q3SqrtN0 := new(big.Int).Mul(q3, sqrtN0) + + // Fig 28.1 sample + alpha := common.GetRandomPositiveInt(q3SqrtN0) + beta := common.GetRandomPositiveInt(q3SqrtN0) + mu := common.GetRandomPositiveInt(qNCap) + nu := common.GetRandomPositiveInt(qNCap) + sigma := common.GetRandomPositiveInt(qN0NCap) + r := common.GetRandomPositiveRelativelyPrimeInt(q3N0NCap) + x := common.GetRandomPositiveInt(q3NCap) + y := common.GetRandomPositiveInt(q3NCap) + + // Fig 28.1 compute + modNCap := common.ModInt(NCap) + P := modNCap.Exp(s, N0p) + P = modNCap.Mul(P, modNCap.Exp(t, mu)) + + Q := modNCap.Exp(s, N0q) + Q = modNCap.Mul(Q, modNCap.Exp(t, nu)) + + A := modNCap.Exp(s, alpha) + A = modNCap.Mul(A, modNCap.Exp(t, x)) + + B := modNCap.Exp(s, beta) + B = modNCap.Mul(B, modNCap.Exp(t, y)) + + T := modNCap.Exp(Q, alpha) + T = modNCap.Mul(T, modNCap.Exp(t, r)) + + // Fig 28.2 e + var e *big.Int + { + eHash := common.SHA512_256i_TAGGED(Session, N0, NCap, s, t, P, Q, A, B, T, sigma) + e = common.RejectionSample(q, eHash) + } + + // Fig 28.3 + z1 := new(big.Int).Mul(e, N0p) + z1 = new(big.Int).Add(z1, alpha) + + z2 := new(big.Int).Mul(e, N0q) + z2 = new(big.Int).Add(z2, beta) + + w1 := new(big.Int).Mul(e, mu) + w1 = new(big.Int).Add(w1, x) + + w2 := new(big.Int).Mul(e, nu) + w2 = new(big.Int).Add(w2, y) + + v := new(big.Int).Mul(nu, N0p) + v = new(big.Int).Sub(sigma, v) + v = new(big.Int).Mul(e, v) + v = new(big.Int).Add(v, r) + + return &ProofFac{P: P, Q: Q, A: A, B: B, T: T, Sigma: sigma, Z1: z1, Z2: z2, W1: w1, W2: w2, V: v}, nil +} + +func NewProofFromBytes(bzs [][]byte) (*ProofFac, error) { + if !common.NonEmptyMultiBytes(bzs, ProofFacBytesParts) { + return nil, fmt.Errorf("expected %d byte parts to construct ProofFac", ProofFacBytesParts) + } + return &ProofFac{ + P: new(big.Int).SetBytes(bzs[0]), + Q: new(big.Int).SetBytes(bzs[1]), + A: new(big.Int).SetBytes(bzs[2]), + B: new(big.Int).SetBytes(bzs[3]), + T: new(big.Int).SetBytes(bzs[4]), + Sigma: new(big.Int).SetBytes(bzs[5]), + Z1: new(big.Int).SetBytes(bzs[6]), + Z2: new(big.Int).SetBytes(bzs[7]), + W1: new(big.Int).SetBytes(bzs[8]), + W2: new(big.Int).SetBytes(bzs[9]), + V: new(big.Int).SetBytes(bzs[10]), + }, nil +} + +func (pf *ProofFac) Verify(Session []byte, ec elliptic.Curve, N0, NCap, s, t *big.Int) bool { + if pf == nil || !pf.ValidateBasic() || ec == nil || N0 == nil || NCap == nil || s == nil || t == nil { + return false + } + if N0.Sign() != 1 { + return false + } + + q := ec.Params().N + q3 := new(big.Int).Mul(q, q) + q3 = new(big.Int).Mul(q, q3) + sqrtN0 := new(big.Int).Sqrt(N0) + q3SqrtN0 := new(big.Int).Mul(q3, sqrtN0) + + // Fig 28. Range Check + if !common.IsInInterval(pf.Z1, q3SqrtN0) { + return false + } + + if !common.IsInInterval(pf.Z2, q3SqrtN0) { + return false + } + + var e *big.Int + { + eHash := common.SHA512_256i_TAGGED(Session, N0, NCap, s, t, pf.P, pf.Q, pf.A, pf.B, pf.T, pf.Sigma) + e = common.RejectionSample(q, eHash) + } + + // Fig 28. Equality Check + modNCap := common.ModInt(NCap) + { + LHS := modNCap.Mul(modNCap.Exp(s, pf.Z1), modNCap.Exp(t, pf.W1)) + RHS := modNCap.Mul(pf.A, modNCap.Exp(pf.P, e)) + + if LHS.Cmp(RHS) != 0 { + return false + } + } + + { + LHS := modNCap.Mul(modNCap.Exp(s, pf.Z2), modNCap.Exp(t, pf.W2)) + RHS := modNCap.Mul(pf.B, modNCap.Exp(pf.Q, e)) + + if LHS.Cmp(RHS) != 0 { + return false + } + } + + { + R := modNCap.Mul(modNCap.Exp(s, N0), modNCap.Exp(t, pf.Sigma)) + LHS := modNCap.Mul(modNCap.Exp(pf.Q, pf.Z1), modNCap.Exp(t, pf.V)) + RHS := modNCap.Mul(pf.T, modNCap.Exp(R, e)) + + if LHS.Cmp(RHS) != 0 { + return false + } + } + + return true +} + +func (pf *ProofFac) ValidateBasic() bool { + return pf.P != nil && + pf.Q != nil && + pf.A != nil && + pf.B != nil && + pf.T != nil && + pf.Sigma != nil && + pf.Z1 != nil && + pf.Z2 != nil && + pf.W1 != nil && + pf.W2 != nil && + pf.V != nil +} + +func (pf *ProofFac) Bytes() [ProofFacBytesParts][]byte { + return [...][]byte{ + pf.P.Bytes(), + pf.Q.Bytes(), + pf.A.Bytes(), + pf.B.Bytes(), + pf.T.Bytes(), + pf.Sigma.Bytes(), + pf.Z1.Bytes(), + pf.Z2.Bytes(), + pf.W1.Bytes(), + pf.W2.Bytes(), + pf.V.Bytes(), + } +} diff --git a/crypto/facproof/proof_test.go b/crypto/facproof/proof_test.go new file mode 100644 index 00000000..7676f19f --- /dev/null +++ b/crypto/facproof/proof_test.go @@ -0,0 +1,55 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package facproof_test + +import ( + "math/big" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + . "github.com/bnb-chain/tss-lib/v2/crypto/facproof" + "github.com/bnb-chain/tss-lib/v2/tss" +) + +// Using a modulus length of 2048 is recommended in the GG18 spec +const ( + testSafePrimeBits = 1024 +) + +var ( + Session = []byte("session") +) + +func TestFac(test *testing.T) { + ec := tss.EC() + + N0p := common.GetRandomPrimeInt(testSafePrimeBits) + N0q := common.GetRandomPrimeInt(testSafePrimeBits) + N0 := new(big.Int).Mul(N0p, N0q) + + primes := [2]*big.Int{common.GetRandomPrimeInt(testSafePrimeBits), common.GetRandomPrimeInt(testSafePrimeBits)} + NCap, s, t, err := crypto.GenerateNTildei(primes) + assert.NoError(test, err) + proof, err := NewProof(Session, ec, N0, NCap, s, t, N0p, N0q) + assert.NoError(test, err) + + ok := proof.Verify(Session, ec, N0, NCap, s, t) + assert.True(test, ok, "proof must verify") + + N0p = common.GetRandomPrimeInt(1024) + N0q = common.GetRandomPrimeInt(1024) + N0 = new(big.Int).Mul(N0p, N0q) + + proof, err = NewProof(Session, ec, N0, NCap, s, t, N0p, N0q) + assert.NoError(test, err) + + ok = proof.Verify(Session, ec, N0, NCap, s, t) + assert.True(test, ok, "proof must verify") +} diff --git a/crypto/modproof/proof.go b/crypto/modproof/proof.go new file mode 100644 index 00000000..3277db12 --- /dev/null +++ b/crypto/modproof/proof.go @@ -0,0 +1,243 @@ +// Copyright © 2019-2023 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package modproof + +import ( + "fmt" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" +) + +const ( + Iterations = 80 + ProofModBytesParts = Iterations*2 + 3 +) + +var ( + one = big.NewInt(1) +) + +type ( + ProofMod struct { + W *big.Int + X [Iterations]*big.Int + A *big.Int + B *big.Int + Z [Iterations]*big.Int + } +) + +// isQuadraticResidue checks Euler criterion +func isQuadraticResidue(X, N *big.Int) bool { + return big.Jacobi(X, N) == 1 +} + +func NewProof(Session []byte, N, P, Q *big.Int) (*ProofMod, error) { + Phi := new(big.Int).Mul(new(big.Int).Sub(P, one), new(big.Int).Sub(Q, one)) + // Fig 16.1 + W := common.GetRandomQuadraticNonResidue(N) + + // Fig 16.2 + Y := [Iterations]*big.Int{} + for i := range Y { + ei := common.SHA512_256i_TAGGED(Session, append([]*big.Int{W, N}, Y[:i]...)...) + Y[i] = common.RejectionSample(N, ei) + } + + // Fig 16.3 + modN, modPhi := common.ModInt(N), common.ModInt(Phi) + invN := new(big.Int).ModInverse(N, Phi) + X := [Iterations]*big.Int{} + // Fix bitLen of A and B + A := new(big.Int).Lsh(one, Iterations) + B := new(big.Int).Lsh(one, Iterations) + Z := [Iterations]*big.Int{} + + // for fourth-root + expo := new(big.Int).Add(Phi, big.NewInt(4)) + expo = new(big.Int).Rsh(expo, 3) + expo = modPhi.Mul(expo, expo) + + for i := range Y { + for j := 0; j < 4; j++ { + a, b := j&1, j&2>>1 + Yi := new(big.Int).SetBytes(Y[i].Bytes()) + if a > 0 { + Yi = modN.Mul(big.NewInt(-1), Yi) + } + if b > 0 { + Yi = modN.Mul(W, Yi) + } + if isQuadraticResidue(Yi, P) && isQuadraticResidue(Yi, Q) { + Xi := modN.Exp(Yi, expo) + Zi := modN.Exp(Y[i], invN) + X[i], Z[i] = Xi, Zi + A.SetBit(A, i, uint(a)) + B.SetBit(B, i, uint(b)) + break + } + } + } + + pf := &ProofMod{W: W, X: X, A: A, B: B, Z: Z} + return pf, nil +} + +func NewProofFromBytes(bzs [][]byte) (*ProofMod, error) { + if !common.NonEmptyMultiBytes(bzs, ProofModBytesParts) { + return nil, fmt.Errorf("expected %d byte parts to construct ProofMod", ProofModBytesParts) + } + bis := make([]*big.Int, len(bzs)) + for i := range bis { + bis[i] = new(big.Int).SetBytes(bzs[i]) + } + + X := [Iterations]*big.Int{} + copy(X[:], bis[1:(Iterations+1)]) + + Z := [Iterations]*big.Int{} + copy(Z[:], bis[(Iterations+3):]) + + return &ProofMod{ + W: bis[0], + X: X, + A: bis[Iterations+1], + B: bis[Iterations+2], + Z: Z, + }, nil +} + +func (pf *ProofMod) Verify(Session []byte, N *big.Int) bool { + if pf == nil || !pf.ValidateBasic() { + return false + } + // TODO: add basic properties checker + if isQuadraticResidue(pf.W, N) { + return false + } + if pf.W.Sign() != 1 || pf.W.Cmp(N) != -1 { + return false + } + for i := range pf.Z { + if pf.Z[i].Sign() != 1 || pf.Z[i].Cmp(N) != -1 { + return false + } + } + for i := range pf.X { + if pf.X[i].Sign() != 1 || pf.X[i].Cmp(N) != -1 { + return false + } + } + if pf.A.BitLen() != Iterations+1 { + return false + } + if pf.B.BitLen() != Iterations+1 { + return false + } + + modN := common.ModInt(N) + Y := [Iterations]*big.Int{} + for i := range Y { + ei := common.SHA512_256i_TAGGED(Session, append([]*big.Int{pf.W, N}, Y[:i]...)...) + Y[i] = common.RejectionSample(N, ei) + } + + // Fig 16. Verification + { + if N.Bit(0) == 0 || N.ProbablyPrime(30) { + return false + } + } + + chs := make(chan bool, Iterations*2) + for i := 0; i < Iterations; i++ { + go func(i int) { + left := modN.Exp(pf.Z[i], N) + if left.Cmp(Y[i]) != 0 { + chs <- false + return + } + chs <- true + }(i) + + go func(i int) { + a := pf.A.Bit(i) + b := pf.B.Bit(i) + if a != 0 && a != 1 { + chs <- false + return + } + if b != 0 && b != 1 { + chs <- false + return + } + left := modN.Exp(pf.X[i], big.NewInt(4)) + right := Y[i] + if a > 0 { + right = modN.Mul(big.NewInt(-1), right) + } + if b > 0 { + right = modN.Mul(pf.W, right) + } + if left.Cmp(right) != 0 { + chs <- false + return + } + chs <- true + }(i) + } + + for i := 0; i < Iterations*2; i++ { + if !<-chs { + return false + } + } + + return true +} + +func (pf *ProofMod) ValidateBasic() bool { + if pf.W == nil { + return false + } + for i := range pf.X { + if pf.X[i] == nil { + return false + } + } + if pf.A == nil { + return false + } + if pf.B == nil { + return false + } + for i := range pf.Z { + if pf.Z[i] == nil { + return false + } + } + return true +} + +func (pf *ProofMod) Bytes() [ProofModBytesParts][]byte { + bzs := [ProofModBytesParts][]byte{} + bzs[0] = pf.W.Bytes() + for i := range pf.X { + if pf.X[i] != nil { + bzs[1+i] = pf.X[i].Bytes() + } + } + bzs[Iterations+1] = pf.A.Bytes() + bzs[Iterations+2] = pf.B.Bytes() + for i := range pf.Z { + if pf.Z[i] != nil { + bzs[Iterations+3+i] = pf.Z[i].Bytes() + } + } + return bzs +} diff --git a/crypto/modproof/proof_test.go b/crypto/modproof/proof_test.go new file mode 100644 index 00000000..5a6dc419 --- /dev/null +++ b/crypto/modproof/proof_test.go @@ -0,0 +1,37 @@ +// Copyright © 2019-2023 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package modproof_test + +import ( + "testing" + "time" + + . "github.com/bnb-chain/tss-lib/v2/crypto/modproof" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/stretchr/testify/assert" +) + +var ( + Session = []byte("session") +) + +func TestMod(test *testing.T) { + preParams, err := keygen.GeneratePreParams(time.Minute*10, 8) + assert.NoError(test, err) + + P, Q, N := preParams.PaillierSK.P, preParams.PaillierSK.Q, preParams.PaillierSK.N + + proof, err := NewProof(Session, N, P, Q) + assert.NoError(test, err) + + proofBzs := proof.Bytes() + proof, err = NewProofFromBytes(proofBzs[:]) + assert.NoError(test, err) + + ok := proof.Verify(Session, N) + assert.True(test, ok, "proof must verify") +} diff --git a/crypto/mta/proofs.go b/crypto/mta/proofs.go index e827af16..2bd61174 100644 --- a/crypto/mta/proofs.go +++ b/crypto/mta/proofs.go @@ -7,14 +7,15 @@ package mta import ( + "crypto/elliptic" "errors" "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -35,16 +36,18 @@ type ( // ProveBobWC implements Bob's proof both with or without check "ProveMtawc_Bob" and "ProveMta_Bob" used in the MtA protocol from GG18Spec (9) Figs. 10 & 11. // an absent `X` generates the proof without the X consistency check X = g^x -func ProveBobWC(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2, x, y, r *big.Int, X *crypto.ECPoint) (*ProofBobWC, error) { +func ProveBobWC(Session []byte, ec elliptic.Curve, pk *paillier.PublicKey, NTilde, h1, h2, c1, c2, x, y, r *big.Int, X *crypto.ECPoint) (*ProofBobWC, error) { if pk == nil || NTilde == nil || h1 == nil || h2 == nil || c1 == nil || c2 == nil || x == nil || y == nil || r == nil { return nil, errors.New("ProveBob() received a nil argument") } NSquared := pk.NSquare() - q := tss.EC().Params().N + q := ec.Params().N q3 := new(big.Int).Mul(q, q) q3 = new(big.Int).Mul(q, q3) + q7 := new(big.Int).Mul(q3, q3) + q7 = new(big.Int).Mul(q7, q) qNTilde := new(big.Int).Mul(q, NTilde) q3NTilde := new(big.Int).Mul(q3, NTilde) @@ -55,19 +58,20 @@ func ProveBobWC(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2, x, y, r *big.Int // 2. rho := common.GetRandomPositiveInt(qNTilde) sigma := common.GetRandomPositiveInt(qNTilde) - tau := common.GetRandomPositiveInt(qNTilde) + tau := common.GetRandomPositiveInt(q3NTilde) // 3. rhoPrm := common.GetRandomPositiveInt(q3NTilde) // 4. beta := common.GetRandomPositiveRelativelyPrimeInt(pk.N) - gamma := common.GetRandomPositiveRelativelyPrimeInt(pk.N) + + gamma := common.GetRandomPositiveInt(q7) // 5. - u := crypto.NewECPointNoCurveCheck(tss.EC(), zero, zero) // initialization suppresses an IDE warning + u := crypto.NewECPointNoCurveCheck(ec, zero, zero) // initialization suppresses an IDE warning if X != nil { - u = crypto.ScalarBaseMult(tss.EC(), alpha) + u = crypto.ScalarBaseMult(ec, alpha) } // 6. @@ -99,9 +103,9 @@ func ProveBobWC(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2, x, y, r *big.Int var eHash *big.Int // X is nil if called by ProveBob (Bob's proof "without check") if X == nil { - eHash = common.SHA512_256i(append(pk.AsInts(), c1, c2, z, zPrm, t, v, w)...) + eHash = common.SHA512_256i_TAGGED(Session, append(pk.AsInts(), c1, c2, z, zPrm, t, v, w)...) } else { - eHash = common.SHA512_256i(append(pk.AsInts(), X.X(), X.Y(), c1, c2, u.X(), u.Y(), z, zPrm, t, v, w)...) + eHash = common.SHA512_256i_TAGGED(Session, append(pk.AsInts(), X.X(), X.Y(), c1, c2, u.X(), u.Y(), z, zPrm, t, v, w)...) } e = common.RejectionSample(q, eHash) } @@ -135,22 +139,22 @@ func ProveBobWC(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2, x, y, r *big.Int } // ProveBob implements Bob's proof "ProveMta_Bob" used in the MtA protocol from GG18Spec (9) Fig. 11. -func ProveBob(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2, x, y, r *big.Int) (*ProofBob, error) { +func ProveBob(Session []byte, ec elliptic.Curve, pk *paillier.PublicKey, NTilde, h1, h2, c1, c2, x, y, r *big.Int) (*ProofBob, error) { // the Bob proof ("with check") contains the ProofBob "without check"; this method extracts and returns it // X is supplied as nil to exclude it from the proof hash - pf, err := ProveBobWC(pk, NTilde, h1, h2, c1, c2, x, y, r, nil) + pf, err := ProveBobWC(Session, ec, pk, NTilde, h1, h2, c1, c2, x, y, r, nil) if err != nil { return nil, err } return pf.ProofBob, nil } -func ProofBobWCFromBytes(bzs [][]byte) (*ProofBobWC, error) { +func ProofBobWCFromBytes(ec elliptic.Curve, bzs [][]byte) (*ProofBobWC, error) { proofBob, err := ProofBobFromBytes(bzs) if err != nil { return nil, err } - point, err := crypto.NewECPoint(tss.EC(), + point, err := crypto.NewECPoint(ec, new(big.Int).SetBytes(bzs[10]), new(big.Int).SetBytes(bzs[11])) if err != nil { @@ -185,19 +189,84 @@ func ProofBobFromBytes(bzs [][]byte) (*ProofBob, error) { // ProveBobWC.Verify implements verification of Bob's proof with check "VerifyMtawc_Bob" used in the MtA protocol from GG18Spec (9) Fig. 10. // an absent `X` verifies a proof generated without the X consistency check X = g^x -func (pf *ProofBobWC) Verify(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2 *big.Int, X *crypto.ECPoint) bool { +func (pf *ProofBobWC) Verify(Session []byte, ec elliptic.Curve, pk *paillier.PublicKey, NTilde, h1, h2, c1, c2 *big.Int, X *crypto.ECPoint) bool { if pk == nil || NTilde == nil || h1 == nil || h2 == nil || c1 == nil || c2 == nil { return false } - q := tss.EC().Params().N - q3 := new(big.Int).Mul(q, q) - q3 = new(big.Int).Mul(q, q3) + q := ec.Params().N + q3 := new(big.Int).Mul(q, q) // q^2 + q3 = new(big.Int).Mul(q, q3) // q^3 + q7 := new(big.Int).Mul(q3, q3) // q^6 + q7 = new(big.Int).Mul(q7, q) // q^7 + + if !common.IsInInterval(pf.Z, NTilde) { + return false + } + if !common.IsInInterval(pf.ZPrm, NTilde) { + return false + } + if !common.IsInInterval(pf.T, NTilde) { + return false + } + if !common.IsInInterval(pf.V, pk.NSquare()) { + return false + } + if !common.IsInInterval(pf.W, NTilde) { + return false + } + if !common.IsInInterval(pf.S, pk.N) { + return false + } + if new(big.Int).GCD(nil, nil, pf.Z, NTilde).Cmp(one) != 0 { + return false + } + if new(big.Int).GCD(nil, nil, pf.ZPrm, NTilde).Cmp(one) != 0 { + return false + } + if new(big.Int).GCD(nil, nil, pf.T, NTilde).Cmp(one) != 0 { + return false + } + if new(big.Int).GCD(nil, nil, pf.V, pk.NSquare()).Cmp(one) != 0 { + return false + } + if new(big.Int).GCD(nil, nil, pf.W, NTilde).Cmp(one) != 0 { + return false + } + + gcd := big.NewInt(0) + if pf.S.Cmp(zero) == 0 { + return false + } + if gcd.GCD(nil, nil, pf.S, pk.N).Cmp(one) != 0 { + return false + } + if pf.V.Cmp(zero) == 0 { + return false + } + if gcd.GCD(nil, nil, pf.V, pk.N).Cmp(one) != 0 { + return false + } + if pf.S1.Cmp(q) == -1 { + return false + } + if pf.S2.Cmp(q) == -1 { + return false + } + if pf.T1.Cmp(q) == -1 { + return false + } + if pf.T2.Cmp(q) == -1 { + return false + } // 3. if pf.S1.Cmp(q3) > 0 { return false } + if pf.T1.Cmp(q7) > 0 { + return false + } // 1-2. e' var e *big.Int @@ -205,9 +274,12 @@ func (pf *ProofBobWC) Verify(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2 *big var eHash *big.Int // X is nil if called on a ProveBob (Bob's proof "without check") if X == nil { - eHash = common.SHA512_256i(append(pk.AsInts(), c1, c2, pf.Z, pf.ZPrm, pf.T, pf.V, pf.W)...) + eHash = common.SHA512_256i_TAGGED(Session, append(pk.AsInts(), c1, c2, pf.Z, pf.ZPrm, pf.T, pf.V, pf.W)...) } else { - eHash = common.SHA512_256i(append(pk.AsInts(), X.X(), X.Y(), c1, c2, pf.U.X(), pf.U.Y(), pf.Z, pf.ZPrm, pf.T, pf.V, pf.W)...) + if !tss.SameCurve(ec, X.Curve()) { + return false + } + eHash = common.SHA512_256i_TAGGED(Session, append(pk.AsInts(), X.X(), X.Y(), c1, c2, pf.U.X(), pf.U.Y(), pf.Z, pf.ZPrm, pf.T, pf.V, pf.W)...) } e = common.RejectionSample(q, eHash) } @@ -216,8 +288,8 @@ func (pf *ProofBobWC) Verify(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2 *big // 4. runs only in the "with check" mode from Fig. 10 if X != nil { - s1ModQ := new(big.Int).Mod(pf.S1, tss.EC().Params().N) - gS1 := crypto.ScalarBaseMult(tss.EC(), s1ModQ) + s1ModQ := new(big.Int).Mod(pf.S1, ec.Params().N) + gS1 := crypto.ScalarBaseMult(ec, s1ModQ) xEU, err := X.ScalarMult(e).Add(pf.U) if err != nil || !gS1.Equals(xEU) { return false @@ -268,12 +340,12 @@ func (pf *ProofBobWC) Verify(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2 *big } // ProveBob.Verify implements verification of Bob's proof without check "VerifyMta_Bob" used in the MtA protocol from GG18Spec (9) Fig. 11. -func (pf *ProofBob) Verify(pk *paillier.PublicKey, NTilde, h1, h2, c1, c2 *big.Int) bool { +func (pf *ProofBob) Verify(Session []byte, ec elliptic.Curve, pk *paillier.PublicKey, NTilde, h1, h2, c1, c2 *big.Int) bool { if pf == nil { return false } pfWC := &ProofBobWC{ProofBob: pf, U: nil} - return pfWC.Verify(pk, NTilde, h1, h2, c1, c2, nil) + return pfWC.Verify(Session, ec, pk, NTilde, h1, h2, c1, c2, nil) } func (pf *ProofBob) ValidateBasic() bool { diff --git a/crypto/mta/range_proof.go b/crypto/mta/range_proof.go index 508439a0..11bb999f 100644 --- a/crypto/mta/range_proof.go +++ b/crypto/mta/range_proof.go @@ -7,13 +7,13 @@ package mta import ( + "crypto/elliptic" "errors" "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" ) const ( @@ -22,6 +22,7 @@ const ( var ( zero = big.NewInt(0) + one = big.NewInt(1) ) type ( @@ -31,12 +32,12 @@ type ( ) // ProveRangeAlice implements Alice's range proof used in the MtA and MtAwc protocols from GG18Spec (9) Fig. 9. -func ProveRangeAlice(pk *paillier.PublicKey, c, NTilde, h1, h2, m, r *big.Int) (*RangeProofAlice, error) { +func ProveRangeAlice(ec elliptic.Curve, pk *paillier.PublicKey, c, NTilde, h1, h2, m, r *big.Int) (*RangeProofAlice, error) { if pk == nil || NTilde == nil || h1 == nil || h2 == nil || c == nil || m == nil || r == nil { return nil, errors.New("ProveRangeAlice constructor received nil value(s)") } - q := tss.EC().Params().N + q := ec.Params().N q3 := new(big.Int).Mul(q, q) q3 = new(big.Int).Mul(q, q3) qNTilde := new(big.Int).Mul(q, NTilde) @@ -103,16 +104,43 @@ func RangeProofAliceFromBytes(bzs [][]byte) (*RangeProofAlice, error) { }, nil } -func (pf *RangeProofAlice) Verify(pk *paillier.PublicKey, NTilde, h1, h2, c *big.Int) bool { +func (pf *RangeProofAlice) Verify(ec elliptic.Curve, pk *paillier.PublicKey, NTilde, h1, h2, c *big.Int) bool { if pf == nil || !pf.ValidateBasic() || pk == nil || NTilde == nil || h1 == nil || h2 == nil || c == nil { return false } - N2 := new(big.Int).Mul(pk.N, pk.N) - q := tss.EC().Params().N + q := ec.Params().N q3 := new(big.Int).Mul(q, q) q3 = new(big.Int).Mul(q, q3) + if !common.IsInInterval(pf.Z, NTilde) { + return false + } + if !common.IsInInterval(pf.U, pk.NSquare()) { + return false + } + if !common.IsInInterval(pf.W, NTilde) { + return false + } + if !common.IsInInterval(pf.S, pk.N) { + return false + } + if new(big.Int).GCD(nil, nil, pf.Z, NTilde).Cmp(one) != 0 { + return false + } + if new(big.Int).GCD(nil, nil, pf.U, pk.NSquare()).Cmp(one) != 0 { + return false + } + if new(big.Int).GCD(nil, nil, pf.W, NTilde).Cmp(one) != 0 { + return false + } + if pf.S1.Cmp(q) == -1 { + return false + } + if pf.S2.Cmp(q) == -1 { + return false + } + // 3. if pf.S1.Cmp(q3) == 1 { return false @@ -129,14 +157,14 @@ func (pf *RangeProofAlice) Verify(pk *paillier.PublicKey, NTilde, h1, h2, c *big minusE := new(big.Int).Sub(zero, e) { // 4. gamma^s_1 * s^N * c^-e - modN2 := common.ModInt(N2) + modNSquared := common.ModInt(pk.NSquare()) - cExpMinusE := modN2.Exp(c, minusE) - sExpN := modN2.Exp(pf.S, pk.N) - gammaExpS1 := modN2.Exp(pk.Gamma(), pf.S1) + cExpMinusE := modNSquared.Exp(c, minusE) + sExpN := modNSquared.Exp(pf.S, pk.N) + gammaExpS1 := modNSquared.Exp(pk.Gamma(), pf.S1) // u != (4) - products = modN2.Mul(gammaExpS1, sExpN) - products = modN2.Mul(products, cExpMinusE) + products = modNSquared.Mul(gammaExpS1, sExpN) + products = modNSquared.Mul(products, cExpMinusE) if pf.U.Cmp(products) != 0 { return false } diff --git a/crypto/mta/range_proof_test.go b/crypto/mta/range_proof_test.go index 73a9950a..318335f1 100644 --- a/crypto/mta/range_proof_test.go +++ b/crypto/mta/range_proof_test.go @@ -7,16 +7,18 @@ package mta import ( + "context" + "fmt" "math/big" "testing" "time" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Using a modulus length of 2048 is recommended in the GG18 spec @@ -27,7 +29,10 @@ const ( func TestProveRangeAlice(t *testing.T) { q := tss.EC().Params().N - sk, pk, err := paillier.GenerateKeyPair(testPaillierKeyLength, 10*time.Minute) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + + sk, pk, err := paillier.GenerateKeyPair(ctx, testPaillierKeyLength) assert.NoError(t, err) m := common.GetRandomPositiveInt(q) @@ -37,9 +42,82 @@ func TestProveRangeAlice(t *testing.T) { primes := [2]*big.Int{common.GetRandomPrimeInt(testSafePrimeBits), common.GetRandomPrimeInt(testSafePrimeBits)} NTildei, h1i, h2i, err := crypto.GenerateNTildei(primes) assert.NoError(t, err) - proof, err := ProveRangeAlice(pk, c, NTildei, h1i, h2i, m, r) + proof, err := ProveRangeAlice(tss.EC(), pk, c, NTildei, h1i, h2i, m, r) assert.NoError(t, err) - ok := proof.Verify(pk, NTildei, h1i, h2i, c) + ok := proof.Verify(tss.EC(), pk, NTildei, h1i, h2i, c) assert.True(t, ok, "proof must verify") } + +func TestProveRangeAliceBypassed(t *testing.T) { + q := tss.EC().Params().N + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + + sk0, pk0, err := paillier.GenerateKeyPair(ctx, testPaillierKeyLength) + assert.NoError(t, err) + + m0 := common.GetRandomPositiveInt(q) + c0, r0, err := sk0.EncryptAndReturnRandomness(m0) + assert.NoError(t, err) + + primes0 := [2]*big.Int{common.GetRandomPrimeInt(testSafePrimeBits), common.GetRandomPrimeInt(testSafePrimeBits)} + Ntildei0, h1i0, h2i0, err := crypto.GenerateNTildei(primes0) + assert.NoError(t, err) + proof0, err := ProveRangeAlice(tss.EC(), pk0, c0, Ntildei0, h1i0, h2i0, m0, r0) + assert.NoError(t, err) + + ok0 := proof0.Verify(tss.EC(), pk0, Ntildei0, h1i0, h2i0, c0) + assert.True(t, ok0, "proof must verify") + + //proof 2 + sk1, pk1, err := paillier.GenerateKeyPair(ctx, testPaillierKeyLength) + assert.NoError(t, err) + + m1 := common.GetRandomPositiveInt(q) + c1, r1, err := sk1.EncryptAndReturnRandomness(m1) + assert.NoError(t, err) + + primes1 := [2]*big.Int{common.GetRandomPrimeInt(testSafePrimeBits), common.GetRandomPrimeInt(testSafePrimeBits)} + Ntildei1, h1i1, h2i1, err := crypto.GenerateNTildei(primes1) + assert.NoError(t, err) + proof1, err := ProveRangeAlice(tss.EC(), pk1, c1, Ntildei1, h1i1, h2i1, m1, r1) + assert.NoError(t, err) + + ok1 := proof1.Verify(tss.EC(), pk1, Ntildei1, h1i1, h2i1, c1) + assert.True(t, ok1, "proof must verify") + + cross0 := proof0.Verify(tss.EC(), pk1, Ntildei1, h1i1, h2i1, c1) + assert.False(t, cross0, "proof must not verify") + + cross1 := proof1.Verify(tss.EC(), pk0, Ntildei0, h1i0, h2i0, c0) + assert.False(t, cross1, "proof must not verify") + + fmt.Println("Did verify proof 0 with data from 0?", ok0) + fmt.Println("Did verify proof 1 with data from 1?", ok1) + + fmt.Println("Did verify proof 0 with data from 1?", cross0) + fmt.Println("Did verify proof 1 with data from 0?", cross1) + + //new bypass + bypassedproofNew := &RangeProofAlice{ + S: big.NewInt(1), + S1: big.NewInt(0), + S2: big.NewInt(0), + Z: big.NewInt(1), + U: big.NewInt(1), + W: big.NewInt(1), + } + + cBogus := big.NewInt(1) + proofBogus, _ := ProveRangeAlice(tss.EC(), pk1, cBogus, Ntildei1, h1i1, h2i1, m1, r1) + + ok2 := proofBogus.Verify(tss.EC(), pk1, Ntildei1, h1i1, h2i1, cBogus) + bypassresult3 := bypassedproofNew.Verify(tss.EC(), pk1, Ntildei1, h1i1, h2i1, cBogus) + + //c = 1 is not valid, even though we can find a range proof for it that passes! + //this also means that the homo mul and add needs to be checked with this! + fmt.Println("Did verify proof bogus with data from bogus?", ok2) + fmt.Println("Did we bypass proof 3?", bypassresult3) +} diff --git a/crypto/mta/share_protocol.go b/crypto/mta/share_protocol.go index faaa9f31..94c1c877 100644 --- a/crypto/mta/share_protocol.go +++ b/crypto/mta/share_protocol.go @@ -7,16 +7,17 @@ package mta import ( + "crypto/elliptic" "errors" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" ) func AliceInit( + ec elliptic.Curve, pkA *paillier.PublicKey, a, NTildeB, h1B, h2B *big.Int, ) (cA *big.Int, pf *RangeProofAlice, err error) { @@ -24,21 +25,26 @@ func AliceInit( if err != nil { return nil, nil, err } - pf, err = ProveRangeAlice(pkA, cA, NTildeB, h1B, h2B, a, rA) + pf, err = ProveRangeAlice(ec, pkA, cA, NTildeB, h1B, h2B, a, rA) return cA, pf, err } func BobMid( + Session []byte, + ec elliptic.Curve, pkA *paillier.PublicKey, pf *RangeProofAlice, b, cA, NTildeA, h1A, h2A, NTildeB, h1B, h2B *big.Int, ) (beta, cB, betaPrm *big.Int, piB *ProofBob, err error) { - if !pf.Verify(pkA, NTildeB, h1B, h2B, cA) { + if !pf.Verify(ec, pkA, NTildeB, h1B, h2B, cA) { err = errors.New("RangeProofAlice.Verify() returned false") return } - q := tss.EC().Params().N - betaPrm = common.GetRandomPositiveInt(pkA.N) + q := ec.Params().N + q5 := new(big.Int).Mul(q, q) // q^2 + q5 = new(big.Int).Mul(q5, q5) // q^4 + q5 = new(big.Int).Mul(q5, q) // q^5 + betaPrm = common.GetRandomPositiveInt(q5) cBetaPrm, cRand, err := pkA.EncryptAndReturnRandomness(betaPrm) if err != nil { return @@ -52,22 +58,27 @@ func BobMid( return } beta = common.ModInt(q).Sub(zero, betaPrm) - piB, err = ProveBob(pkA, NTildeA, h1A, h2A, cA, cB, b, betaPrm, cRand) + piB, err = ProveBob(Session, ec, pkA, NTildeA, h1A, h2A, cA, cB, b, betaPrm, cRand) return } func BobMidWC( + Session []byte, + ec elliptic.Curve, pkA *paillier.PublicKey, pf *RangeProofAlice, b, cA, NTildeA, h1A, h2A, NTildeB, h1B, h2B *big.Int, B *crypto.ECPoint, ) (beta, cB, betaPrm *big.Int, piB *ProofBobWC, err error) { - if !pf.Verify(pkA, NTildeB, h1B, h2B, cA) { + if !pf.Verify(ec, pkA, NTildeB, h1B, h2B, cA) { err = errors.New("RangeProofAlice.Verify() returned false") return } - q := tss.EC().Params().N - betaPrm = common.GetRandomPositiveInt(pkA.N) + q := ec.Params().N + q5 := new(big.Int).Mul(q, q) // q^2 + q5 = new(big.Int).Mul(q5, q5) // q^4 + q5 = new(big.Int).Mul(q5, q) // q^5 + betaPrm = common.GetRandomPositiveInt(q5) cBetaPrm, cRand, err := pkA.EncryptAndReturnRandomness(betaPrm) if err != nil { return @@ -81,41 +92,45 @@ func BobMidWC( return } beta = common.ModInt(q).Sub(zero, betaPrm) - piB, err = ProveBobWC(pkA, NTildeA, h1A, h2A, cA, cB, b, betaPrm, cRand, B) + piB, err = ProveBobWC(Session, ec, pkA, NTildeA, h1A, h2A, cA, cB, b, betaPrm, cRand, B) return } func AliceEnd( + Session []byte, + ec elliptic.Curve, pkA *paillier.PublicKey, pf *ProofBob, h1A, h2A, cA, cB, NTildeA *big.Int, sk *paillier.PrivateKey, ) (*big.Int, error) { - if !pf.Verify(pkA, NTildeA, h1A, h2A, cA, cB) { + if !pf.Verify(Session, ec, pkA, NTildeA, h1A, h2A, cA, cB) { return nil, errors.New("ProofBob.Verify() returned false") } alphaPrm, err := sk.Decrypt(cB) if err != nil { return nil, err } - q := tss.EC().Params().N + q := ec.Params().N return new(big.Int).Mod(alphaPrm, q), nil } func AliceEndWC( + Session []byte, + ec elliptic.Curve, pkA *paillier.PublicKey, pf *ProofBobWC, B *crypto.ECPoint, cA, cB, NTildeA, h1A, h2A *big.Int, sk *paillier.PrivateKey, ) (*big.Int, error) { - if !pf.Verify(pkA, NTildeA, h1A, h2A, cA, cB, B) { + if !pf.Verify(Session, ec, pkA, NTildeA, h1A, h2A, cA, cB, B) { return nil, errors.New("ProofBobWC.Verify() returned false") } alphaPrm, err := sk.Decrypt(cB) if err != nil { return nil, err } - q := tss.EC().Params().N + q := ec.Params().N return new(big.Int).Mod(alphaPrm, q), nil } diff --git a/crypto/mta/share_protocol_test.go b/crypto/mta/share_protocol_test.go index 0e9e2864..aed84f39 100644 --- a/crypto/mta/share_protocol_test.go +++ b/crypto/mta/share_protocol_test.go @@ -7,17 +7,18 @@ package mta import ( + "context" "math/big" "testing" "time" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Using a modulus length of 2048 is recommended in the GG18 spec @@ -25,10 +26,17 @@ const ( testPaillierKeyLength = 2048 ) +var ( + Session = []byte("session") +) + func TestShareProtocol(t *testing.T) { q := tss.EC().Params().N - sk, pk, err := paillier.GenerateKeyPair(testPaillierKeyLength, 10*time.Minute) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + + sk, pk, err := paillier.GenerateKeyPair(ctx, testPaillierKeyLength) assert.NoError(t, err) a := common.GetRandomPositiveInt(q) @@ -39,13 +47,13 @@ func TestShareProtocol(t *testing.T) { NTildej, h1j, h2j, err := keygen.LoadNTildeH1H2FromTestFixture(1) assert.NoError(t, err) - cA, pf, err := AliceInit(pk, a, NTildej, h1j, h2j) + cA, pf, err := AliceInit(tss.EC(), pk, a, NTildej, h1j, h2j) assert.NoError(t, err) - _, cB, betaPrm, pfB, err := BobMid(pk, pf, b, cA, NTildei, h1i, h2i, NTildej, h1j, h2j) + _, cB, betaPrm, pfB, err := BobMid(Session, tss.EC(), pk, pf, b, cA, NTildei, h1i, h2i, NTildej, h1j, h2j) assert.NoError(t, err) - alpha, err := AliceEnd(pk, pfB, h1i, h2i, cA, cB, NTildei, sk) + alpha, err := AliceEnd(Session, tss.EC(), pk, pfB, h1i, h2i, cA, cB, NTildei, sk) assert.NoError(t, err) // expect: alpha = ab + betaPrm @@ -58,7 +66,10 @@ func TestShareProtocol(t *testing.T) { func TestShareProtocolWC(t *testing.T) { q := tss.EC().Params().N - sk, pk, err := paillier.GenerateKeyPair(testPaillierKeyLength, 10*time.Minute) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + + sk, pk, err := paillier.GenerateKeyPair(ctx, testPaillierKeyLength) assert.NoError(t, err) a := common.GetRandomPositiveInt(q) @@ -70,15 +81,15 @@ func TestShareProtocolWC(t *testing.T) { NTildej, h1j, h2j, err := keygen.LoadNTildeH1H2FromTestFixture(1) assert.NoError(t, err) - cA, pf, err := AliceInit(pk, a, NTildej, h1j, h2j) + cA, pf, err := AliceInit(tss.EC(), pk, a, NTildej, h1j, h2j) assert.NoError(t, err) gBPoint, err := crypto.NewECPoint(tss.EC(), gBX, gBY) assert.NoError(t, err) - _, cB, betaPrm, pfB, err := BobMidWC(pk, pf, b, cA, NTildei, h1i, h2i, NTildej, h1j, h2j, gBPoint) + _, cB, betaPrm, pfB, err := BobMidWC(Session, tss.EC(), pk, pf, b, cA, NTildei, h1i, h2i, NTildej, h1j, h2j, gBPoint) assert.NoError(t, err) - alpha, err := AliceEndWC(pk, pfB, gBPoint, cA, cB, NTildei, h1i, h2i, sk) + alpha, err := AliceEndWC(Session, tss.EC(), pk, pfB, gBPoint, cA, cB, NTildei, h1i, h2i, sk) assert.NoError(t, err) // expect: alpha = ab + betaPrm diff --git a/crypto/paillier/paillier.go b/crypto/paillier/paillier.go index e2461c19..1b249b12 100644 --- a/crypto/paillier/paillier.go +++ b/crypto/paillier/paillier.go @@ -16,18 +16,18 @@ package paillier import ( + "context" "errors" "fmt" gmath "math" "math/big" "runtime" "strconv" - "time" "github.com/otiai10/primes" - "github.com/binance-chain/tss-lib/common" - crypto2 "github.com/binance-chain/tss-lib/crypto" + "github.com/bnb-chain/tss-lib/v2/common" + crypto2 "github.com/bnb-chain/tss-lib/v2/crypto" ) const ( @@ -45,6 +45,7 @@ type ( PublicKey LambdaN, // lcm(p-1, q-1) PhiN *big.Int // (p-1) * (q-1) + P, Q *big.Int } // Proof uses the new GenerateXs method in GG18Spec (6) @@ -52,7 +53,8 @@ type ( ) var ( - ErrMessageTooLong = fmt.Errorf("the message is too large or < 0") + ErrMessageTooLong = fmt.Errorf("the message is too large or < 0") + ErrMessageMalFormed = fmt.Errorf("the message is mal-formed") zero = big.NewInt(0) one = big.NewInt(1) @@ -64,7 +66,7 @@ func init() { } // len is the length of the modulus (each prime = len / 2) -func GenerateKeyPair(modulusBitLen int, timeout time.Duration, optionalConcurrency ...int) (privateKey *PrivateKey, publicKey *PublicKey, err error) { +func GenerateKeyPair(ctx context.Context, modulusBitLen int, optionalConcurrency ...int) (privateKey *PrivateKey, publicKey *PublicKey, err error) { var concurrency int if 0 < len(optionalConcurrency) { if 1 < len(optionalConcurrency) { @@ -80,7 +82,7 @@ func GenerateKeyPair(modulusBitLen int, timeout time.Duration, optionalConcurren { tmp := new(big.Int) for { - sgps, err := common.GetRandomSafePrimesConcurrent(modulusBitLen/2, 2, timeout, concurrency) + sgps, err := common.GetRandomSafePrimesConcurrent(ctx, modulusBitLen/2, 2, concurrency) if err != nil { return nil, nil, err } @@ -102,7 +104,7 @@ func GenerateKeyPair(modulusBitLen int, timeout time.Duration, optionalConcurren lambdaN := new(big.Int).Div(phiN, gcd) publicKey = &PublicKey{N: N} - privateKey = &PrivateKey{PublicKey: *publicKey, LambdaN: lambdaN, PhiN: phiN} + privateKey = &PrivateKey{PublicKey: *publicKey, LambdaN: lambdaN, PhiN: phiN, P: P, Q: Q} return } @@ -173,6 +175,10 @@ func (privateKey *PrivateKey) Decrypt(c *big.Int) (m *big.Int, err error) { if c.Cmp(zero) == -1 || c.Cmp(N2) != -1 { // c < 0 || c >= N2 ? return nil, ErrMessageTooLong } + cg := new(big.Int).GCD(nil, nil, c, N2) + if cg.Cmp(one) == 1 { + return nil, ErrMessageMalFormed + } // 1. L(u) = (c^LambdaN-1 mod N2) / N Lc := L(new(big.Int).Exp(c, privateKey.LambdaN, N2), privateKey.N) // 2. L(u) = (Gamma^LambdaN-1 mod N2) / N diff --git a/crypto/paillier/paillier_test.go b/crypto/paillier/paillier_test.go index 053966ca..a9ebff73 100644 --- a/crypto/paillier/paillier_test.go +++ b/crypto/paillier/paillier_test.go @@ -7,16 +7,17 @@ package paillier_test import ( + "context" "math/big" "testing" "time" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - . "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + . "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Using a modulus length of 2048 is recommended in the GG18 spec @@ -33,8 +34,12 @@ func setUp(t *testing.T) { if privateKey != nil && publicKey != nil { return } + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + var err error - privateKey, publicKey, err = GenerateKeyPair(testPaillierKeyLength, 10*time.Minute) + privateKey, publicKey, err = GenerateKeyPair(ctx, testPaillierKeyLength) assert.NoError(t, err) } @@ -64,6 +69,10 @@ func TestEncryptDecrypt(t *testing.T) { assert.NoError(t, err) assert.Equal(t, 0, exp.Cmp(ret), "wrong decryption ", ret, " is not ", exp) + + cypher = new(big.Int).Set(privateKey.N) + _, err = privateKey.Decrypt(cypher) + assert.Error(t, err) } func TestHomoMul(t *testing.T) { diff --git a/crypto/schnorr/schnorr_proof.go b/crypto/schnorr/schnorr_proof.go index 129509ab..3a4b6aa8 100644 --- a/crypto/schnorr/schnorr_proof.go +++ b/crypto/schnorr/schnorr_proof.go @@ -10,9 +10,8 @@ import ( "errors" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" ) type ( @@ -28,20 +27,21 @@ type ( ) // NewZKProof constructs a new Schnorr ZK proof of knowledge of the discrete logarithm (GG18Spec Fig. 16) -func NewZKProof(x *big.Int, X *crypto.ECPoint) (*ZKProof, error) { +func NewZKProof(Session []byte, x *big.Int, X *crypto.ECPoint) (*ZKProof, error) { if x == nil || X == nil || !X.ValidateBasic() { return nil, errors.New("ZKProof constructor received nil or invalid value(s)") } - ecParams := tss.EC().Params() + ec := X.Curve() + ecParams := ec.Params() q := ecParams.N - g := crypto.NewECPointNoCurveCheck(tss.EC(), ecParams.Gx, ecParams.Gy) // already on the curve. + g := crypto.NewECPointNoCurveCheck(ec, ecParams.Gx, ecParams.Gy) // already on the curve. a := common.GetRandomPositiveInt(q) - alpha := crypto.ScalarBaseMult(tss.EC(), a) + alpha := crypto.ScalarBaseMult(ec, a) var c *big.Int { - cHash := common.SHA512_256i(X.X(), X.Y(), g.X(), g.Y(), alpha.X(), alpha.Y()) + cHash := common.SHA512_256i_TAGGED(Session, X.X(), X.Y(), g.X(), g.Y(), alpha.X(), alpha.Y()) c = common.RejectionSample(q, cHash) } t := new(big.Int).Mul(c, x) @@ -51,29 +51,27 @@ func NewZKProof(x *big.Int, X *crypto.ECPoint) (*ZKProof, error) { } // NewZKProof verifies a new Schnorr ZK proof of knowledge of the discrete logarithm (GG18Spec Fig. 16) -func (pf *ZKProof) Verify(X *crypto.ECPoint) bool { +func (pf *ZKProof) Verify(Session []byte, X *crypto.ECPoint) bool { if pf == nil || !pf.ValidateBasic() { return false } - ecParams := tss.EC().Params() + ec := X.Curve() + ecParams := ec.Params() q := ecParams.N - g := crypto.NewECPointNoCurveCheck(tss.EC(), ecParams.Gx, ecParams.Gy) + g := crypto.NewECPointNoCurveCheck(ec, ecParams.Gx, ecParams.Gy) var c *big.Int { - cHash := common.SHA512_256i(X.X(), X.Y(), g.X(), g.Y(), pf.Alpha.X(), pf.Alpha.Y()) + cHash := common.SHA512_256i_TAGGED(Session, X.X(), X.Y(), g.X(), g.Y(), pf.Alpha.X(), pf.Alpha.Y()) c = common.RejectionSample(q, cHash) } - tG := crypto.ScalarBaseMult(tss.EC(), pf.T) + tG := crypto.ScalarBaseMult(ec, pf.T) Xc := X.ScalarMult(c) aXc, err := pf.Alpha.Add(Xc) if err != nil { return false } - if aXc.X().Cmp(tG.X()) != 0 || aXc.Y().Cmp(tG.Y()) != 0 { - return false - } - return true + return aXc.X().Cmp(tG.X()) == 0 && aXc.Y().Cmp(tG.Y()) == 0 } func (pf *ZKProof) ValidateBasic() bool { @@ -81,22 +79,23 @@ func (pf *ZKProof) ValidateBasic() bool { } // NewZKProof constructs a new Schnorr ZK proof of knowledge s_i, l_i such that V_i = R^s_i, g^l_i (GG18Spec Fig. 17) -func NewZKVProof(V, R *crypto.ECPoint, s, l *big.Int) (*ZKVProof, error) { +func NewZKVProof(Session []byte, V, R *crypto.ECPoint, s, l *big.Int) (*ZKVProof, error) { if V == nil || R == nil || s == nil || l == nil || !V.ValidateBasic() || !R.ValidateBasic() { return nil, errors.New("ZKVProof constructor received nil value(s)") } - ecParams := tss.EC().Params() + ec := V.Curve() + ecParams := ec.Params() q := ecParams.N - g := crypto.NewECPointNoCurveCheck(tss.EC(), ecParams.Gx, ecParams.Gy) + g := crypto.NewECPointNoCurveCheck(ec, ecParams.Gx, ecParams.Gy) a, b := common.GetRandomPositiveInt(q), common.GetRandomPositiveInt(q) aR := R.ScalarMult(a) - bG := crypto.ScalarBaseMult(tss.EC(), b) + bG := crypto.ScalarBaseMult(ec, b) alpha, _ := aR.Add(bG) // already on the curve. var c *big.Int { - cHash := common.SHA512_256i(V.X(), V.Y(), R.X(), R.Y(), g.X(), g.Y(), alpha.X(), alpha.Y()) + cHash := common.SHA512_256i_TAGGED(Session, V.X(), V.Y(), R.X(), R.Y(), g.X(), g.Y(), alpha.X(), alpha.Y()) c = common.RejectionSample(q, cHash) } modQ := common.ModInt(q) @@ -106,21 +105,22 @@ func NewZKVProof(V, R *crypto.ECPoint, s, l *big.Int) (*ZKVProof, error) { return &ZKVProof{Alpha: alpha, T: t, U: u}, nil } -func (pf *ZKVProof) Verify(V, R *crypto.ECPoint) bool { +func (pf *ZKVProof) Verify(Session []byte, V, R *crypto.ECPoint) bool { if pf == nil || !pf.ValidateBasic() { return false } - ecParams := tss.EC().Params() + ec := V.Curve() + ecParams := ec.Params() q := ecParams.N - g := crypto.NewECPointNoCurveCheck(tss.EC(), ecParams.Gx, ecParams.Gy) + g := crypto.NewECPointNoCurveCheck(ec, ecParams.Gx, ecParams.Gy) var c *big.Int { - cHash := common.SHA512_256i(V.X(), V.Y(), R.X(), R.Y(), g.X(), g.Y(), pf.Alpha.X(), pf.Alpha.Y()) + cHash := common.SHA512_256i_TAGGED(Session, V.X(), V.Y(), R.X(), R.Y(), g.X(), g.Y(), pf.Alpha.X(), pf.Alpha.Y()) c = common.RejectionSample(q, cHash) } tR := R.ScalarMult(pf.T) - uG := crypto.ScalarBaseMult(tss.EC(), pf.U) + uG := crypto.ScalarBaseMult(ec, pf.U) tRuG, _ := tR.Add(uG) // already on the curve. Vc := V.ScalarMult(c) @@ -128,10 +128,7 @@ func (pf *ZKVProof) Verify(V, R *crypto.ECPoint) bool { if err != nil { return false } - if tRuG.X().Cmp(aVc.X()) != 0 || tRuG.Y().Cmp(aVc.Y()) != 0 { - return false - } - return true + return tRuG.X().Cmp(aVc.X()) == 0 && tRuG.Y().Cmp(aVc.Y()) == 0 } func (pf *ZKVProof) ValidateBasic() bool { diff --git a/crypto/schnorr/schnorr_proof_test.go b/crypto/schnorr/schnorr_proof_test.go index b097f93a..fbf633ea 100644 --- a/crypto/schnorr/schnorr_proof_test.go +++ b/crypto/schnorr/schnorr_proof_test.go @@ -11,17 +11,21 @@ import ( "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - . "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + . "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/tss" +) + +var ( + Session = []byte("session") ) func TestSchnorrProof(t *testing.T) { q := tss.EC().Params().N u := common.GetRandomPositiveInt(q) uG := crypto.ScalarBaseMult(tss.EC(), u) - proof, _ := NewZKProof(u, uG) + proof, _ := NewZKProof(Session, u, uG) assert.True(t, proof.Alpha.IsOnCurve()) assert.NotZero(t, proof.Alpha.X()) @@ -34,8 +38,8 @@ func TestSchnorrProofVerify(t *testing.T) { u := common.GetRandomPositiveInt(q) X := crypto.ScalarBaseMult(tss.EC(), u) - proof, _ := NewZKProof(u, X) - res := proof.Verify(X) + proof, _ := NewZKProof(Session, u, X) + res := proof.Verify(Session, X) assert.True(t, res, "verify result must be true") } @@ -47,8 +51,8 @@ func TestSchnorrProofVerifyBadX(t *testing.T) { X := crypto.ScalarBaseMult(tss.EC(), u) X2 := crypto.ScalarBaseMult(tss.EC(), u2) - proof, _ := NewZKProof(u2, X2) - res := proof.Verify(X) + proof, _ := NewZKProof(Session, u2, X2) + res := proof.Verify(Session, X) assert.False(t, res, "verify result must be false") } @@ -63,8 +67,8 @@ func TestSchnorrVProofVerify(t *testing.T) { lG := crypto.ScalarBaseMult(tss.EC(), l) V, _ := Rs.Add(lG) - proof, _ := NewZKVProof(V, R, s, l) - res := proof.Verify(V, R) + proof, _ := NewZKVProof(Session, V, R, s, l) + res := proof.Verify(Session, V, R) assert.True(t, res, "verify result must be true") } @@ -78,10 +82,10 @@ func TestSchnorrVProofVerifyBadPartialV(t *testing.T) { Rs := R.ScalarMult(s) V := Rs - proof, _ := NewZKVProof(V, R, s, l) - res := proof.Verify(V, R) + proof, _ := NewZKVProof(Session, V, R, s, l) + res := proof.Verify(Session, V, R) - assert.False(t, res, "verify result must be true") + assert.False(t, res, "verify result must be false") } func TestSchnorrVProofVerifyBadS(t *testing.T) { @@ -95,8 +99,8 @@ func TestSchnorrVProofVerifyBadS(t *testing.T) { lG := crypto.ScalarBaseMult(tss.EC(), l) V, _ := Rs.Add(lG) - proof, _ := NewZKVProof(V, R, s2, l) - res := proof.Verify(V, R) + proof, _ := NewZKVProof(Session, V, R, s2, l) + res := proof.Verify(Session, V, R) - assert.False(t, res, "verify result must be true") + assert.False(t, res, "verify result must be false") } diff --git a/crypto/utils.go b/crypto/utils.go index 71ee5190..5448113a 100644 --- a/crypto/utils.go +++ b/crypto/utils.go @@ -10,7 +10,7 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" + "github.com/bnb-chain/tss-lib/v2/common" ) func GenerateNTildei(safePrimes [2]*big.Int) (NTildei, h1i, h2i *big.Int, err error) { diff --git a/crypto/vss/feldman_vss.go b/crypto/vss/feldman_vss.go index 1262fd1b..21c49714 100644 --- a/crypto/vss/feldman_vss.go +++ b/crypto/vss/feldman_vss.go @@ -11,13 +11,13 @@ package vss import ( + "crypto/elliptic" "errors" "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" ) type ( @@ -39,65 +39,84 @@ var ( one = big.NewInt(1) ) +// Check share ids of Shamir's Secret Sharing, return error if duplicate or 0 value found +func CheckIndexes(ec elliptic.Curve, indexes []*big.Int) ([]*big.Int, error) { + visited := make(map[string]struct{}) + for _, v := range indexes { + vMod := new(big.Int).Mod(v, ec.Params().N) + if vMod.Cmp(zero) == 0 { + return nil, errors.New("party index should not be 0") + } + vModStr := vMod.String() + if _, ok := visited[vModStr]; ok { + return nil, fmt.Errorf("duplicate indexes %s", vModStr) + } + visited[vModStr] = struct{}{} + } + return indexes, nil +} + // Returns a new array of secret shares created by Shamir's Secret Sharing Algorithm, // requiring a minimum number of shares to recreate, of length shares, from the input secret -// -func Create(threshold int, secret *big.Int, indexes []*big.Int) (Vs, Shares, error) { +func Create(ec elliptic.Curve, threshold int, secret *big.Int, indexes []*big.Int) (Vs, Shares, error) { if secret == nil || indexes == nil { return nil, nil, fmt.Errorf("vss secret or indexes == nil: %v %v", secret, indexes) } if threshold < 1 { return nil, nil, errors.New("vss threshold < 1") } + + ids, err := CheckIndexes(ec, indexes) + if err != nil { + return nil, nil, err + } + num := len(indexes) if num < threshold { return nil, nil, ErrNumSharesBelowThreshold } - poly := samplePolynomial(threshold, secret) + poly := samplePolynomial(ec, threshold, secret) poly[0] = secret // becomes sigma*G in v v := make(Vs, len(poly)) for i, ai := range poly { - v[i] = crypto.ScalarBaseMult(tss.EC(), ai) + v[i] = crypto.ScalarBaseMult(ec, ai) } shares := make(Shares, num) for i := 0; i < num; i++ { - if indexes[i].Cmp(big.NewInt(0)) == 0 { - return nil, nil, fmt.Errorf("party index should not be 0") - } - share := evaluatePolynomial(threshold, poly, indexes[i]) - shares[i] = &Share{Threshold: threshold, ID: indexes[i], Share: share} + share := evaluatePolynomial(ec, threshold, poly, ids[i]) + shares[i] = &Share{Threshold: threshold, ID: ids[i], Share: share} } return v, shares, nil } -func (share *Share) Verify(threshold int, vs Vs) bool { +func (share *Share) Verify(ec elliptic.Curve, threshold int, vs Vs) bool { if share.Threshold != threshold || vs == nil { return false } var err error - modQ := common.ModInt(tss.EC().Params().N) + modQ := common.ModInt(ec.Params().N) v, t := vs[0], one // YRO : we need to have our accumulator outside of the loop for j := 1; j <= threshold; j++ { // t = k_i^j t = modQ.Mul(t, share.ID) // v = v * v_j^t - vjt := vs[j].SetCurve(tss.EC()).ScalarMult(t) - v, err = v.SetCurve(tss.EC()).Add(vjt) + vjt := vs[j].SetCurve(ec).ScalarMult(t) + v, err = v.SetCurve(ec).Add(vjt) if err != nil { return false } } - sigmaGi := crypto.ScalarBaseMult(tss.EC(), share.Share) + sigmaGi := crypto.ScalarBaseMult(ec, share.Share) return sigmaGi.Equals(v) } -func (shares Shares) ReConstruct() (secret *big.Int, err error) { +func (shares Shares) ReConstruct(ec elliptic.Curve) (secret *big.Int, err error) { if shares != nil && shares[0].Threshold > len(shares) { return nil, ErrNumSharesBelowThreshold } - modN := common.ModInt(tss.EC().Params().N) + modN := common.ModInt(ec.Params().N) // x coords xs := make([]*big.Int, 0) @@ -125,8 +144,8 @@ func (shares Shares) ReConstruct() (secret *big.Int, err error) { return secret, nil } -func samplePolynomial(threshold int, secret *big.Int) []*big.Int { - q := tss.EC().Params().N +func samplePolynomial(ec elliptic.Curve, threshold int, secret *big.Int) []*big.Int { + q := ec.Params().N v := make([]*big.Int, threshold+1) v[0] = secret for i := 1; i <= threshold; i++ { @@ -138,10 +157,10 @@ func samplePolynomial(threshold int, secret *big.Int) []*big.Int { // Evauluates a polynomial with coefficients such that: // evaluatePolynomial([a, b, c, d], x): -// returns a + bx + cx^2 + dx^3 // -func evaluatePolynomial(threshold int, v []*big.Int, id *big.Int) (result *big.Int) { - q := tss.EC().Params().N +// returns a + bx + cx^2 + dx^3 +func evaluatePolynomial(ec elliptic.Curve, threshold int, v []*big.Int, id *big.Int) (result *big.Int) { + q := ec.Params().N modQ := common.ModInt(q) result = new(big.Int).Set(v[0]) X := big.NewInt(int64(1)) diff --git a/crypto/vss/feldman_vss_test.go b/crypto/vss/feldman_vss_test.go index ac5e736b..ef55f685 100644 --- a/crypto/vss/feldman_vss_test.go +++ b/crypto/vss/feldman_vss_test.go @@ -12,11 +12,37 @@ import ( "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - . "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + . "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) +func TestCheckIndexesDup(t *testing.T) { + indexes := make([]*big.Int, 0) + for i := 0; i < 1000; i++ { + indexes = append(indexes, common.GetRandomPositiveInt(tss.EC().Params().N)) + } + _, e := CheckIndexes(tss.EC(), indexes) + assert.NoError(t, e) + + indexes = append(indexes, indexes[99]) + _, e = CheckIndexes(tss.EC(), indexes) + assert.Error(t, e) +} + +func TestCheckIndexesZero(t *testing.T) { + indexes := make([]*big.Int, 0) + for i := 0; i < 1000; i++ { + indexes = append(indexes, common.GetRandomPositiveInt(tss.EC().Params().N)) + } + _, e := CheckIndexes(tss.EC(), indexes) + assert.NoError(t, e) + + indexes = append(indexes, tss.EC().Params().N) + _, e = CheckIndexes(tss.EC(), indexes) + assert.Error(t, e) +} + func TestCreate(t *testing.T) { num, threshold := 5, 3 @@ -27,7 +53,7 @@ func TestCreate(t *testing.T) { ids = append(ids, common.GetRandomPositiveInt(tss.EC().Params().N)) } - vs, _, err := Create(threshold, secret, ids) + vs, _, err := Create(tss.EC(), threshold, secret, ids) assert.Nil(t, err) assert.Equal(t, threshold+1, len(vs)) @@ -55,11 +81,11 @@ func TestVerify(t *testing.T) { ids = append(ids, common.GetRandomPositiveInt(tss.EC().Params().N)) } - vs, shares, err := Create(threshold, secret, ids) + vs, shares, err := Create(tss.EC(), threshold, secret, ids) assert.NoError(t, err) for i := 0; i < num; i++ { - assert.True(t, shares[i].Verify(threshold, vs)) + assert.True(t, shares[i].Verify(tss.EC(), threshold, vs)) } } @@ -73,18 +99,18 @@ func TestReconstruct(t *testing.T) { ids = append(ids, common.GetRandomPositiveInt(tss.EC().Params().N)) } - _, shares, err := Create(threshold, secret, ids) + _, shares, err := Create(tss.EC(), threshold, secret, ids) assert.NoError(t, err) - secret2, err2 := shares[:threshold-1].ReConstruct() + secret2, err2 := shares[:threshold-1].ReConstruct(tss.EC()) assert.Error(t, err2) // not enough shares to satisfy the threshold assert.Nil(t, secret2) - secret3, err3 := shares[:threshold].ReConstruct() + secret3, err3 := shares[:threshold].ReConstruct(tss.EC()) assert.NoError(t, err3) assert.NotZero(t, secret3) - secret4, err4 := shares[:num].ReConstruct() + secret4, err4 := shares[:num].ReConstruct(tss.EC()) assert.NoError(t, err4) assert.NotZero(t, secret4) } diff --git a/ecdsa/keygen/dln_verifier.go b/ecdsa/keygen/dln_verifier.go new file mode 100644 index 00000000..c6ec68d7 --- /dev/null +++ b/ecdsa/keygen/dln_verifier.go @@ -0,0 +1,73 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package keygen + +import ( + "errors" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/crypto/dlnproof" +) + +type DlnProofVerifier struct { + semaphore chan interface{} +} + +type message interface { + UnmarshalDLNProof1() (*dlnproof.Proof, error) + UnmarshalDLNProof2() (*dlnproof.Proof, error) +} + +func NewDlnProofVerifier(concurrency int) *DlnProofVerifier { + if concurrency == 0 { + panic(errors.New("NewDlnProofverifier: concurrency level must not be zero")) + } + + semaphore := make(chan interface{}, concurrency) + + return &DlnProofVerifier{ + semaphore: semaphore, + } +} + +func (dpv *DlnProofVerifier) VerifyDLNProof1( + m message, + h1, h2, n *big.Int, + onDone func(bool), +) { + dpv.semaphore <- struct{}{} + go func() { + defer func() { <-dpv.semaphore }() + + dlnProof, err := m.UnmarshalDLNProof1() + if err != nil { + onDone(false) + return + } + + onDone(dlnProof.Verify(h1, h2, n)) + }() +} + +func (dpv *DlnProofVerifier) VerifyDLNProof2( + m message, + h1, h2, n *big.Int, + onDone func(bool), +) { + dpv.semaphore <- struct{}{} + go func() { + defer func() { <-dpv.semaphore }() + + dlnProof, err := m.UnmarshalDLNProof2() + if err != nil { + onDone(false) + return + } + + onDone(dlnProof.Verify(h1, h2, n)) + }() +} diff --git a/ecdsa/keygen/dln_verifier_test.go b/ecdsa/keygen/dln_verifier_test.go new file mode 100644 index 00000000..89d76bba --- /dev/null +++ b/ecdsa/keygen/dln_verifier_test.go @@ -0,0 +1,241 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package keygen + +import ( + "math/big" + "runtime" + "testing" + + "github.com/bnb-chain/tss-lib/v2/crypto/dlnproof" +) + +func BenchmarkDlnProof_Verify(b *testing.B) { + localPartySaveData, _, err := LoadKeygenTestFixtures(1) + if err != nil { + b.Fatal(err) + } + + params := localPartySaveData[0].LocalPreParams + + proof := dlnproof.NewDLNProof( + params.H1i, + params.H2i, + params.Alpha, + params.P, + params.Q, + params.NTildei, + ) + + b.ResetTimer() + for n := 0; n < b.N; n++ { + proof.Verify(params.H1i, params.H2i, params.NTildei) + } +} + +func BenchmarkDlnVerifier_VerifyProof1(b *testing.B) { + preParams, proof := prepareProofB(b) + message := &KGRound1Message{ + Dlnproof_1: proof, + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + b.ResetTimer() + for n := 0; n < b.N; n++ { + resultChan := make(chan bool) + verifier.VerifyDLNProof1(message, preParams.H1i, preParams.H2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + <-resultChan + } +} + +func BenchmarkDlnVerifier_VerifyProof2(b *testing.B) { + preParams, proof := prepareProofB(b) + message := &KGRound1Message{ + Dlnproof_2: proof, + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + b.ResetTimer() + for n := 0; n < b.N; n++ { + resultChan := make(chan bool) + verifier.VerifyDLNProof2(message, preParams.H1i, preParams.H2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + <-resultChan + } +} + +func TestVerifyDLNProof1_Success(t *testing.T) { + preParams, proof := prepareProofT(t) + message := &KGRound1Message{ + Dlnproof_1: proof, + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + resultChan := make(chan bool) + + verifier.VerifyDLNProof1(message, preParams.H1i, preParams.H2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + + success := <-resultChan + if !success { + t.Fatal("expected positive verification") + } +} + +func TestVerifyDLNProof1_MalformedMessage(t *testing.T) { + preParams, proof := prepareProofT(t) + message := &KGRound1Message{ + Dlnproof_1: proof[:len(proof)-1], // truncate + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + resultChan := make(chan bool) + + verifier.VerifyDLNProof1(message, preParams.H1i, preParams.H2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + + success := <-resultChan + if success { + t.Fatal("expected negative verification") + } +} + +func TestVerifyDLNProof1_IncorrectProof(t *testing.T) { + preParams, proof := prepareProofT(t) + message := &KGRound1Message{ + Dlnproof_1: proof, + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + resultChan := make(chan bool) + + wrongH1i := preParams.H1i.Sub(preParams.H1i, big.NewInt(1)) + verifier.VerifyDLNProof1(message, wrongH1i, preParams.H2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + + success := <-resultChan + if success { + t.Fatal("expected negative verification") + } +} + +func TestVerifyDLNProof2_Success(t *testing.T) { + preParams, proof := prepareProofT(t) + message := &KGRound1Message{ + Dlnproof_2: proof, + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + resultChan := make(chan bool) + + verifier.VerifyDLNProof2(message, preParams.H1i, preParams.H2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + + success := <-resultChan + if !success { + t.Fatal("expected positive verification") + } +} + +func TestVerifyDLNProof2_MalformedMessage(t *testing.T) { + preParams, proof := prepareProofT(t) + message := &KGRound1Message{ + Dlnproof_2: proof[:len(proof)-1], // truncate + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + resultChan := make(chan bool) + + verifier.VerifyDLNProof2(message, preParams.H1i, preParams.H2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + + success := <-resultChan + if success { + t.Fatal("expected negative verification") + } +} + +func TestVerifyDLNProof2_IncorrectProof(t *testing.T) { + preParams, proof := prepareProofT(t) + message := &KGRound1Message{ + Dlnproof_2: proof, + } + + verifier := NewDlnProofVerifier(runtime.GOMAXPROCS(0)) + + resultChan := make(chan bool) + + wrongH2i := preParams.H2i.Add(preParams.H2i, big.NewInt(1)) + verifier.VerifyDLNProof2(message, preParams.H1i, wrongH2i, preParams.NTildei, func(result bool) { + resultChan <- result + }) + + success := <-resultChan + if success { + t.Fatal("expected negative verification") + } +} + +func prepareProofT(t *testing.T) (*LocalPreParams, [][]byte) { + preParams, serialized, err := prepareProof() + if err != nil { + t.Fatal(err) + } + + return preParams, serialized +} + +func prepareProofB(b *testing.B) (*LocalPreParams, [][]byte) { + preParams, serialized, err := prepareProof() + if err != nil { + b.Fatal(err) + } + + return preParams, serialized +} + +func prepareProof() (*LocalPreParams, [][]byte, error) { + localPartySaveData, _, err := LoadKeygenTestFixtures(1) + if err != nil { + return nil, [][]byte{}, err + } + + preParams := localPartySaveData[0].LocalPreParams + + proof := dlnproof.NewDLNProof( + preParams.H1i, + preParams.H2i, + preParams.Alpha, + preParams.P, + preParams.Q, + preParams.NTildei, + ) + + serialized, err := proof.Serialize() + if err != nil { + if err != nil { + return nil, [][]byte{}, err + } + } + + return &preParams, serialized, nil +} diff --git a/ecdsa/keygen/ecdsa-keygen.pb.go b/ecdsa/keygen/ecdsa-keygen.pb.go index e65faeae..5029072e 100644 --- a/ecdsa/keygen/ecdsa-keygen.pb.go +++ b/ecdsa/keygen/ecdsa-keygen.pb.go @@ -1,263 +1,421 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc v3.20.3 // source: protob/ecdsa-keygen.proto package keygen import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// // Represents a BROADCAST message sent during Round 1 of the ECDSA TSS keygen protocol. type KGRound1Message struct { - Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` - PaillierN []byte `protobuf:"bytes,2,opt,name=paillier_n,json=paillierN,proto3" json:"paillier_n,omitempty"` - NTilde []byte `protobuf:"bytes,3,opt,name=n_tilde,json=nTilde,proto3" json:"n_tilde,omitempty"` - H1 []byte `protobuf:"bytes,4,opt,name=h1,proto3" json:"h1,omitempty"` - H2 []byte `protobuf:"bytes,5,opt,name=h2,proto3" json:"h2,omitempty"` - Dlnproof_1 [][]byte `protobuf:"bytes,6,rep,name=dlnproof_1,json=dlnproof1,proto3" json:"dlnproof_1,omitempty"` - Dlnproof_2 [][]byte `protobuf:"bytes,7,rep,name=dlnproof_2,json=dlnproof2,proto3" json:"dlnproof_2,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *KGRound1Message) Reset() { *m = KGRound1Message{} } -func (m *KGRound1Message) String() string { return proto.CompactTextString(m) } -func (*KGRound1Message) ProtoMessage() {} -func (*KGRound1Message) Descriptor() ([]byte, []int) { - return fileDescriptor_1a2e19e981cdbb01, []int{0} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` + PaillierN []byte `protobuf:"bytes,2,opt,name=paillier_n,json=paillierN,proto3" json:"paillier_n,omitempty"` + NTilde []byte `protobuf:"bytes,3,opt,name=n_tilde,json=nTilde,proto3" json:"n_tilde,omitempty"` + H1 []byte `protobuf:"bytes,4,opt,name=h1,proto3" json:"h1,omitempty"` + H2 []byte `protobuf:"bytes,5,opt,name=h2,proto3" json:"h2,omitempty"` + Dlnproof_1 [][]byte `protobuf:"bytes,6,rep,name=dlnproof_1,json=dlnproof1,proto3" json:"dlnproof_1,omitempty"` + Dlnproof_2 [][]byte `protobuf:"bytes,7,rep,name=dlnproof_2,json=dlnproof2,proto3" json:"dlnproof_2,omitempty"` +} + +func (x *KGRound1Message) Reset() { + *x = KGRound1Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KGRound1Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KGRound1Message.Unmarshal(m, b) -} -func (m *KGRound1Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KGRound1Message.Marshal(b, m, deterministic) +func (x *KGRound1Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KGRound1Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_KGRound1Message.Merge(m, src) -} -func (m *KGRound1Message) XXX_Size() int { - return xxx_messageInfo_KGRound1Message.Size(m) -} -func (m *KGRound1Message) XXX_DiscardUnknown() { - xxx_messageInfo_KGRound1Message.DiscardUnknown(m) + +func (*KGRound1Message) ProtoMessage() {} + +func (x *KGRound1Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_KGRound1Message proto.InternalMessageInfo +// Deprecated: Use KGRound1Message.ProtoReflect.Descriptor instead. +func (*KGRound1Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_keygen_proto_rawDescGZIP(), []int{0} +} -func (m *KGRound1Message) GetCommitment() []byte { - if m != nil { - return m.Commitment +func (x *KGRound1Message) GetCommitment() []byte { + if x != nil { + return x.Commitment } return nil } -func (m *KGRound1Message) GetPaillierN() []byte { - if m != nil { - return m.PaillierN +func (x *KGRound1Message) GetPaillierN() []byte { + if x != nil { + return x.PaillierN } return nil } -func (m *KGRound1Message) GetNTilde() []byte { - if m != nil { - return m.NTilde +func (x *KGRound1Message) GetNTilde() []byte { + if x != nil { + return x.NTilde } return nil } -func (m *KGRound1Message) GetH1() []byte { - if m != nil { - return m.H1 +func (x *KGRound1Message) GetH1() []byte { + if x != nil { + return x.H1 } return nil } -func (m *KGRound1Message) GetH2() []byte { - if m != nil { - return m.H2 +func (x *KGRound1Message) GetH2() []byte { + if x != nil { + return x.H2 } return nil } -func (m *KGRound1Message) GetDlnproof_1() [][]byte { - if m != nil { - return m.Dlnproof_1 +func (x *KGRound1Message) GetDlnproof_1() [][]byte { + if x != nil { + return x.Dlnproof_1 } return nil } -func (m *KGRound1Message) GetDlnproof_2() [][]byte { - if m != nil { - return m.Dlnproof_2 +func (x *KGRound1Message) GetDlnproof_2() [][]byte { + if x != nil { + return x.Dlnproof_2 } return nil } -// // Represents a P2P message sent to each party during Round 2 of the ECDSA TSS keygen protocol. type KGRound2Message1 struct { - Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *KGRound2Message1) Reset() { *m = KGRound2Message1{} } -func (m *KGRound2Message1) String() string { return proto.CompactTextString(m) } -func (*KGRound2Message1) ProtoMessage() {} -func (*KGRound2Message1) Descriptor() ([]byte, []int) { - return fileDescriptor_1a2e19e981cdbb01, []int{1} + Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` + FacProof [][]byte `protobuf:"bytes,2,rep,name=facProof,proto3" json:"facProof,omitempty"` } -func (m *KGRound2Message1) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KGRound2Message1.Unmarshal(m, b) -} -func (m *KGRound2Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KGRound2Message1.Marshal(b, m, deterministic) +func (x *KGRound2Message1) Reset() { + *x = KGRound2Message1{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KGRound2Message1) XXX_Merge(src proto.Message) { - xxx_messageInfo_KGRound2Message1.Merge(m, src) + +func (x *KGRound2Message1) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KGRound2Message1) XXX_Size() int { - return xxx_messageInfo_KGRound2Message1.Size(m) + +func (*KGRound2Message1) ProtoMessage() {} + +func (x *KGRound2Message1) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *KGRound2Message1) XXX_DiscardUnknown() { - xxx_messageInfo_KGRound2Message1.DiscardUnknown(m) + +// Deprecated: Use KGRound2Message1.ProtoReflect.Descriptor instead. +func (*KGRound2Message1) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_keygen_proto_rawDescGZIP(), []int{1} } -var xxx_messageInfo_KGRound2Message1 proto.InternalMessageInfo +func (x *KGRound2Message1) GetShare() []byte { + if x != nil { + return x.Share + } + return nil +} -func (m *KGRound2Message1) GetShare() []byte { - if m != nil { - return m.Share +func (x *KGRound2Message1) GetFacProof() [][]byte { + if x != nil { + return x.FacProof } return nil } -// // Represents a BROADCAST message sent to each party during Round 2 of the ECDSA TSS keygen protocol. type KGRound2Message2 struct { - DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *KGRound2Message2) Reset() { *m = KGRound2Message2{} } -func (m *KGRound2Message2) String() string { return proto.CompactTextString(m) } -func (*KGRound2Message2) ProtoMessage() {} -func (*KGRound2Message2) Descriptor() ([]byte, []int) { - return fileDescriptor_1a2e19e981cdbb01, []int{2} + DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` + ModProof [][]byte `protobuf:"bytes,2,rep,name=modProof,proto3" json:"modProof,omitempty"` } -func (m *KGRound2Message2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KGRound2Message2.Unmarshal(m, b) -} -func (m *KGRound2Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KGRound2Message2.Marshal(b, m, deterministic) +func (x *KGRound2Message2) Reset() { + *x = KGRound2Message2{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KGRound2Message2) XXX_Merge(src proto.Message) { - xxx_messageInfo_KGRound2Message2.Merge(m, src) + +func (x *KGRound2Message2) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KGRound2Message2) XXX_Size() int { - return xxx_messageInfo_KGRound2Message2.Size(m) + +func (*KGRound2Message2) ProtoMessage() {} + +func (x *KGRound2Message2) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *KGRound2Message2) XXX_DiscardUnknown() { - xxx_messageInfo_KGRound2Message2.DiscardUnknown(m) + +// Deprecated: Use KGRound2Message2.ProtoReflect.Descriptor instead. +func (*KGRound2Message2) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_keygen_proto_rawDescGZIP(), []int{2} } -var xxx_messageInfo_KGRound2Message2 proto.InternalMessageInfo +func (x *KGRound2Message2) GetDeCommitment() [][]byte { + if x != nil { + return x.DeCommitment + } + return nil +} -func (m *KGRound2Message2) GetDeCommitment() [][]byte { - if m != nil { - return m.DeCommitment +func (x *KGRound2Message2) GetModProof() [][]byte { + if x != nil { + return x.ModProof } return nil } -// // Represents a BROADCAST message sent to each party during Round 3 of the ECDSA TSS keygen protocol. type KGRound3Message struct { - PaillierProof [][]byte `protobuf:"bytes,1,rep,name=paillier_proof,json=paillierProof,proto3" json:"paillier_proof,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *KGRound3Message) Reset() { *m = KGRound3Message{} } -func (m *KGRound3Message) String() string { return proto.CompactTextString(m) } -func (*KGRound3Message) ProtoMessage() {} -func (*KGRound3Message) Descriptor() ([]byte, []int) { - return fileDescriptor_1a2e19e981cdbb01, []int{3} + PaillierProof [][]byte `protobuf:"bytes,1,rep,name=paillier_proof,json=paillierProof,proto3" json:"paillier_proof,omitempty"` } -func (m *KGRound3Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KGRound3Message.Unmarshal(m, b) -} -func (m *KGRound3Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KGRound3Message.Marshal(b, m, deterministic) -} -func (m *KGRound3Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_KGRound3Message.Merge(m, src) +func (x *KGRound3Message) Reset() { + *x = KGRound3Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KGRound3Message) XXX_Size() int { - return xxx_messageInfo_KGRound3Message.Size(m) + +func (x *KGRound3Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KGRound3Message) XXX_DiscardUnknown() { - xxx_messageInfo_KGRound3Message.DiscardUnknown(m) + +func (*KGRound3Message) ProtoMessage() {} + +func (x *KGRound3Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_keygen_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_KGRound3Message proto.InternalMessageInfo +// Deprecated: Use KGRound3Message.ProtoReflect.Descriptor instead. +func (*KGRound3Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_keygen_proto_rawDescGZIP(), []int{3} +} -func (m *KGRound3Message) GetPaillierProof() [][]byte { - if m != nil { - return m.PaillierProof +func (x *KGRound3Message) GetPaillierProof() [][]byte { + if x != nil { + return x.PaillierProof } return nil } -func init() { - proto.RegisterType((*KGRound1Message)(nil), "KGRound1Message") - proto.RegisterType((*KGRound2Message1)(nil), "KGRound2Message1") - proto.RegisterType((*KGRound2Message2)(nil), "KGRound2Message2") - proto.RegisterType((*KGRound3Message)(nil), "KGRound3Message") -} - -func init() { proto.RegisterFile("protob/ecdsa-keygen.proto", fileDescriptor_1a2e19e981cdbb01) } - -var fileDescriptor_1a2e19e981cdbb01 = []byte{ - // 263 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0x41, 0x4b, 0xc3, 0x40, - 0x10, 0x85, 0x49, 0x6a, 0x53, 0x1c, 0xd2, 0x28, 0x8b, 0xe0, 0x7a, 0x50, 0x4a, 0x44, 0xe8, 0x45, - 0xcb, 0x6e, 0x0f, 0x7a, 0xd6, 0x83, 0x07, 0x51, 0xa4, 0x78, 0xf2, 0x12, 0xd2, 0xee, 0xd8, 0x04, - 0x93, 0xdd, 0x90, 0xc4, 0x83, 0xbf, 0xd0, 0xbf, 0x25, 0x3b, 0xd9, 0x04, 0x83, 0xc7, 0xf7, 0xbd, - 0x64, 0xd8, 0xf7, 0xc1, 0x59, 0x55, 0x9b, 0xd6, 0x6c, 0x57, 0xb8, 0x53, 0x4d, 0x7a, 0xfd, 0x89, - 0xdf, 0x7b, 0xd4, 0x37, 0xc4, 0xe2, 0x1f, 0x0f, 0x8e, 0x9e, 0x1e, 0x37, 0xe6, 0x4b, 0x2b, 0xf1, - 0x8c, 0x4d, 0x93, 0xee, 0x91, 0x5d, 0x00, 0xec, 0x4c, 0x59, 0xe6, 0x6d, 0x89, 0xba, 0xe5, 0xde, - 0xc2, 0x5b, 0x86, 0x9b, 0x3f, 0x84, 0x9d, 0x03, 0x54, 0x69, 0x5e, 0x14, 0x39, 0xd6, 0x89, 0xe6, - 0x3e, 0xf5, 0x87, 0x3d, 0x79, 0x61, 0xa7, 0x30, 0xd3, 0x49, 0x9b, 0x17, 0x0a, 0xf9, 0x84, 0xba, - 0x40, 0xbf, 0xd9, 0xc4, 0x22, 0xf0, 0x33, 0xc1, 0x0f, 0x88, 0xf9, 0x99, 0xa0, 0x2c, 0xf9, 0xd4, - 0x65, 0x69, 0xef, 0xaa, 0x42, 0x57, 0xb5, 0x31, 0x1f, 0x89, 0xe0, 0xc1, 0x62, 0x62, 0xef, 0xf6, - 0x44, 0x8c, 0x6a, 0xc9, 0x67, 0xe3, 0x5a, 0xc6, 0x4b, 0x38, 0x76, 0x43, 0xa4, 0x1b, 0x22, 0xd8, - 0x09, 0x4c, 0x9b, 0x2c, 0xad, 0xd1, 0x8d, 0xe8, 0x42, 0x7c, 0xfb, 0xef, 0x4b, 0xc9, 0x2e, 0x61, - 0xae, 0x30, 0x19, 0xcd, 0xb6, 0xf7, 0x43, 0x85, 0x0f, 0x03, 0x8b, 0xef, 0x06, 0x57, 0xeb, 0xde, - 0xd5, 0x15, 0x44, 0x83, 0x0b, 0x7a, 0x88, 0xfb, 0x71, 0xde, 0xd3, 0x57, 0x0b, 0xef, 0xa3, 0xf7, - 0x90, 0xe4, 0xaf, 0x3a, 0xf9, 0xdb, 0x80, 0xec, 0xaf, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe9, - 0x13, 0x63, 0x79, 0x9a, 0x01, 0x00, 0x00, +var File_protob_ecdsa_keygen_proto protoreflect.FileDescriptor + +var file_protob_ecdsa_keygen_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x65, 0x63, 0x64, 0x73, 0x61, 0x2d, 0x6b, + 0x65, 0x79, 0x67, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x62, 0x69, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x65, 0x63, 0x64, 0x73, + 0x61, 0x2e, 0x6b, 0x65, 0x79, 0x67, 0x65, 0x6e, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x4b, 0x47, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x61, 0x69, 0x6c, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x09, 0x70, 0x61, 0x69, 0x6c, 0x6c, 0x69, 0x65, 0x72, 0x4e, 0x12, 0x17, 0x0a, 0x07, 0x6e, + 0x5f, 0x74, 0x69, 0x6c, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6e, 0x54, + 0x69, 0x6c, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x02, 0x68, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x02, 0x68, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, 0x6f, 0x66, + 0x5f, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, + 0x6f, 0x66, 0x31, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, + 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, 0x6f, + 0x66, 0x32, 0x22, 0x44, 0x0a, 0x10, 0x4b, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x61, 0x63, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, + 0x66, 0x61, 0x63, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x53, 0x0a, 0x10, 0x4b, 0x47, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x12, 0x23, 0x0a, 0x0d, + 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x64, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x38, 0x0a, + 0x0f, 0x4b, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x33, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x69, 0x6c, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, + 0x6f, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x61, 0x69, 0x6c, 0x6c, 0x69, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x0e, 0x5a, 0x0c, 0x65, 0x63, 0x64, 0x73, 0x61, + 0x2f, 0x6b, 0x65, 0x79, 0x67, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protob_ecdsa_keygen_proto_rawDescOnce sync.Once + file_protob_ecdsa_keygen_proto_rawDescData = file_protob_ecdsa_keygen_proto_rawDesc +) + +func file_protob_ecdsa_keygen_proto_rawDescGZIP() []byte { + file_protob_ecdsa_keygen_proto_rawDescOnce.Do(func() { + file_protob_ecdsa_keygen_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_ecdsa_keygen_proto_rawDescData) + }) + return file_protob_ecdsa_keygen_proto_rawDescData +} + +var file_protob_ecdsa_keygen_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_protob_ecdsa_keygen_proto_goTypes = []interface{}{ + (*KGRound1Message)(nil), // 0: binance.tsslib.ecdsa.keygen.KGRound1Message + (*KGRound2Message1)(nil), // 1: binance.tsslib.ecdsa.keygen.KGRound2Message1 + (*KGRound2Message2)(nil), // 2: binance.tsslib.ecdsa.keygen.KGRound2Message2 + (*KGRound3Message)(nil), // 3: binance.tsslib.ecdsa.keygen.KGRound3Message +} +var file_protob_ecdsa_keygen_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_protob_ecdsa_keygen_proto_init() } +func file_protob_ecdsa_keygen_proto_init() { + if File_protob_ecdsa_keygen_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_ecdsa_keygen_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KGRound1Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_keygen_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KGRound2Message1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_keygen_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KGRound2Message2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_keygen_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KGRound3Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_ecdsa_keygen_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_ecdsa_keygen_proto_goTypes, + DependencyIndexes: file_protob_ecdsa_keygen_proto_depIdxs, + MessageInfos: file_protob_ecdsa_keygen_proto_msgTypes, + }.Build() + File_protob_ecdsa_keygen_proto = out.File + file_protob_ecdsa_keygen_proto_rawDesc = nil + file_protob_ecdsa_keygen_proto_goTypes = nil + file_protob_ecdsa_keygen_proto_depIdxs = nil } diff --git a/ecdsa/keygen/local_party.go b/ecdsa/keygen/local_party.go index 0e1ab190..68e2b772 100644 --- a/ecdsa/keygen/local_party.go +++ b/ecdsa/keygen/local_party.go @@ -11,10 +11,10 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Implements Party @@ -32,7 +32,7 @@ type ( // outbound messaging out chan<- tss.Message - end chan<- LocalPartySaveData + end chan<- *LocalPartySaveData } localMessageStore struct { @@ -49,6 +49,8 @@ type ( ui *big.Int // used for tests KGCs []cmt.HashCommitment vs vss.Vs + ssid []byte + ssidNonce *big.Int shares vss.Shares deCommitPolyG cmt.HashDeCommitment } @@ -58,7 +60,7 @@ type ( func NewLocalParty( params *tss.Parameters, out chan<- tss.Message, - end chan<- LocalPartySaveData, + end chan<- *LocalPartySaveData, optionalPreParams ...LocalPreParams, ) tss.Party { partyCount := params.PartyCount() diff --git a/ecdsa/keygen/local_party_test.go b/ecdsa/keygen/local_party_test.go index 517ae451..ac9d4e2a 100644 --- a/ecdsa/keygen/local_party_test.go +++ b/ecdsa/keygen/local_party_test.go @@ -20,13 +20,13 @@ import ( "github.com/ipfs/go-log" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/dlnproof" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/dlnproof" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -46,7 +46,7 @@ func TestStartRound1Paillier(t *testing.T) { pIDs := tss.GenerateTestPartyIDs(1) p2pCtx := tss.NewPeerContext(pIDs) threshold := 1 - params := tss.NewParameters(p2pCtx, pIDs[0], len(pIDs), threshold) + params := tss.NewParameters(tss.EC(), p2pCtx, pIDs[0], len(pIDs), threshold) fixtures, pIDs, err := LoadKeygenTestFixtures(testParticipants) if err != nil { @@ -86,7 +86,7 @@ func TestFinishAndSaveH1H2(t *testing.T) { pIDs := tss.GenerateTestPartyIDs(1) p2pCtx := tss.NewPeerContext(pIDs) threshold := 1 - params := tss.NewParameters(p2pCtx, pIDs[0], len(pIDs), threshold) + params := tss.NewParameters(tss.EC(), p2pCtx, pIDs[0], len(pIDs), threshold) fixtures, pIDs, err := LoadKeygenTestFixtures(testParticipants) if err != nil { @@ -133,7 +133,7 @@ func TestBadMessageCulprits(t *testing.T) { pIDs := tss.GenerateTestPartyIDs(2) p2pCtx := tss.NewPeerContext(pIDs) - params := tss.NewParameters(p2pCtx, pIDs[0], len(pIDs), 1) + params := tss.NewParameters(tss.S256(), p2pCtx, pIDs[0], len(pIDs), 1) fixtures, pIDs, err := LoadKeygenTestFixtures(testParticipants) if err != nil { @@ -162,7 +162,7 @@ func TestBadMessageCulprits(t *testing.T) { assert.Equal(t, 1, len(err2.Culprits())) assert.Equal(t, pIDs[1], err2.Culprits()[0]) assert.Equal(t, - "task ecdsa-keygen, party {0,P[1]}, round 1, culprits [{1,2}]: message failed ValidateBasic: Type: binance.tss-lib.ecdsa.keygen.KGRound1Message, From: {1,2}, To: all", + "task ecdsa-keygen, party {0,P[1]}, round 1, culprits [{1,2}]: message failed ValidateBasic: Type: binance.tsslib.ecdsa.keygen.KGRound1Message, From: {1,2}, To: all", err2.Error()) } @@ -183,7 +183,7 @@ func TestE2EConcurrentAndSaveFixtures(t *testing.T) { errCh := make(chan *tss.Error, len(pIDs)) outCh := make(chan tss.Message, len(pIDs)) - endCh := make(chan LocalPartySaveData, len(pIDs)) + endCh := make(chan *LocalPartySaveData, len(pIDs)) updater := test.SharedPartyUpdater @@ -192,7 +192,11 @@ func TestE2EConcurrentAndSaveFixtures(t *testing.T) { // init the parties for i := 0; i < len(pIDs); i++ { var P *LocalParty - params := tss.NewParameters(p2pCtx, pIDs[i], len(pIDs), threshold) + params := tss.NewParameters(tss.S256(), p2pCtx, pIDs[i], len(pIDs), threshold) + // do not use in untrusted setting + params.SetNoProofMod() + // do not use in untrusted setting + params.SetNoProofFac() if i < len(fixtures) { P = NewLocalParty(params, outCh, endCh, fixtures[i].LocalPreParams).(*LocalParty) } else { @@ -239,7 +243,7 @@ keygen: // .. here comes a workaround to recover this party's index (it was removed from save data) index, err := save.OriginalIndex() assert.NoErrorf(t, err, "should not be an error getting a party's index from save data") - tryWriteTestFixtureFile(t, index, save) + tryWriteTestFixtureFile(t, index, *save) atomic.AddInt32(&ended, 1) if atomic.LoadInt32(&ended) == int32(len(pIDs)) { @@ -249,10 +253,7 @@ keygen: u := new(big.Int) for j, Pj := range parties { pShares := make(vss.Shares, 0) - for j2, P := range parties { - if j2 == j { - continue - } + for _, P := range parties { vssMsgs := P.temp.kgRound2Message1s share := vssMsgs[j].Content().(*KGRound2Message1).Share shareStruct := &vss.Share{ @@ -262,7 +263,7 @@ keygen: } pShares = append(pShares, shareStruct) } - uj, err := pShares[:threshold+1].ReConstruct() + uj, err := pShares[:threshold+1].ReConstruct(tss.S256()) assert.NoError(t, err, "vss.ReConstruct should not throw error") // uG test: u*G[j] == V[0] @@ -280,7 +281,7 @@ keygen: { badShares := pShares[:threshold] badShares[len(badShares)-1].Share.Set(big.NewInt(0)) - uj, err := pShares[:threshold].ReConstruct() + uj, err := pShares[:threshold].ReConstruct(tss.S256()) assert.NoError(t, err) assert.NotEqual(t, parties[j].temp.ui, uj) BigXjX, BigXjY := tss.EC().ScalarBaseMult(uj.Bytes()) diff --git a/ecdsa/keygen/messages.go b/ecdsa/keygen/messages.go index 17296ca1..b4d6062c 100644 --- a/ecdsa/keygen/messages.go +++ b/ecdsa/keygen/messages.go @@ -7,16 +7,16 @@ package keygen import ( + "github.com/bnb-chain/tss-lib/v2/crypto/facproof" + "github.com/bnb-chain/tss-lib/v2/crypto/modproof" "math/big" - "github.com/golang/protobuf/proto" - - "github.com/binance-chain/tss-lib/common" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/dlnproof" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/dlnproof" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) // These messages were generated from Protocol Buffers definitions into ecdsa-keygen.pb.go @@ -32,13 +32,6 @@ var ( } ) -func init() { - proto.RegisterType((*KGRound1Message)(nil), tss.ECDSAProtoNamePrefix+"keygen.KGRound1Message") - proto.RegisterType((*KGRound2Message1)(nil), tss.ECDSAProtoNamePrefix+"keygen.KGRound2Message1") - proto.RegisterType((*KGRound2Message2)(nil), tss.ECDSAProtoNamePrefix+"keygen.KGRound2Message2") - proto.RegisterType((*KGRound3Message)(nil), tss.ECDSAProtoNamePrefix+"keygen.KGRound3Message") -} - // ----- // func NewKGRound1Message( @@ -118,14 +111,17 @@ func (m *KGRound1Message) UnmarshalDLNProof2() (*dlnproof.Proof, error) { func NewKGRound2Message1( to, from *tss.PartyID, share *vss.Share, + proof *facproof.ProofFac, ) tss.ParsedMessage { meta := tss.MessageRouting{ From: from, To: []*tss.PartyID{to}, IsBroadcast: false, } + proofBzs := proof.Bytes() content := &KGRound2Message1{ - Share: share.Share.Bytes(), + Share: share.Share.Bytes(), + FacProof: proofBzs[:], } msg := tss.NewMessageWrapper(meta, content) return tss.NewMessage(meta, content, msg) @@ -134,25 +130,34 @@ func NewKGRound2Message1( func (m *KGRound2Message1) ValidateBasic() bool { return m != nil && common.NonEmptyBytes(m.GetShare()) + // This is commented for backward compatibility, which msg has no proof + // && common.NonEmptyMultiBytes(m.GetFacProof(), facproof.ProofFacBytesParts) } func (m *KGRound2Message1) UnmarshalShare() *big.Int { return new(big.Int).SetBytes(m.Share) } +func (m *KGRound2Message1) UnmarshalFacProof() (*facproof.ProofFac, error) { + return facproof.NewProofFromBytes(m.GetFacProof()) +} + // ----- // func NewKGRound2Message2( from *tss.PartyID, deCommitment cmt.HashDeCommitment, + proof *modproof.ProofMod, ) tss.ParsedMessage { meta := tss.MessageRouting{ From: from, IsBroadcast: true, } dcBzs := common.BigIntsToBytes(deCommitment) + proofBzs := proof.Bytes() content := &KGRound2Message2{ DeCommitment: dcBzs, + ModProof: proofBzs[:], } msg := tss.NewMessageWrapper(meta, content) return tss.NewMessage(meta, content, msg) @@ -161,6 +166,8 @@ func NewKGRound2Message2( func (m *KGRound2Message2) ValidateBasic() bool { return m != nil && common.NonEmptyMultiBytes(m.GetDeCommitment()) + // This is commented for backward compatibility, which msg has no proof + // && common.NonEmptyMultiBytes(m.GetModProof(), modproof.ProofModBytesParts) } func (m *KGRound2Message2) UnmarshalDeCommitment() []*big.Int { @@ -168,6 +175,10 @@ func (m *KGRound2Message2) UnmarshalDeCommitment() []*big.Int { return cmt.NewHashDeCommitmentFromBytes(deComBzs) } +func (m *KGRound2Message2) UnmarshalModProof() (*modproof.ProofMod, error) { + return modproof.NewProofFromBytes(m.GetModProof()) +} + // ----- // func NewKGRound3Message( diff --git a/ecdsa/keygen/prepare.go b/ecdsa/keygen/prepare.go index 8b162d7b..cfbc127f 100644 --- a/ecdsa/keygen/prepare.go +++ b/ecdsa/keygen/prepare.go @@ -7,13 +7,14 @@ package keygen import ( + "context" "errors" "math/big" "runtime" "time" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" ) const ( @@ -23,12 +24,25 @@ const ( safePrimeBitLen = 1024 // Ticker for printing log statements while generating primes/modulus logProgressTickInterval = 8 * time.Second + // Safe big len using random for ssid + SafeBitLen = 1024 ) // GeneratePreParams finds two safe primes and computes the Paillier secret required for the protocol. // This can be a time consuming process so it is recommended to do it out-of-band. // If not specified, a concurrency value equal to the number of available CPU cores will be used. +// If pre-parameters could not be generated before the timeout, an error is returned. func GeneratePreParams(timeout time.Duration, optionalConcurrency ...int) (*LocalPreParams, error) { + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + return GeneratePreParamsWithContext(ctx, optionalConcurrency...) +} + +// GeneratePreParams finds two safe primes and computes the Paillier secret required for the protocol. +// This can be a time consuming process so it is recommended to do it out-of-band. +// If not specified, a concurrency value equal to the number of available CPU cores will be used. +// If pre-parameters could not be generated before the context is done, an error is returned. +func GeneratePreParamsWithContext(ctx context.Context, optionalConcurrency ...int) (*LocalPreParams, error) { var concurrency int if 0 < len(optionalConcurrency) { if 1 < len(optionalConcurrency) { @@ -51,7 +65,7 @@ func GeneratePreParams(timeout time.Duration, optionalConcurrency ...int) (*Loca common.Logger.Info("generating the Paillier modulus, please wait...") start := time.Now() // more concurrency weight is assigned here because the paillier primes have a requirement of having "large" P-Q - PiPaillierSk, _, err := paillier.GenerateKeyPair(paillierModulusLen, timeout, concurrency*2) + PiPaillierSk, _, err := paillier.GenerateKeyPair(ctx, paillierModulusLen, concurrency*2) if err != nil { ch <- nil return @@ -65,7 +79,7 @@ func GeneratePreParams(timeout time.Duration, optionalConcurrency ...int) (*Loca var err error common.Logger.Info("generating the safe primes for the signing proofs, please wait...") start := time.Now() - sgps, err := common.GetRandomSafePrimesConcurrent(safePrimeBitLen, 2, timeout, concurrency) + sgps, err := common.GetRandomSafePrimesConcurrent(ctx, safePrimeBitLen, 2, concurrency) if err != nil { ch <- nil return diff --git a/ecdsa/keygen/prepare_test.go b/ecdsa/keygen/prepare_test.go new file mode 100644 index 00000000..f00e8e85 --- /dev/null +++ b/ecdsa/keygen/prepare_test.go @@ -0,0 +1,53 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + +package keygen + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestGeneratePreParamsTimeout(t *testing.T) { + start := time.Now() + preParams, err := GeneratePreParams(5*time.Millisecond, 1) + + assert.Nil(t, preParams) + assert.NotNil(t, err) + assert.WithinDuration(t, start, time.Now(), 1*time.Second) +} + +func TestGeneratePreParamsWithContextTimeout(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Millisecond) + defer cancel() + + start := time.Now() + preParams, err := GeneratePreParamsWithContext(ctx, 1) + + assert.Nil(t, preParams) + assert.NotNil(t, err) + assert.WithinDuration(t, start, time.Now(), 1*time.Second) +} + +func TestGenerateWithContext(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 20*time.Minute) + defer cancel() + + preParams, err := GeneratePreParamsWithContext(ctx, 1) + assert.NotNil(t, preParams) + assert.Nil(t, err) + assert.NotNil(t, preParams.PaillierSK) + assert.NotNil(t, preParams.NTildei) + assert.NotNil(t, preParams.H1i) + assert.NotNil(t, preParams.H2i) + assert.NotNil(t, preParams.Alpha) + assert.NotNil(t, preParams.Beta) + assert.NotNil(t, preParams.P) + assert.NotNil(t, preParams.Q) +} diff --git a/ecdsa/keygen/round_1.go b/ecdsa/keygen/round_1.go index 16d596f1..5e66f681 100644 --- a/ecdsa/keygen/round_1.go +++ b/ecdsa/keygen/round_1.go @@ -10,12 +10,12 @@ import ( "errors" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmts "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/dlnproof" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmts "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/dlnproof" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) var ( @@ -23,7 +23,7 @@ var ( ) // round 1 represents round 1 of the keygen part of the GG18 ECDSA TSS spec (Gennaro, Goldfeder; 2018) -func newRound1(params *tss.Parameters, save *LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- LocalPartySaveData) tss.Round { +func newRound1(params *tss.Parameters, save *LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- *LocalPartySaveData) tss.Round { return &round1{ &base{params, save, temp, out, end, make([]bool, len(params.Parties().IDs())), false, 1}} } @@ -40,13 +40,13 @@ func (round *round1) Start() *tss.Error { i := Pi.Index // 1. calculate "partial" key share ui - ui := common.GetRandomPositiveInt(tss.EC().Params().N) + ui := common.GetRandomPositiveInt(round.Params().EC().Params().N) round.temp.ui = ui // 2. compute the vss shares ids := round.Parties().IDs().Keys() - vs, shares, err := vss.Create(round.Threshold(), ui, ids) + vs, shares, err := vss.Create(round.Params().EC(), round.Threshold(), ui, ids) if err != nil { return round.WrapError(err, Pi) } @@ -74,7 +74,7 @@ func (round *round1) Start() *tss.Error { } else if round.save.LocalPreParams.ValidateWithProof() { preParams = &round.save.LocalPreParams } else { - preParams, err = GeneratePreParams(round.SafePrimeGenTimeout(), 3) + preParams, err = GeneratePreParams(round.SafePrimeGenTimeout(), round.Concurrency()) if err != nil { return round.WrapError(errors.New("pre-params generation failed"), Pi) } @@ -100,8 +100,14 @@ func (round *round1) Start() *tss.Error { // and keep in temporary storage: // - VSS Vs // - our set of Shamir shares + round.temp.ssidNonce = new(big.Int).SetUint64(0) round.save.ShareID = ids[i] round.temp.vs = vs + ssid, err := round.getSSID() + if err != nil { + return round.WrapError(errors.New("failed to generate ssid")) + } + round.temp.ssid = ssid round.temp.shares = shares // for this P: SAVE de-commitments, paillier keys for round 2 @@ -130,17 +136,19 @@ func (round *round1) CanAccept(msg tss.ParsedMessage) bool { } func (round *round1) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.kgRound1Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } // vss check is in round 2 round.ok[j] = true } - return true, nil + return ret, nil } func (round *round1) NextRound() tss.Round { diff --git a/ecdsa/keygen/round_2.go b/ecdsa/keygen/round_2.go index 7346b648..52e6d4eb 100644 --- a/ecdsa/keygen/round_2.go +++ b/ecdsa/keygen/round_2.go @@ -12,7 +12,15 @@ import ( "math/big" "sync" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto/facproof" + "github.com/bnb-chain/tss-lib/v2/crypto/modproof" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/tss" +) + +const ( + paillierBitsLen = 2048 ) func (round *round2) Start() *tss.Error { @@ -23,6 +31,13 @@ func (round *round2) Start() *tss.Error { round.started = true round.resetOK() + common.Logger.Debugf( + "%s Setting up DLN verification with concurrency level of %d", + round.PartyID(), + round.Concurrency(), + ) + dlnVerifier := NewDlnProofVerifier(round.Concurrency()) + i := round.PartyID().Index // 6. verify dln proofs, store r1 message pieces, ensure uniqueness of h1j, h2j @@ -32,13 +47,20 @@ func (round *round2) Start() *tss.Error { wg := new(sync.WaitGroup) for j, msg := range round.temp.kgRound1Messages { r1msg := msg.Content().(*KGRound1Message) - H1j, H2j, NTildej := + H1j, H2j, NTildej, paillierPKj := r1msg.UnmarshalH1(), r1msg.UnmarshalH2(), - r1msg.UnmarshalNTilde() + r1msg.UnmarshalNTilde(), + r1msg.UnmarshalPaillierPK() + if paillierPKj.N.BitLen() != paillierBitsLen { + return round.WrapError(errors.New("got paillier modulus with insufficient bits for this party"), msg.GetFrom()) + } if H1j.Cmp(H2j) == 0 { return round.WrapError(errors.New("h1j and h2j were equal for this party"), msg.GetFrom()) } + if NTildej.BitLen() != paillierBitsLen { + return round.WrapError(errors.New("got NTildej with insufficient bits for this party"), msg.GetFrom()) + } h1JHex, h2JHex := hex.EncodeToString(H1j.Bytes()), hex.EncodeToString(H2j.Bytes()) if _, found := h1H2Map[h1JHex]; found { return round.WrapError(errors.New("this h1j was already used by another party"), msg.GetFrom()) @@ -47,19 +69,23 @@ func (round *round2) Start() *tss.Error { return round.WrapError(errors.New("this h2j was already used by another party"), msg.GetFrom()) } h1H2Map[h1JHex], h1H2Map[h2JHex] = struct{}{}, struct{}{} + wg.Add(2) - go func(j int, msg tss.ParsedMessage, r1msg *KGRound1Message, H1j, H2j, NTildej *big.Int) { - if dlnProof1, err := r1msg.UnmarshalDLNProof1(); err != nil || !dlnProof1.Verify(H1j, H2j, NTildej) { - dlnProof1FailCulprits[j] = msg.GetFrom() + _j := j + _msg := msg + + dlnVerifier.VerifyDLNProof1(r1msg, H1j, H2j, NTildej, func(isValid bool) { + if !isValid { + dlnProof1FailCulprits[_j] = _msg.GetFrom() } wg.Done() - }(j, msg, r1msg, H1j, H2j, NTildej) - go func(j int, msg tss.ParsedMessage, r1msg *KGRound1Message, H1j, H2j, NTildej *big.Int) { - if dlnProof2, err := r1msg.UnmarshalDLNProof2(); err != nil || !dlnProof2.Verify(H2j, H1j, NTildej) { - dlnProof2FailCulprits[j] = msg.GetFrom() + }) + dlnVerifier.VerifyDLNProof2(r1msg, H2j, H1j, NTildej, func(isValid bool) { + if !isValid { + dlnProof2FailCulprits[_j] = _msg.GetFrom() } wg.Done() - }(j, msg, r1msg, H1j, H2j, NTildej) + }) } wg.Wait() for _, culprit := range append(dlnProof1FailCulprits, dlnProof2FailCulprits...) { @@ -87,19 +113,40 @@ func (round *round2) Start() *tss.Error { // 5. p2p send share ij to Pj shares := round.temp.shares + ContextI := append(round.temp.ssid, big.NewInt(int64(i)).Bytes()...) for j, Pj := range round.Parties().IDs() { - r2msg1 := NewKGRound2Message1(Pj, round.PartyID(), shares[j]) + + facProof := &facproof.ProofFac{P: zero, Q: zero, A: zero, B: zero, T: zero, Sigma: zero, + Z1: zero, Z2: zero, W1: zero, W2: zero, V: zero} + if !round.Params().NoProofFac() { + var err error + facProof, err = facproof.NewProof(ContextI, round.EC(), round.save.PaillierSK.N, round.save.NTildej[j], + round.save.H1j[j], round.save.H2j[j], round.save.PaillierSK.P, round.save.PaillierSK.Q) + if err != nil { + return round.WrapError(err, round.PartyID()) + } + + } + r2msg1 := NewKGRound2Message1(Pj, round.PartyID(), shares[j], facProof) // do not send to this Pj, but store for round 3 if j == i { round.temp.kgRound2Message1s[j] = r2msg1 continue } - round.temp.kgRound2Message1s[i] = r2msg1 round.out <- r2msg1 } // 7. BROADCAST de-commitments of Shamir poly*G - r2msg2 := NewKGRound2Message2(round.PartyID(), round.temp.deCommitPolyG) + modProof := &modproof.ProofMod{W: zero, X: *new([80]*big.Int), A: zero, B: zero, Z: *new([80]*big.Int)} + if !round.Parameters.NoProofMod() { + var err error + modProof, err = modproof.NewProof(ContextI, round.save.PaillierSK.N, + round.save.PaillierSK.P, round.save.PaillierSK.Q) + if err != nil { + return round.WrapError(err, round.PartyID()) + } + } + r2msg2 := NewKGRound2Message2(round.PartyID(), round.temp.deCommitPolyG, modProof) round.temp.kgRound2Message2s[i] = r2msg2 round.out <- r2msg2 @@ -118,20 +165,23 @@ func (round *round2) CanAccept(msg tss.ParsedMessage) bool { func (round *round2) Update() (bool, *tss.Error) { // guard - VERIFY de-commit for all Pj + ret := true for j, msg := range round.temp.kgRound2Message1s { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } msg2 := round.temp.kgRound2Message2s[j] if msg2 == nil || !round.CanAccept(msg2) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round2) NextRound() tss.Round { diff --git a/ecdsa/keygen/round_3.go b/ecdsa/keygen/round_3.go index c7b89ac7..f6b14155 100644 --- a/ecdsa/keygen/round_3.go +++ b/ecdsa/keygen/round_3.go @@ -13,11 +13,11 @@ import ( "github.com/hashicorp/go-multierror" errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round3) Start() *tss.Error { @@ -41,7 +41,7 @@ func (round *round3) Start() *tss.Error { share := r2msg1.UnmarshalShare() xi = new(big.Int).Add(xi, share) } - round.save.Xi = new(big.Int).Mod(xi, tss.EC().Params().N) + round.save.Xi = new(big.Int).Mod(xi, round.Params().EC().Params().N) // 2-3. Vc := make(vss.Vs, round.Threshold()+1) @@ -65,6 +65,7 @@ func (round *round3) Start() *tss.Error { if j == PIdx { continue } + ContextJ := common.AppendBigIntToBytesSlice(round.temp.ssid, big.NewInt(int64(j))) // 6-8. go func(j int, ch chan<- vssOut) { // 4-9. @@ -77,21 +78,53 @@ func (round *round3) Start() *tss.Error { ch <- vssOut{errors.New("de-commitment verify failed"), nil} return } - PjVs, err := crypto.UnFlattenECPoints(tss.EC(), flatPolyGs) + PjVs, err := crypto.UnFlattenECPoints(round.Params().EC(), flatPolyGs) if err != nil { ch <- vssOut{err, nil} return } + modProof, err := r2msg2.UnmarshalModProof() + if err != nil && round.Parameters.NoProofMod() { + // For old parties, the modProof could be not exist + // Not return error for compatibility reason + common.Logger.Warningf("modProof not exist:%s", Ps[j]) + } else { + if err != nil { + ch <- vssOut{errors.New("modProof verify failed"), nil} + return + } + if ok = modProof.Verify(ContextJ, round.save.PaillierPKs[j].N); !ok { + ch <- vssOut{errors.New("modProof verify failed"), nil} + return + } + } r2msg1 := round.temp.kgRound2Message1s[j].Content().(*KGRound2Message1) PjShare := vss.Share{ Threshold: round.Threshold(), ID: round.PartyID().KeyInt(), Share: r2msg1.UnmarshalShare(), } - if ok = PjShare.Verify(round.Threshold(), PjVs); !ok { + if ok = PjShare.Verify(round.Params().EC(), round.Threshold(), PjVs); !ok { ch <- vssOut{errors.New("vss verify failed"), nil} return } + facProof, err := r2msg1.UnmarshalFacProof() + if err != nil && round.NoProofFac() { + // For old parties, the facProof could be not exist + // Not return error for compatibility reason + common.Logger.Warningf("facProof not exist:%s", Ps[j]) + } else { + if err != nil { + ch <- vssOut{errors.New("facProof verify failed"), nil} + return + } + if ok = facProof.Verify(ContextJ, round.EC(), round.save.PaillierPKs[j].N, round.save.NTildei, + round.save.H1i, round.save.H2i); !ok { + ch <- vssOut{errors.New("facProof verify failed"), nil} + return + } + } + // (9) handled above ch <- vssOut{nil, PjVs} }(j, chs[j]) @@ -114,10 +147,9 @@ func (round *round3) Start() *tss.Error { var multiErr error if len(culprits) > 0 { for _, vssResult := range vssResults { - if vssResult.unWrappedErr == nil { - continue + if vssResult.unWrappedErr != nil { + multiErr = multierror.Append(multiErr, vssResult.unWrappedErr) } - multiErr = multierror.Append(multiErr, vssResult.unWrappedErr) } return round.WrapError(multiErr, culprits...) } @@ -146,7 +178,7 @@ func (round *round3) Start() *tss.Error { // 12-16. compute Xj for each Pj { var err error - modQ := common.ModInt(tss.EC().Params().N) + modQ := common.ModInt(round.Params().EC().Params().N) culprits := make([]*tss.PartyID, 0, len(Ps)) // who caused the error(s) bigXj := round.save.BigXj for j := 0; j < round.PartyCount(); j++ { @@ -170,7 +202,7 @@ func (round *round3) Start() *tss.Error { } // 17. compute and SAVE the ECDSA public key `y` - ecdsaPubKey, err := crypto.NewECPoint(tss.EC(), Vc[0].X(), Vc[0].Y()) + ecdsaPubKey, err := crypto.NewECPoint(round.Params().EC(), Vc[0].X(), Vc[0].Y()) if err != nil { return round.WrapError(errors2.Wrapf(err, "public key is not on the curve")) } @@ -196,17 +228,19 @@ func (round *round3) CanAccept(msg tss.ParsedMessage) bool { } func (round *round3) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.kgRound3Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } // proof check is in round 4 round.ok[j] = true } - return true, nil + return ret, nil } func (round *round3) NextRound() tss.Round { diff --git a/ecdsa/keygen/round_4.go b/ecdsa/keygen/round_4.go index 2a544836..17bfd949 100644 --- a/ecdsa/keygen/round_4.go +++ b/ecdsa/keygen/round_4.go @@ -9,9 +9,9 @@ package keygen import ( "errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round4) Start() *tss.Error { @@ -73,7 +73,7 @@ func (round *round4) Start() *tss.Error { return round.WrapError(errors.New("paillier verify failed"), culprits...) } - round.end <- *round.save + round.end <- round.save return nil } diff --git a/ecdsa/keygen/rounds.go b/ecdsa/keygen/rounds.go index bd06a936..2d3e76fc 100644 --- a/ecdsa/keygen/rounds.go +++ b/ecdsa/keygen/rounds.go @@ -7,7 +7,10 @@ package keygen import ( - "github.com/binance-chain/tss-lib/tss" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -20,7 +23,7 @@ type ( save *LocalPartySaveData temp *localTempData out chan<- tss.Message - end chan<- LocalPartySaveData + end chan<- *LocalPartySaveData ok []bool // `ok` tracks parties which have been verified by Update() started bool number int @@ -94,3 +97,14 @@ func (round *base) resetOK() { round.ok[j] = false } } + +// get ssid from local params +func (round *base) getSSID() ([]byte, error) { + ssidList := []*big.Int{round.EC().Params().P, round.EC().Params().N, round.EC().Params().Gx, round.EC().Params().Gy} // ec curve + ssidList = append(ssidList, round.Parties().IDs().Keys()...) + ssidList = append(ssidList, big.NewInt(int64(round.number))) // round number + ssidList = append(ssidList, round.temp.ssidNonce) + ssid := common.SHA512_256i(ssidList...).Bytes() + + return ssid, nil +} diff --git a/ecdsa/keygen/save_data.go b/ecdsa/keygen/save_data.go index dff764a7..ec43d436 100644 --- a/ecdsa/keygen/save_data.go +++ b/ecdsa/keygen/save_data.go @@ -8,12 +8,12 @@ package keygen import ( "encoding/hex" + "errors" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/tss" ) type ( @@ -68,6 +68,8 @@ func (preParams LocalPreParams) Validate() bool { func (preParams LocalPreParams) ValidateWithProof() bool { return preParams.Validate() && + preParams.PaillierSK.P != nil && + preParams.PaillierSK.Q != nil && preParams.Alpha != nil && preParams.Beta != nil && preParams.P != nil && @@ -87,7 +89,7 @@ func BuildLocalSaveDataSubset(sourceData LocalPartySaveData, sortedIDs tss.Sorte for j, id := range sortedIDs { savedIdx, ok := keysToIndices[hex.EncodeToString(id.Key)] if !ok { - common.Logger.Warning("BuildLocalSaveDataSubset: unable to find a signer party in the local save data", id) + panic(errors.New("BuildLocalSaveDataSubset: unable to find a signer party in the local save data")) } newData.Ks[j] = sourceData.Ks[savedIdx] newData.NTildej[j] = sourceData.NTildej[savedIdx] diff --git a/ecdsa/keygen/test_utils.go b/ecdsa/keygen/test_utils.go index c90b4472..0169865e 100644 --- a/ecdsa/keygen/test_utils.go +++ b/ecdsa/keygen/test_utils.go @@ -18,8 +18,8 @@ import ( "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -53,6 +53,10 @@ func LoadKeygenTestFixtures(qty int, optionalStart ...int) ([]LocalPartySaveData "could not unmarshal fixture data for party %d located at: %s", i, fixtureFilePath) } + for _, kbxj := range key.BigXj { + kbxj.SetCurve(tss.S256()) + } + key.ECDSAPub.SetCurve(tss.S256()) keys = append(keys, key) } partyIDs := make(tss.UnSortedPartyIDs, len(keys)) @@ -87,6 +91,10 @@ func LoadKeygenTestFixturesRandomSet(qty, fixtureCount int) ([]LocalPartySaveDat "could not unmarshal fixture data for party %d located at: %s", i, fixtureFilePath) } + for _, kbxj := range key.BigXj { + kbxj.SetCurve(tss.S256()) + } + key.ECDSAPub.SetCurve(tss.S256()) keys = append(keys, key) } partyIDs := make(tss.UnSortedPartyIDs, len(keys)) diff --git a/ecdsa/resharing/ecdsa-resharing.pb.go b/ecdsa/resharing/ecdsa-resharing.pb.go index 30b49d35..e418b08c 100644 --- a/ecdsa/resharing/ecdsa-resharing.pb.go +++ b/ecdsa/resharing/ecdsa-resharing.pb.go @@ -1,78 +1,100 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.19.4 // source: protob/ecdsa-resharing.proto package resharing import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // // The Round 1 data is broadcast to peers of the New Committee in this message. type DGRound1Message struct { - EcdsaPubX []byte `protobuf:"bytes,1,opt,name=ecdsa_pub_x,json=ecdsaPubX,proto3" json:"ecdsa_pub_x,omitempty"` - EcdsaPubY []byte `protobuf:"bytes,2,opt,name=ecdsa_pub_y,json=ecdsaPubY,proto3" json:"ecdsa_pub_y,omitempty"` - VCommitment []byte `protobuf:"bytes,3,opt,name=v_commitment,json=vCommitment,proto3" json:"v_commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EcdsaPubX []byte `protobuf:"bytes,1,opt,name=ecdsa_pub_x,json=ecdsaPubX,proto3" json:"ecdsa_pub_x,omitempty"` + EcdsaPubY []byte `protobuf:"bytes,2,opt,name=ecdsa_pub_y,json=ecdsaPubY,proto3" json:"ecdsa_pub_y,omitempty"` + VCommitment []byte `protobuf:"bytes,3,opt,name=v_commitment,json=vCommitment,proto3" json:"v_commitment,omitempty"` + Ssid []byte `protobuf:"bytes,4,opt,name=ssid,proto3" json:"ssid,omitempty"` +} + +func (x *DGRound1Message) Reset() { + *x = DGRound1Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound1Message) Reset() { *m = DGRound1Message{} } -func (m *DGRound1Message) String() string { return proto.CompactTextString(m) } -func (*DGRound1Message) ProtoMessage() {} -func (*DGRound1Message) Descriptor() ([]byte, []int) { - return fileDescriptor_f7d3ae1dc68dc295, []int{0} +func (x *DGRound1Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound1Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound1Message.Unmarshal(m, b) -} -func (m *DGRound1Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound1Message.Marshal(b, m, deterministic) -} -func (m *DGRound1Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound1Message.Merge(m, src) -} -func (m *DGRound1Message) XXX_Size() int { - return xxx_messageInfo_DGRound1Message.Size(m) +func (*DGRound1Message) ProtoMessage() {} + +func (x *DGRound1Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *DGRound1Message) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound1Message.DiscardUnknown(m) + +// Deprecated: Use DGRound1Message.ProtoReflect.Descriptor instead. +func (*DGRound1Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_resharing_proto_rawDescGZIP(), []int{0} } -var xxx_messageInfo_DGRound1Message proto.InternalMessageInfo +func (x *DGRound1Message) GetEcdsaPubX() []byte { + if x != nil { + return x.EcdsaPubX + } + return nil +} -func (m *DGRound1Message) GetEcdsaPubX() []byte { - if m != nil { - return m.EcdsaPubX +func (x *DGRound1Message) GetEcdsaPubY() []byte { + if x != nil { + return x.EcdsaPubY } return nil } -func (m *DGRound1Message) GetEcdsaPubY() []byte { - if m != nil { - return m.EcdsaPubY +func (x *DGRound1Message) GetVCommitment() []byte { + if x != nil { + return x.VCommitment } return nil } -func (m *DGRound1Message) GetVCommitment() []byte { - if m != nil { - return m.VCommitment +func (x *DGRound1Message) GetSsid() []byte { + if x != nil { + return x.Ssid } return nil } @@ -80,88 +102,96 @@ func (m *DGRound1Message) GetVCommitment() []byte { // // The Round 2 data is broadcast to other peers of the New Committee in this message. type DGRound2Message1 struct { - PaillierN []byte `protobuf:"bytes,1,opt,name=paillier_n,json=paillierN,proto3" json:"paillier_n,omitempty"` - PaillierProof [][]byte `protobuf:"bytes,2,rep,name=paillier_proof,json=paillierProof,proto3" json:"paillier_proof,omitempty"` - NTilde []byte `protobuf:"bytes,3,opt,name=n_tilde,json=nTilde,proto3" json:"n_tilde,omitempty"` - H1 []byte `protobuf:"bytes,4,opt,name=h1,proto3" json:"h1,omitempty"` - H2 []byte `protobuf:"bytes,5,opt,name=h2,proto3" json:"h2,omitempty"` - Dlnproof_1 [][]byte `protobuf:"bytes,6,rep,name=dlnproof_1,json=dlnproof1,proto3" json:"dlnproof_1,omitempty"` - Dlnproof_2 [][]byte `protobuf:"bytes,7,rep,name=dlnproof_2,json=dlnproof2,proto3" json:"dlnproof_2,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DGRound2Message1) Reset() { *m = DGRound2Message1{} } -func (m *DGRound2Message1) String() string { return proto.CompactTextString(m) } -func (*DGRound2Message1) ProtoMessage() {} -func (*DGRound2Message1) Descriptor() ([]byte, []int) { - return fileDescriptor_f7d3ae1dc68dc295, []int{1} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PaillierN []byte `protobuf:"bytes,1,opt,name=paillier_n,json=paillierN,proto3" json:"paillier_n,omitempty"` + ModProof [][]byte `protobuf:"bytes,2,rep,name=modProof,proto3" json:"modProof,omitempty"` + NTilde []byte `protobuf:"bytes,3,opt,name=n_tilde,json=nTilde,proto3" json:"n_tilde,omitempty"` + H1 []byte `protobuf:"bytes,4,opt,name=h1,proto3" json:"h1,omitempty"` + H2 []byte `protobuf:"bytes,5,opt,name=h2,proto3" json:"h2,omitempty"` + Dlnproof_1 [][]byte `protobuf:"bytes,6,rep,name=dlnproof_1,json=dlnproof1,proto3" json:"dlnproof_1,omitempty"` + Dlnproof_2 [][]byte `protobuf:"bytes,7,rep,name=dlnproof_2,json=dlnproof2,proto3" json:"dlnproof_2,omitempty"` +} + +func (x *DGRound2Message1) Reset() { + *x = DGRound2Message1{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound2Message1) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound2Message1.Unmarshal(m, b) -} -func (m *DGRound2Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound2Message1.Marshal(b, m, deterministic) -} -func (m *DGRound2Message1) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound2Message1.Merge(m, src) +func (x *DGRound2Message1) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound2Message1) XXX_Size() int { - return xxx_messageInfo_DGRound2Message1.Size(m) -} -func (m *DGRound2Message1) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound2Message1.DiscardUnknown(m) + +func (*DGRound2Message1) ProtoMessage() {} + +func (x *DGRound2Message1) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DGRound2Message1 proto.InternalMessageInfo +// Deprecated: Use DGRound2Message1.ProtoReflect.Descriptor instead. +func (*DGRound2Message1) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_resharing_proto_rawDescGZIP(), []int{1} +} -func (m *DGRound2Message1) GetPaillierN() []byte { - if m != nil { - return m.PaillierN +func (x *DGRound2Message1) GetPaillierN() []byte { + if x != nil { + return x.PaillierN } return nil } -func (m *DGRound2Message1) GetPaillierProof() [][]byte { - if m != nil { - return m.PaillierProof +func (x *DGRound2Message1) GetModProof() [][]byte { + if x != nil { + return x.ModProof } return nil } -func (m *DGRound2Message1) GetNTilde() []byte { - if m != nil { - return m.NTilde +func (x *DGRound2Message1) GetNTilde() []byte { + if x != nil { + return x.NTilde } return nil } -func (m *DGRound2Message1) GetH1() []byte { - if m != nil { - return m.H1 +func (x *DGRound2Message1) GetH1() []byte { + if x != nil { + return x.H1 } return nil } -func (m *DGRound2Message1) GetH2() []byte { - if m != nil { - return m.H2 +func (x *DGRound2Message1) GetH2() []byte { + if x != nil { + return x.H2 } return nil } -func (m *DGRound2Message1) GetDlnproof_1() [][]byte { - if m != nil { - return m.Dlnproof_1 +func (x *DGRound2Message1) GetDlnproof_1() [][]byte { + if x != nil { + return x.Dlnproof_1 } return nil } -func (m *DGRound2Message1) GetDlnproof_2() [][]byte { - if m != nil { - return m.Dlnproof_2 +func (x *DGRound2Message1) GetDlnproof_2() [][]byte { + if x != nil { + return x.Dlnproof_2 } return nil } @@ -169,181 +199,411 @@ func (m *DGRound2Message1) GetDlnproof_2() [][]byte { // // The Round 2 "ACK" is broadcast to peers of the Old Committee in this message. type DGRound2Message2 struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *DGRound2Message2) Reset() { *m = DGRound2Message2{} } -func (m *DGRound2Message2) String() string { return proto.CompactTextString(m) } -func (*DGRound2Message2) ProtoMessage() {} -func (*DGRound2Message2) Descriptor() ([]byte, []int) { - return fileDescriptor_f7d3ae1dc68dc295, []int{2} +func (x *DGRound2Message2) Reset() { + *x = DGRound2Message2{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound2Message2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound2Message2.Unmarshal(m, b) +func (x *DGRound2Message2) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound2Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound2Message2.Marshal(b, m, deterministic) -} -func (m *DGRound2Message2) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound2Message2.Merge(m, src) -} -func (m *DGRound2Message2) XXX_Size() int { - return xxx_messageInfo_DGRound2Message2.Size(m) -} -func (m *DGRound2Message2) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound2Message2.DiscardUnknown(m) + +func (*DGRound2Message2) ProtoMessage() {} + +func (x *DGRound2Message2) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DGRound2Message2 proto.InternalMessageInfo +// Deprecated: Use DGRound2Message2.ProtoReflect.Descriptor instead. +func (*DGRound2Message2) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_resharing_proto_rawDescGZIP(), []int{2} +} // // The Round 3 data is sent to peers of the New Committee in this message. type DGRound3Message1 struct { - Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` +} + +func (x *DGRound3Message1) Reset() { + *x = DGRound3Message1{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DGRound3Message1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DGRound3Message1) ProtoMessage() {} + +func (x *DGRound3Message1) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *DGRound3Message1) Reset() { *m = DGRound3Message1{} } -func (m *DGRound3Message1) String() string { return proto.CompactTextString(m) } -func (*DGRound3Message1) ProtoMessage() {} +// Deprecated: Use DGRound3Message1.ProtoReflect.Descriptor instead. func (*DGRound3Message1) Descriptor() ([]byte, []int) { - return fileDescriptor_f7d3ae1dc68dc295, []int{3} + return file_protob_ecdsa_resharing_proto_rawDescGZIP(), []int{3} } -func (m *DGRound3Message1) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound3Message1.Unmarshal(m, b) +func (x *DGRound3Message1) GetShare() []byte { + if x != nil { + return x.Share + } + return nil } -func (m *DGRound3Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound3Message1.Marshal(b, m, deterministic) + +// +// The Round 3 data is broadcast to peers of the New Committee in this message. +type DGRound3Message2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VDecommitment [][]byte `protobuf:"bytes,1,rep,name=v_decommitment,json=vDecommitment,proto3" json:"v_decommitment,omitempty"` } -func (m *DGRound3Message1) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound3Message1.Merge(m, src) + +func (x *DGRound3Message2) Reset() { + *x = DGRound3Message2{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound3Message1) XXX_Size() int { - return xxx_messageInfo_DGRound3Message1.Size(m) + +func (x *DGRound3Message2) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound3Message1) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound3Message1.DiscardUnknown(m) + +func (*DGRound3Message2) ProtoMessage() {} + +func (x *DGRound3Message2) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DGRound3Message1 proto.InternalMessageInfo +// Deprecated: Use DGRound3Message2.ProtoReflect.Descriptor instead. +func (*DGRound3Message2) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_resharing_proto_rawDescGZIP(), []int{4} +} -func (m *DGRound3Message1) GetShare() []byte { - if m != nil { - return m.Share +func (x *DGRound3Message2) GetVDecommitment() [][]byte { + if x != nil { + return x.VDecommitment } return nil } // -// The Round 3 data is broadcast to peers of the New Committee in this message. -type DGRound3Message2 struct { - VDecommitment [][]byte `protobuf:"bytes,1,rep,name=v_decommitment,json=vDecommitment,proto3" json:"v_decommitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` +// The Round 4 "ACK" is broadcast to peers of the Old and New Committees from the New Committee in this message. +type DGRound4Message2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DGRound4Message2) Reset() { + *x = DGRound4Message2{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound3Message2) Reset() { *m = DGRound3Message2{} } -func (m *DGRound3Message2) String() string { return proto.CompactTextString(m) } -func (*DGRound3Message2) ProtoMessage() {} -func (*DGRound3Message2) Descriptor() ([]byte, []int) { - return fileDescriptor_f7d3ae1dc68dc295, []int{4} +func (x *DGRound4Message2) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound3Message2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound3Message2.Unmarshal(m, b) +func (*DGRound4Message2) ProtoMessage() {} + +func (x *DGRound4Message2) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *DGRound3Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound3Message2.Marshal(b, m, deterministic) + +// Deprecated: Use DGRound4Message2.ProtoReflect.Descriptor instead. +func (*DGRound4Message2) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_resharing_proto_rawDescGZIP(), []int{5} } -func (m *DGRound3Message2) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound3Message2.Merge(m, src) + +// +// The Round 4 message to peers of New Committees from the New Committee in this message. +type DGRound4Message1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FacProof [][]byte `protobuf:"bytes,1,rep,name=facProof,proto3" json:"facProof,omitempty"` } -func (m *DGRound3Message2) XXX_Size() int { - return xxx_messageInfo_DGRound3Message2.Size(m) + +func (x *DGRound4Message1) Reset() { + *x = DGRound4Message1{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound3Message2) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound3Message2.DiscardUnknown(m) + +func (x *DGRound4Message1) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DGRound3Message2 proto.InternalMessageInfo +func (*DGRound4Message1) ProtoMessage() {} -func (m *DGRound3Message2) GetVDecommitment() [][]byte { - if m != nil { - return m.VDecommitment +func (x *DGRound4Message1) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_resharing_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DGRound4Message1.ProtoReflect.Descriptor instead. +func (*DGRound4Message1) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_resharing_proto_rawDescGZIP(), []int{6} +} + +func (x *DGRound4Message1) GetFacProof() [][]byte { + if x != nil { + return x.FacProof } return nil } -// -// The Round 4 "ACK" is broadcast to peers of the Old and New Committees from the New Committee in this message. -type DGRound4Message struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DGRound4Message) Reset() { *m = DGRound4Message{} } -func (m *DGRound4Message) String() string { return proto.CompactTextString(m) } -func (*DGRound4Message) ProtoMessage() {} -func (*DGRound4Message) Descriptor() ([]byte, []int) { - return fileDescriptor_f7d3ae1dc68dc295, []int{5} -} - -func (m *DGRound4Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound4Message.Unmarshal(m, b) -} -func (m *DGRound4Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound4Message.Marshal(b, m, deterministic) -} -func (m *DGRound4Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound4Message.Merge(m, src) -} -func (m *DGRound4Message) XXX_Size() int { - return xxx_messageInfo_DGRound4Message.Size(m) -} -func (m *DGRound4Message) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound4Message.DiscardUnknown(m) -} - -var xxx_messageInfo_DGRound4Message proto.InternalMessageInfo - -func init() { - proto.RegisterType((*DGRound1Message)(nil), "DGRound1Message") - proto.RegisterType((*DGRound2Message1)(nil), "DGRound2Message1") - proto.RegisterType((*DGRound2Message2)(nil), "DGRound2Message2") - proto.RegisterType((*DGRound3Message1)(nil), "DGRound3Message1") - proto.RegisterType((*DGRound3Message2)(nil), "DGRound3Message2") - proto.RegisterType((*DGRound4Message)(nil), "DGRound4Message") -} - -func init() { proto.RegisterFile("protob/ecdsa-resharing.proto", fileDescriptor_f7d3ae1dc68dc295) } - -var fileDescriptor_f7d3ae1dc68dc295 = []byte{ - // 303 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xcf, 0x4b, 0xc3, 0x30, - 0x1c, 0xc5, 0x69, 0xe7, 0x3a, 0x96, 0xd5, 0xcd, 0x05, 0xc1, 0x1c, 0x54, 0x66, 0x40, 0xe8, 0x45, - 0x47, 0x32, 0x2f, 0x5e, 0x75, 0xe0, 0x49, 0x19, 0xc5, 0x83, 0x7a, 0x09, 0xed, 0x1a, 0xd7, 0x42, - 0x9b, 0x94, 0xfe, 0x42, 0xff, 0x4a, 0xff, 0x25, 0x69, 0x96, 0x86, 0x95, 0x1d, 0xdf, 0xe7, 0x7d, - 0x9b, 0xc7, 0xeb, 0x03, 0x97, 0x79, 0x21, 0x2b, 0x19, 0x2e, 0xf9, 0x36, 0x2a, 0x83, 0xbb, 0x82, - 0x97, 0x71, 0x50, 0x24, 0x62, 0x77, 0xaf, 0x30, 0xae, 0xc0, 0x6c, 0xfd, 0xe2, 0xcb, 0x5a, 0x44, - 0xe4, 0x95, 0x97, 0x65, 0xb0, 0xe3, 0xf0, 0x1a, 0x4c, 0xd4, 0x2d, 0xcb, 0xeb, 0x90, 0xfd, 0x20, - 0x6b, 0x61, 0x79, 0xae, 0x3f, 0x56, 0x68, 0x53, 0x87, 0x1f, 0x7d, 0xff, 0x17, 0xd9, 0x7d, 0xff, - 0x13, 0xde, 0x00, 0xb7, 0x61, 0x5b, 0x99, 0x65, 0x49, 0x95, 0x71, 0x51, 0xa1, 0x81, 0x3a, 0x98, - 0x34, 0xcf, 0x06, 0xe1, 0x3f, 0x0b, 0x9c, 0xe9, 0x58, 0xaa, 0x63, 0x09, 0xbc, 0x02, 0x20, 0x0f, - 0x92, 0x34, 0x4d, 0x78, 0xc1, 0x44, 0x17, 0xdb, 0x91, 0x37, 0x78, 0x0b, 0xa6, 0xc6, 0xce, 0x0b, - 0x29, 0xbf, 0x91, 0xbd, 0x18, 0x78, 0xae, 0x7f, 0xda, 0xd1, 0x4d, 0x0b, 0xe1, 0x05, 0x18, 0x09, - 0x56, 0x25, 0x69, 0xc4, 0x75, 0xb0, 0x23, 0xde, 0x5b, 0x05, 0xa7, 0xc0, 0x8e, 0x09, 0x3a, 0x51, - 0xcc, 0x8e, 0x89, 0xd2, 0x14, 0x0d, 0xb5, 0xa6, 0x6d, 0x7c, 0x94, 0x0a, 0xf5, 0x32, 0x23, 0xc8, - 0x51, 0x6f, 0x8f, 0x3b, 0x42, 0x7a, 0x36, 0x45, 0xa3, 0xbe, 0x4d, 0x31, 0x3c, 0x2a, 0x44, 0xb1, - 0x67, 0xd8, 0xca, 0x94, 0x3c, 0x07, 0xc3, 0x76, 0x00, 0xae, 0xfb, 0xed, 0x05, 0x7e, 0x3c, 0xba, - 0xa4, 0x6d, 0xdf, 0x86, 0x45, 0xfc, 0xe0, 0x47, 0x5a, 0xfb, 0xbe, 0xcd, 0xfa, 0x00, 0xe2, 0xb9, - 0x19, 0xf0, 0x41, 0x7f, 0xfa, 0x34, 0xff, 0x9a, 0xa9, 0x35, 0x96, 0x66, 0xec, 0xd0, 0x51, 0x6b, - 0xaf, 0xfe, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x14, 0x8e, 0x99, 0x0d, 0x02, 0x00, 0x00, +var File_protob_ecdsa_resharing_proto protoreflect.FileDescriptor + +var file_protob_ecdsa_resharing_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x65, 0x63, 0x64, 0x73, 0x61, 0x2d, 0x72, + 0x65, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, + 0x62, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x65, + 0x63, 0x64, 0x73, 0x61, 0x2e, 0x72, 0x65, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x88, + 0x01, 0x0a, 0x0f, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x63, 0x64, 0x73, 0x61, 0x5f, 0x70, 0x75, 0x62, 0x5f, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x63, 0x64, 0x73, 0x61, 0x50, 0x75, + 0x62, 0x58, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x63, 0x64, 0x73, 0x61, 0x5f, 0x70, 0x75, 0x62, 0x5f, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x63, 0x64, 0x73, 0x61, 0x50, 0x75, + 0x62, 0x59, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x76, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x73, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x73, 0x73, 0x69, 0x64, 0x22, 0xc4, 0x01, 0x0a, 0x10, 0x44, 0x47, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x61, 0x69, 0x6c, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x09, 0x70, 0x61, 0x69, 0x6c, 0x6c, 0x69, 0x65, 0x72, 0x4e, 0x12, 0x1a, 0x0a, + 0x08, 0x6d, 0x6f, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x08, 0x6d, 0x6f, 0x64, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x5f, 0x74, + 0x69, 0x6c, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6e, 0x54, 0x69, 0x6c, + 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, + 0x68, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, + 0x68, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x31, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, 0x6f, 0x66, + 0x31, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x32, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x64, 0x6c, 0x6e, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x32, + 0x22, 0x12, 0x0a, 0x10, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x32, 0x22, 0x28, 0x0a, 0x10, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x33, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x22, 0x39, + 0x0a, 0x10, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x33, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x5f, 0x64, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x76, 0x44, 0x65, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x44, 0x47, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x34, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x22, 0x2e, 0x0a, + 0x10, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x34, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x61, 0x63, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x11, 0x5a, + 0x0f, 0x65, 0x63, 0x64, 0x73, 0x61, 0x2f, 0x72, 0x65, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protob_ecdsa_resharing_proto_rawDescOnce sync.Once + file_protob_ecdsa_resharing_proto_rawDescData = file_protob_ecdsa_resharing_proto_rawDesc +) + +func file_protob_ecdsa_resharing_proto_rawDescGZIP() []byte { + file_protob_ecdsa_resharing_proto_rawDescOnce.Do(func() { + file_protob_ecdsa_resharing_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_ecdsa_resharing_proto_rawDescData) + }) + return file_protob_ecdsa_resharing_proto_rawDescData +} + +var file_protob_ecdsa_resharing_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_protob_ecdsa_resharing_proto_goTypes = []interface{}{ + (*DGRound1Message)(nil), // 0: binance.tsslib.ecdsa.resharing.DGRound1Message + (*DGRound2Message1)(nil), // 1: binance.tsslib.ecdsa.resharing.DGRound2Message1 + (*DGRound2Message2)(nil), // 2: binance.tsslib.ecdsa.resharing.DGRound2Message2 + (*DGRound3Message1)(nil), // 3: binance.tsslib.ecdsa.resharing.DGRound3Message1 + (*DGRound3Message2)(nil), // 4: binance.tsslib.ecdsa.resharing.DGRound3Message2 + (*DGRound4Message2)(nil), // 5: binance.tsslib.ecdsa.resharing.DGRound4Message2 + (*DGRound4Message1)(nil), // 6: binance.tsslib.ecdsa.resharing.DGRound4Message1 +} +var file_protob_ecdsa_resharing_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_protob_ecdsa_resharing_proto_init() } +func file_protob_ecdsa_resharing_proto_init() { + if File_protob_ecdsa_resharing_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_ecdsa_resharing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound1Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_resharing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound2Message1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_resharing_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound2Message2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_resharing_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound3Message1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_resharing_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound3Message2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_resharing_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound4Message2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_resharing_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound4Message1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_ecdsa_resharing_proto_rawDesc, + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_ecdsa_resharing_proto_goTypes, + DependencyIndexes: file_protob_ecdsa_resharing_proto_depIdxs, + MessageInfos: file_protob_ecdsa_resharing_proto_msgTypes, + }.Build() + File_protob_ecdsa_resharing_proto = out.File + file_protob_ecdsa_resharing_proto_rawDesc = nil + file_protob_ecdsa_resharing_proto_goTypes = nil + file_protob_ecdsa_resharing_proto_depIdxs = nil } diff --git a/ecdsa/resharing/local_party.go b/ecdsa/resharing/local_party.go index 3b6ddaf0..85faf4c5 100644 --- a/ecdsa/resharing/local_party.go +++ b/ecdsa/resharing/local_party.go @@ -10,12 +10,12 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Implements Party @@ -33,7 +33,7 @@ type ( // outbound messaging out chan<- tss.Message - end chan<- keygen.LocalPartySaveData + end chan<- *keygen.LocalPartySaveData } localMessageStore struct { @@ -42,7 +42,8 @@ type ( dgRound2Message2s, dgRound3Message1s, dgRound3Message2s, - dgRound4Messages []tss.ParsedMessage + dgRound4Message1s, + dgRound4Message2s []tss.ParsedMessage } localTempData struct { @@ -57,6 +58,9 @@ type ( newXi *big.Int newKs []*big.Int newBigXjs []*crypto.ECPoint // Xj to save in round 5 + + ssid []byte + ssidNonce *big.Int } ) @@ -68,7 +72,7 @@ func NewLocalParty( params *tss.ReSharingParameters, key keygen.LocalPartySaveData, out chan<- tss.Message, - end chan<- keygen.LocalPartySaveData, + end chan<- *keygen.LocalPartySaveData, ) tss.Party { oldPartyCount := len(params.OldParties().IDs()) subset := key @@ -90,7 +94,8 @@ func NewLocalParty( p.temp.dgRound2Message2s = make([]tss.ParsedMessage, params.NewPartyCount()) // " p.temp.dgRound3Message1s = make([]tss.ParsedMessage, oldPartyCount) // from t+1 of Old Committee p.temp.dgRound3Message2s = make([]tss.ParsedMessage, oldPartyCount) // " - p.temp.dgRound4Messages = make([]tss.ParsedMessage, params.NewPartyCount()) // from n of New Committee + p.temp.dgRound4Message1s = make([]tss.ParsedMessage, params.NewPartyCount()) // from n of New Committee + p.temp.dgRound4Message2s = make([]tss.ParsedMessage, params.NewPartyCount()) // from n of New Committee // save data init if key.LocalPreParams.ValidateWithProof() { p.save.LocalPreParams = key.LocalPreParams @@ -125,7 +130,7 @@ func (p *LocalParty) ValidateMessage(msg tss.ParsedMessage) (bool, *tss.Error) { // check that the message's "from index" will fit into the array var maxFromIdx int switch msg.Content().(type) { - case *DGRound2Message1, *DGRound2Message2, *DGRound4Message: + case *DGRound2Message1, *DGRound2Message2, *DGRound4Message1, *DGRound4Message2: maxFromIdx = len(p.params.NewParties().IDs()) - 1 default: maxFromIdx = len(p.params.OldParties().IDs()) - 1 @@ -157,8 +162,10 @@ func (p *LocalParty) StoreMessage(msg tss.ParsedMessage) (bool, *tss.Error) { p.temp.dgRound3Message1s[fromPIdx] = msg case *DGRound3Message2: p.temp.dgRound3Message2s[fromPIdx] = msg - case *DGRound4Message: - p.temp.dgRound4Messages[fromPIdx] = msg + case *DGRound4Message1: + p.temp.dgRound4Message1s[fromPIdx] = msg + case *DGRound4Message2: + p.temp.dgRound4Message2s[fromPIdx] = msg default: // unrecognised message, just ignore! common.Logger.Warningf("unrecognised message ignored: %v", msg) return false, nil diff --git a/ecdsa/resharing/local_party_test.go b/ecdsa/resharing/local_party_test.go index 35395b41..e205c5e1 100644 --- a/ecdsa/resharing/local_party_test.go +++ b/ecdsa/resharing/local_party_test.go @@ -17,13 +17,13 @@ import ( "github.com/ipfs/go-log" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - . "github.com/binance-chain/tss-lib/ecdsa/resharing" - "github.com/binance-chain/tss-lib/ecdsa/signing" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + . "github.com/bnb-chain/tss-lib/v2/ecdsa/resharing" + "github.com/bnb-chain/tss-lib/v2/ecdsa/signing" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -45,7 +45,7 @@ func TestE2EConcurrent(t *testing.T) { threshold, newThreshold := testThreshold, testThreshold // PHASE: load keygen fixtures - firstPartyIdx, extraParties := 5, 1 // extra can be 0 to N-first + firstPartyIdx, extraParties := 1, 1 // extra can be 0 to N-first oldKeys, oldPIDs, err := keygen.LoadKeygenTestFixtures(testThreshold+1+extraParties+firstPartyIdx, firstPartyIdx) assert.NoError(t, err, "should load keygen fixtures") @@ -66,19 +66,23 @@ func TestE2EConcurrent(t *testing.T) { errCh := make(chan *tss.Error, bothCommitteesPax) outCh := make(chan tss.Message, bothCommitteesPax) - endCh := make(chan keygen.LocalPartySaveData, bothCommitteesPax) + endCh := make(chan *keygen.LocalPartySaveData, bothCommitteesPax) updater := test.SharedPartyUpdater // init the old parties first for j, pID := range oldPIDs { - params := tss.NewReSharingParameters(oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) + params := tss.NewReSharingParameters(tss.S256(), oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) P := NewLocalParty(params, oldKeys[j], outCh, endCh).(*LocalParty) // discard old key data oldCommittee = append(oldCommittee, P) } // init the new parties for j, pID := range newPIDs { - params := tss.NewReSharingParameters(oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) + params := tss.NewReSharingParameters(tss.S256(), oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) + // do not use in untrusted setting + params.SetNoProofMod() + // do not use in untrusted setting + params.SetNoProofFac() save := keygen.NewLocalPartySaveData(newPCount) if j < len(fixtures) && len(newPIDs) <= len(fixtures) { save.LocalPreParams = fixtures[j].LocalPreParams @@ -136,11 +140,12 @@ func TestE2EConcurrent(t *testing.T) { if save.Xi != nil { index, err := save.OriginalIndex() assert.NoErrorf(t, err, "should not be an error getting a party's index from save data") - newKeys[index] = save + newKeys[index] = *save } else { endedOldCommittee++ } atomic.AddInt32(&reSharingEnded, 1) + fmt.Println("TODO old:", len(oldCommittee), "new:", len(newCommittee), "finished:", reSharingEnded) if atomic.LoadInt32(&reSharingEnded) == int32(len(oldCommittee)+len(newCommittee)) { assert.Equal(t, len(oldCommittee), endedOldCommittee) t.Logf("Resharing done. Reshared %d participants", reSharingEnded) @@ -149,7 +154,7 @@ func TestE2EConcurrent(t *testing.T) { for j, key := range newKeys { // xj test: BigXj == xj*G xj := key.Xi - gXj := crypto.ScalarBaseMult(tss.EC(), xj) + gXj := crypto.ScalarBaseMult(tss.S256(), xj) BigXj := key.BigXj[j] assert.True(t, BigXj.Equals(gXj), "ensure BigX_j == g^x_j") } @@ -168,10 +173,10 @@ signing: signErrCh := make(chan *tss.Error, len(signPIDs)) signOutCh := make(chan tss.Message, len(signPIDs)) - signEndCh := make(chan common.SignatureData, len(signPIDs)) + signEndCh := make(chan *common.SignatureData, len(signPIDs)) for j, signPID := range signPIDs { - params := tss.NewParameters(signP2pCtx, signPID, len(signPIDs), newThreshold) + params := tss.NewParameters(tss.S256(), signP2pCtx, signPID, len(signPIDs), newThreshold) P := signing.NewLocalParty(big.NewInt(42), params, signKeys[j], signOutCh, signEndCh).(*signing.LocalParty) signParties = append(signParties, P) go func(P *signing.LocalParty) { @@ -214,7 +219,7 @@ signing: // BEGIN ECDSA verify pkX, pkY := signKeys[0].ECDSAPub.X(), signKeys[0].ECDSAPub.Y() pk := ecdsa.PublicKey{ - Curve: tss.EC(), + Curve: tss.S256(), X: pkX, Y: pkY, } diff --git a/ecdsa/resharing/messages.go b/ecdsa/resharing/messages.go index a04ca154..e9f3b3cb 100644 --- a/ecdsa/resharing/messages.go +++ b/ecdsa/resharing/messages.go @@ -7,17 +7,18 @@ package resharing import ( + "crypto/elliptic" "math/big" - "github.com/golang/protobuf/proto" - - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/dlnproof" - "github.com/binance-chain/tss-lib/crypto/paillier" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/dlnproof" + "github.com/bnb-chain/tss-lib/v2/crypto/facproof" + "github.com/bnb-chain/tss-lib/v2/crypto/modproof" + "github.com/bnb-chain/tss-lib/v2/crypto/paillier" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) // These messages were generated from Protocol Buffers definitions into ecdsa-resharing.pb.go @@ -30,17 +31,11 @@ var ( (*DGRound2Message2)(nil), (*DGRound3Message1)(nil), (*DGRound3Message2)(nil), + (*DGRound4Message1)(nil), + (*DGRound4Message2)(nil), } ) -func init() { - proto.RegisterType((*DGRound1Message)(nil), tss.ECDSAProtoNamePrefix+"resharing.DGRound1Message") - proto.RegisterType((*DGRound2Message1)(nil), tss.ECDSAProtoNamePrefix+"resharing.DGRound2Message1") - proto.RegisterType((*DGRound2Message2)(nil), tss.ECDSAProtoNamePrefix+"resharing.DGRound2Message2") - proto.RegisterType((*DGRound3Message1)(nil), tss.ECDSAProtoNamePrefix+"resharing.DGRound3Message1") - proto.RegisterType((*DGRound3Message2)(nil), tss.ECDSAProtoNamePrefix+"resharing.DGRound3Message2") -} - // ----- // func NewDGRound1Message( @@ -48,6 +43,7 @@ func NewDGRound1Message( from *tss.PartyID, ecdsaPub *crypto.ECPoint, vct cmt.HashCommitment, + ssid []byte, ) tss.ParsedMessage { meta := tss.MessageRouting{ From: from, @@ -59,6 +55,7 @@ func NewDGRound1Message( EcdsaPubX: ecdsaPub.X().Bytes(), EcdsaPubY: ecdsaPub.Y().Bytes(), VCommitment: vct.Bytes(), + Ssid: ssid, } msg := tss.NewMessageWrapper(meta, content) return tss.NewMessage(meta, content, msg) @@ -71,9 +68,9 @@ func (m *DGRound1Message) ValidateBasic() bool { common.NonEmptyBytes(m.VCommitment) } -func (m *DGRound1Message) UnmarshalECDSAPub() (*crypto.ECPoint, error) { +func (m *DGRound1Message) UnmarshalECDSAPub(ec elliptic.Curve) (*crypto.ECPoint, error) { return crypto.NewECPoint( - tss.EC(), + ec, new(big.Int).SetBytes(m.EcdsaPubX), new(big.Int).SetBytes(m.EcdsaPubY)) } @@ -82,13 +79,17 @@ func (m *DGRound1Message) UnmarshalVCommitment() *big.Int { return new(big.Int).SetBytes(m.GetVCommitment()) } +func (m *DGRound1Message) UnmarshalSSID() []byte { + return m.GetSsid() +} + // ----- // func NewDGRound2Message1( to []*tss.PartyID, from *tss.PartyID, paillierPK *paillier.PublicKey, - paillierPf paillier.Proof, + modProof *modproof.ProofMod, NTildei, H1i, H2i *big.Int, dlnProof1, dlnProof2 *dlnproof.Proof, ) (tss.ParsedMessage, error) { @@ -98,7 +99,7 @@ func NewDGRound2Message1( IsBroadcast: true, IsToOldCommittee: false, } - paiPfBzs := common.BigIntsToBytes(paillierPf[:]) + modPfBzs := modProof.Bytes() dlnProof1Bz, err := dlnProof1.Serialize() if err != nil { return nil, err @@ -108,13 +109,13 @@ func NewDGRound2Message1( return nil, err } content := &DGRound2Message1{ - PaillierN: paillierPK.N.Bytes(), - PaillierProof: paiPfBzs, - NTilde: NTildei.Bytes(), - H1: H1i.Bytes(), - H2: H2i.Bytes(), - Dlnproof_1: dlnProof1Bz, - Dlnproof_2: dlnProof2Bz, + PaillierN: paillierPK.N.Bytes(), + ModProof: modPfBzs[:], + NTilde: NTildei.Bytes(), + H1: H1i.Bytes(), + H2: H2i.Bytes(), + Dlnproof_1: dlnProof1Bz, + Dlnproof_2: dlnProof2Bz, } msg := tss.NewMessageWrapper(meta, content) return tss.NewMessage(meta, content, msg), nil @@ -122,7 +123,8 @@ func NewDGRound2Message1( func (m *DGRound2Message1) ValidateBasic() bool { return m != nil && - common.NonEmptyMultiBytes(m.PaillierProof) && + // use with NoProofFac() + // common.NonEmptyMultiBytes(m.ModProof, modproof.ProofModBytesParts) && common.NonEmptyBytes(m.PaillierN) && common.NonEmptyBytes(m.NTilde) && common.NonEmptyBytes(m.H1) && @@ -150,11 +152,8 @@ func (m *DGRound2Message1) UnmarshalH2() *big.Int { return new(big.Int).SetBytes(m.GetH2()) } -func (m *DGRound2Message1) UnmarshalPaillierProof() paillier.Proof { - var pf paillier.Proof - ints := common.MultiBytesToBigInts(m.PaillierProof) - copy(pf[:], ints[:paillier.ProofIters]) - return pf +func (m *DGRound2Message1) UnmarshalModProof() (*modproof.ProofMod, error) { + return modproof.NewProofFromBytes(m.GetModProof()) } func (m *DGRound2Message1) UnmarshalDLNProof1() (*dlnproof.Proof, error) { @@ -244,7 +243,7 @@ func (m *DGRound3Message2) UnmarshalVDeCommitment() cmt.HashDeCommitment { // ----- // -func NewDGRound4Message( +func NewDGRound4Message2( to []*tss.PartyID, from *tss.PartyID, ) tss.ParsedMessage { @@ -254,11 +253,40 @@ func NewDGRound4Message( IsBroadcast: true, IsToOldAndNewCommittees: true, } - content := &DGRound4Message{} + content := &DGRound4Message2{} msg := tss.NewMessageWrapper(meta, content) return tss.NewMessage(meta, content, msg) } -func (m *DGRound4Message) ValidateBasic() bool { +func (m *DGRound4Message2) ValidateBasic() bool { return true } + +func NewDGRound4Message1( + to *tss.PartyID, + from *tss.PartyID, + proof *facproof.ProofFac, +) tss.ParsedMessage { + meta := tss.MessageRouting{ + From: from, + To: []*tss.PartyID{to}, + IsBroadcast: false, + IsToOldCommittee: false, + } + pfBzs := proof.Bytes() + content := &DGRound4Message1{ + FacProof: pfBzs[:], + } + msg := tss.NewMessageWrapper(meta, content) + return tss.NewMessage(meta, content, msg) +} + +func (m *DGRound4Message1) ValidateBasic() bool { + return m != nil + // use with NoProofFac() + // && common.NonEmptyMultiBytes(m.GetFacProof(), facproof.ProofFacBytesParts) +} + +func (m *DGRound4Message1) UnmarshalFacProof() (*facproof.ProofFac, error) { + return facproof.NewProofFromBytes(m.GetFacProof()) +} diff --git a/ecdsa/resharing/round_1_old_step_1.go b/ecdsa/resharing/round_1_old_step_1.go index 868c21ff..c178b7ba 100644 --- a/ecdsa/resharing/round_1_old_step_1.go +++ b/ecdsa/resharing/round_1_old_step_1.go @@ -9,17 +9,18 @@ package resharing import ( "errors" "fmt" - - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/ecdsa/signing" - "github.com/binance-chain/tss-lib/tss" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/ecdsa/signing" + "github.com/bnb-chain/tss-lib/v2/tss" ) // round 1 represents round 1 of the keygen part of the GG18 ECDSA TSS spec (Gennaro, Goldfeder; 2018) -func newRound1(params *tss.ReSharingParameters, input, save *keygen.LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- keygen.LocalPartySaveData) tss.Round { +func newRound1(params *tss.ReSharingParameters, input, save *keygen.LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- *keygen.LocalPartySaveData) tss.Round { return &round1{ &base{params, temp, input, save, out, end, make([]bool, len(params.OldParties().IDs())), make([]bool, len(params.NewParties().IDs())), false, 1}} } @@ -38,6 +39,12 @@ func (round *round1) Start() *tss.Error { } round.allOldOK() + round.temp.ssidNonce = new(big.Int).SetUint64(uint64(0)) + ssid, err := round.getSSID() + if err != nil { + return round.WrapError(err) + } + round.temp.ssid = ssid Pi := round.PartyID() i := Pi.Index @@ -47,10 +54,10 @@ func (round *round1) Start() *tss.Error { return round.WrapError(fmt.Errorf("t+1=%d is not satisfied by the key count of %d", round.Threshold()+1, len(ks)), round.PartyID()) } newKs := round.NewParties().IDs().Keys() - wi, _ := signing.PrepareForSigning(i, len(round.OldParties().IDs()), xi, ks, bigXj) + wi, _ := signing.PrepareForSigning(round.Params().EC(), i, len(round.OldParties().IDs()), xi, ks, bigXj) // 2. - vi, shares, err := vss.Create(round.NewThreshold(), wi, newKs) + vi, shares, err := vss.Create(round.Params().EC(), round.NewThreshold(), wi, newKs) if err != nil { return round.WrapError(err, round.PartyID()) } @@ -69,7 +76,7 @@ func (round *round1) Start() *tss.Error { // 5. "broadcast" C_i to members of the NEW committee r1msg := NewDGRound1Message( round.NewParties().IDs().Exclude(round.PartyID()), round.PartyID(), - round.input.ECDSAPub, vCmt.C) + round.input.ECDSAPub, vCmt.C, ssid) round.temp.dgRound1Messages[i] = r1msg round.out <- r1msg @@ -90,18 +97,24 @@ func (round *round1) Update() (bool, *tss.Error) { return true, nil } // accept messages from old -> new committee + ret := true for j, msg := range round.temp.dgRound1Messages { if round.oldOK[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.oldOK[j] = true // save the ecdsa pub received from the old committee + if round.temp.dgRound1Messages[0] == nil { + ret = false + continue + } r1msg := round.temp.dgRound1Messages[0].Content().(*DGRound1Message) - candidate, err := r1msg.UnmarshalECDSAPub() + candidate, err := r1msg.UnmarshalECDSAPub(round.Params().EC()) if err != nil { return false, round.WrapError(errors.New("unable to unmarshal the ecdsa pub key"), msg.GetFrom()) } @@ -112,7 +125,7 @@ func (round *round1) Update() (bool, *tss.Error) { } round.save.ECDSAPub = candidate } - return true, nil + return ret, nil } func (round *round1) NextRound() tss.Round { diff --git a/ecdsa/resharing/round_2_new_step_1.go b/ecdsa/resharing/round_2_new_step_1.go index 3f1337be..3543e047 100644 --- a/ecdsa/resharing/round_2_new_step_1.go +++ b/ecdsa/resharing/round_2_new_step_1.go @@ -7,11 +7,19 @@ package resharing import ( + "bytes" "errors" + "math/big" - "github.com/binance-chain/tss-lib/crypto/dlnproof" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto/modproof" + + "github.com/bnb-chain/tss-lib/v2/crypto/dlnproof" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" +) + +var ( + zero = big.NewInt(0) ) func (round *round2) Start() *tss.Error { @@ -30,6 +38,21 @@ func (round *round2) Start() *tss.Error { Pi := round.PartyID() i := Pi.Index + // check consistency of SSID + r1msg := round.temp.dgRound1Messages[0].Content().(*DGRound1Message) + SSID := r1msg.UnmarshalSSID() + for j, Pj := range round.OldParties().IDs() { + if j == 0 || j == i { + continue + } + r1msg := round.temp.dgRound1Messages[j].Content().(*DGRound1Message) + SSIDj := r1msg.UnmarshalSSID() + if !bytes.Equal(SSID, SSIDj) { + return round.WrapError(errors.New("ssid mismatch"), Pj) + } + } + round.temp.ssid = SSID + // 2. "broadcast" "ACK" members of the OLD committee r2msg1 := NewDGRound2Message2( round.OldParties().IDs().Exclude(round.PartyID()), round.PartyID()) @@ -49,7 +72,7 @@ func (round *round2) Start() *tss.Error { preParams = &round.save.LocalPreParams } else { var err error - preParams, err = keygen.GeneratePreParams(round.SafePrimeGenTimeout()) + preParams, err = keygen.GeneratePreParams(round.SafePrimeGenTimeout(), round.Concurrency()) if err != nil { return round.WrapError(errors.New("pre-params generation failed"), Pi) } @@ -70,10 +93,18 @@ func (round *round2) Start() *tss.Error { dlnProof1 := dlnproof.NewDLNProof(h1i, h2i, alpha, p, q, NTildei) dlnProof2 := dlnproof.NewDLNProof(h2i, h1i, beta, p, q, NTildei) - paillierPf := preParams.PaillierSK.Proof(Pi.KeyInt(), round.save.ECDSAPub) + modProof := &modproof.ProofMod{W: zero, X: *new([80]*big.Int), A: zero, B: zero, Z: *new([80]*big.Int)} + ContextI := append(round.temp.ssid, big.NewInt(int64(i)).Bytes()...) + if !round.Parameters.NoProofMod() { + var err error + modProof, err = modproof.NewProof(ContextI, preParams.PaillierSK.N, preParams.PaillierSK.P, preParams.PaillierSK.Q) + if err != nil { + return round.WrapError(err, Pi) + } + } r2msg2, err := NewDGRound2Message1( round.NewParties().IDs().Exclude(round.PartyID()), round.PartyID(), - &preParams.PaillierSK.PublicKey, paillierPf, preParams.NTildei, preParams.H1i, preParams.H2i, dlnProof1, dlnProof2) + &preParams.PaillierSK.PublicKey, modProof, preParams.NTildei, preParams.H1i, preParams.H2i, dlnProof1, dlnProof2) if err != nil { return round.WrapError(err, Pi) } @@ -104,6 +135,7 @@ func (round *round2) CanAccept(msg tss.ParsedMessage) bool { } func (round *round2) Update() (bool, *tss.Error) { + ret := true if round.ReSharingParams().IsOldCommittee() && round.ReSharingParameters.IsNewCommittee() { // accept messages from new -> old committee for j, msg1 := range round.temp.dgRound2Message2s { @@ -111,12 +143,14 @@ func (round *round2) Update() (bool, *tss.Error) { continue } if msg1 == nil || !round.CanAccept(msg1) { - return false, nil + ret = false + continue } // accept message from new -> committee msg2 := round.temp.dgRound2Message1s[j] if msg2 == nil || !round.CanAccept(msg2) { - return false, nil + ret = false + continue } round.newOK[j] = true } @@ -127,7 +161,8 @@ func (round *round2) Update() (bool, *tss.Error) { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.newOK[j] = true } @@ -138,14 +173,15 @@ func (round *round2) Update() (bool, *tss.Error) { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.newOK[j] = true } } else { return false, round.WrapError(errors.New("this party is not in the old or the new committee"), round.PartyID()) } - return true, nil + return ret, nil } func (round *round2) NextRound() tss.Round { diff --git a/ecdsa/resharing/round_3_old_step_2.go b/ecdsa/resharing/round_3_old_step_2.go index 10c379d1..f222290e 100644 --- a/ecdsa/resharing/round_3_old_step_2.go +++ b/ecdsa/resharing/round_3_old_step_2.go @@ -9,7 +9,7 @@ package resharing import ( "errors" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round3) Start() *tss.Error { diff --git a/ecdsa/resharing/round_4_new_step_2.go b/ecdsa/resharing/round_4_new_step_2.go index f8247260..f3115c59 100644 --- a/ecdsa/resharing/round_4_new_step_2.go +++ b/ecdsa/resharing/round_4_new_step_2.go @@ -12,13 +12,16 @@ import ( "math/big" "sync" + "github.com/bnb-chain/tss-lib/v2/crypto/facproof" + errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round4) Start() *tss.Error { @@ -36,8 +39,16 @@ func (round *round4) Start() *tss.Error { return nil } + common.Logger.Debugf( + "%s Setting up DLN verification with concurrency level of %d", + round.PartyID(), + round.Concurrency(), + ) + dlnVerifier := keygen.NewDlnProofVerifier(round.Concurrency()) + Pi := round.PartyID() i := Pi.Index + round.newOK[i] = true // 1-3. verify paillier & dln proofs, store message pieces, ensure uniqueness of h1j, h2j h1H2Map := make(map[string]struct{}, len(round.temp.dgRound2Message1s)*2) @@ -65,26 +76,37 @@ func (round *round4) Start() *tss.Error { h1H2Map[h1JHex], h1H2Map[h2JHex] = struct{}{}, struct{}{} wg.Add(3) go func(j int, msg tss.ParsedMessage, r2msg1 *DGRound2Message1) { - if ok, err := r2msg1.UnmarshalPaillierProof().Verify(paiPK.N, msg.GetFrom().KeyInt(), round.save.ECDSAPub); err != nil || !ok { + defer wg.Done() + modProof, err := r2msg1.UnmarshalModProof() + if err != nil { + if !round.Parameters.NoProofMod() { + paiProofCulprits[j] = msg.GetFrom() + } + common.Logger.Warningf("modProof verify failed for party %s", msg.GetFrom(), err) + return + } + ContextJ := common.AppendBigIntToBytesSlice(round.temp.ssid, big.NewInt(int64(j))) + if ok := modProof.Verify(ContextJ, paiPK.N); !ok { paiProofCulprits[j] = msg.GetFrom() - common.Logger.Warningf("paillier verify failed for party %s", msg.GetFrom(), err) + common.Logger.Warningf("modProof verify failed for party %s", msg.GetFrom(), err) } - wg.Done() }(j, msg, r2msg1) - go func(j int, msg tss.ParsedMessage, r2msg1 *DGRound2Message1, H1j, H2j, NTildej *big.Int) { - if dlnProof1, err := r2msg1.UnmarshalDLNProof1(); err != nil || !dlnProof1.Verify(H1j, H2j, NTildej) { - dlnProof1FailCulprits[j] = msg.GetFrom() - common.Logger.Warningf("dln proof 1 verify failed for party %s", msg.GetFrom(), err) + _j := j + _msg := msg + dlnVerifier.VerifyDLNProof1(r2msg1, H1j, H2j, NTildej, func(isValid bool) { + if !isValid { + dlnProof1FailCulprits[_j] = _msg.GetFrom() + common.Logger.Warningf("dln proof 1 verify failed for party %s", _msg.GetFrom()) } wg.Done() - }(j, msg, r2msg1, H1j, H2j, NTildej) - go func(j int, msg tss.ParsedMessage, r2msg1 *DGRound2Message1, H1j, H2j, NTildej *big.Int) { - if dlnProof2, err := r2msg1.UnmarshalDLNProof2(); err != nil || !dlnProof2.Verify(H2j, H1j, NTildej) { - dlnProof2FailCulprits[j] = msg.GetFrom() - common.Logger.Warningf("dln proof 2 verify failed for party %s", msg.GetFrom(), err) + }) + dlnVerifier.VerifyDLNProof2(r2msg1, H2j, H1j, NTildej, func(isValid bool) { + if !isValid { + dlnProof2FailCulprits[_j] = _msg.GetFrom() + common.Logger.Warningf("dln proof 2 verify failed for party %s", _msg.GetFrom()) } wg.Done() - }(j, msg, r2msg1, H1j, H2j, NTildej) + }) } wg.Wait() for _, culprit := range append(append(paiProofCulprits, dlnProof1FailCulprits...), dlnProof2FailCulprits...) { @@ -107,7 +129,7 @@ func (round *round4) Start() *tss.Error { newXi := big.NewInt(0) // 5-9. - modQ := common.ModInt(tss.EC().Params().N) + modQ := common.ModInt(round.Params().EC().Params().N) vjc := make([][]*crypto.ECPoint, len(round.OldParties().IDs())) for j := 0; j <= len(vjc)-1; j++ { // P1..P_t+1. Ps are indexed from 0 here // 6-7. @@ -123,7 +145,7 @@ func (round *round4) Start() *tss.Error { // TODO collect culprits and return a list of them as per convention return round.WrapError(errors.New("de-commitment of v_j0..v_jt failed"), round.Parties().IDs()[j]) } - vj, err := crypto.UnFlattenECPoints(tss.EC(), flatVs) + vj, err := crypto.UnFlattenECPoints(round.Params().EC(), flatVs) if err != nil { return round.WrapError(err, round.Parties().IDs()[j]) } @@ -136,7 +158,7 @@ func (round *round4) Start() *tss.Error { ID: round.PartyID().KeyInt(), Share: new(big.Int).SetBytes(r3msg1.Share), } - if ok := sharej.Verify(round.NewThreshold(), vj); !ok { + if ok := sharej.Verify(round.Params().EC(), round.NewThreshold(), vj); !ok { // TODO collect culprits and return a list of them as per convention return round.WrapError(errors.New("share from old committee did not pass Verify()"), round.Parties().IDs()[j]) } @@ -190,16 +212,38 @@ func (round *round4) Start() *tss.Error { round.temp.newKs = newKs round.temp.newBigXjs = newBigXjs + // Send facProof to new parties + for j, Pj := range round.NewParties().IDs() { + if j == i { + continue + } + ContextJ := common.AppendBigIntToBytesSlice(round.temp.ssid, big.NewInt(int64(j))) + facProof := &facproof.ProofFac{P: zero, Q: zero, A: zero, B: zero, T: zero, Sigma: zero, + Z1: zero, Z2: zero, W1: zero, W2: zero, V: zero} + if !round.Parameters.NoProofFac() { + facProof, err = facproof.NewProof(ContextJ, round.EC(), round.save.PaillierSK.N, round.save.NTildej[j], + round.save.H1j[j], round.save.H2j[j], round.save.PaillierSK.P, round.save.PaillierSK.Q) + if err != nil { + return round.WrapError(err, Pi) + } + } + r4msg1 := NewDGRound4Message1(Pj, Pi, facProof) + round.out <- r4msg1 + } + // Send an "ACK" message to both committees to signal that we're ready to save our data - r4msg := NewDGRound4Message(round.OldAndNewParties(), Pi) - round.temp.dgRound4Messages[i] = r4msg - round.out <- r4msg + r4msg2 := NewDGRound4Message2(round.OldAndNewParties(), Pi) + round.temp.dgRound4Message2s[i] = r4msg2 + round.out <- r4msg2 return nil } func (round *round4) CanAccept(msg tss.ParsedMessage) bool { - if _, ok := msg.Content().(*DGRound4Message); ok { + if _, ok := msg.Content().(*DGRound4Message1); ok { + return !msg.IsBroadcast() + } + if _, ok := msg.Content().(*DGRound4Message2); ok { return msg.IsBroadcast() } return false @@ -207,13 +251,19 @@ func (round *round4) CanAccept(msg tss.ParsedMessage) bool { func (round *round4) Update() (bool, *tss.Error) { // accept messages from new -> old&new committees - for j, msg := range round.temp.dgRound4Messages { + for j, msg2 := range round.temp.dgRound4Message2s { if round.newOK[j] { continue } - if msg == nil || !round.CanAccept(msg) { + if msg2 == nil || !round.CanAccept(msg2) { return false, nil } + if round.ReSharingParams().IsNewCommittee() { + msg1 := round.temp.dgRound4Message1s[j] + if msg1 == nil || !round.CanAccept(msg1) { + return false, nil + } + } round.newOK[j] = true } return true, nil diff --git a/ecdsa/resharing/round_5_new_step_3.go b/ecdsa/resharing/round_5_new_step_3.go index ffe9e5d2..9f46ed20 100644 --- a/ecdsa/resharing/round_5_new_step_3.go +++ b/ecdsa/resharing/round_5_new_step_3.go @@ -8,8 +8,10 @@ package resharing import ( "errors" + "math/big" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round5) Start() *tss.Error { @@ -28,6 +30,7 @@ func (round *round5) Start() *tss.Error { if round.IsNewCommittee() { // 21. // for this P: SAVE data + ContextI := append(round.temp.ssid, big.NewInt(int64(i)).Bytes()...) round.save.BigXj = round.temp.newBigXjs round.save.ShareID = round.PartyID().KeyInt() round.save.Xi = round.temp.newXi @@ -41,11 +44,32 @@ func (round *round5) Start() *tss.Error { r2msg1 := msg.Content().(*DGRound2Message1) round.save.PaillierPKs[j] = r2msg1.UnmarshalPaillierPK() } + for j, msg := range round.temp.dgRound4Message1s { + if j == i { + continue + } + r4msg1 := msg.Content().(*DGRound4Message1) + proof, err := r4msg1.UnmarshalFacProof() + if err != nil && round.Parameters.NoProofFac() { + common.Logger.Warningf("facProof verify failed for party %s", msg.GetFrom(), err) + } else { + if err != nil { + common.Logger.Warningf("facProof verify failed for party %s", msg.GetFrom(), err) + return round.WrapError(err, round.NewParties().IDs()[j]) + } + if ok := proof.Verify(ContextI, round.EC(), round.save.PaillierPKs[j].N, round.save.NTildei, + round.save.H1i, round.save.H2i); !ok { + common.Logger.Warningf("facProof verify failed for party %s", msg.GetFrom(), err) + return round.WrapError(err, round.NewParties().IDs()[j]) + } + } + + } } else if round.IsOldCommittee() { round.input.Xi.SetInt64(0) } - round.end <- *round.save + round.end <- round.save return nil } diff --git a/ecdsa/resharing/rounds.go b/ecdsa/resharing/rounds.go index d23b50bd..a76b1998 100644 --- a/ecdsa/resharing/rounds.go +++ b/ecdsa/resharing/rounds.go @@ -7,8 +7,13 @@ package resharing import ( - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "errors" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -21,7 +26,7 @@ type ( temp *localTempData input, save *keygen.LocalPartySaveData out chan<- tss.Message - end chan<- keygen.LocalPartySaveData + end chan<- *keygen.LocalPartySaveData oldOK, // old committee "ok" tracker newOK []bool // `ok` tracks parties which have been verified by Update(); this one is for the new committee started bool @@ -133,3 +138,22 @@ func (round *base) allNewOK() { round.newOK[j] = true } } + +// get ssid from local params +func (round *base) getSSID() ([]byte, error) { + ssidList := []*big.Int{round.EC().Params().P, round.EC().Params().N, round.EC().Params().B, round.EC().Params().Gx, round.EC().Params().Gy} // ec curve + ssidList = append(ssidList, round.Parties().IDs().Keys()...) // parties + BigXjList, err := crypto.FlattenECPoints(round.input.BigXj) + if err != nil { + return nil, round.WrapError(errors.New("read BigXj failed"), round.PartyID()) + } + ssidList = append(ssidList, BigXjList...) // BigXj + ssidList = append(ssidList, round.input.NTildej...) // NTilde + ssidList = append(ssidList, round.input.H1j...) // h1 + ssidList = append(ssidList, round.input.H2j...) // h2 + ssidList = append(ssidList, big.NewInt(int64(round.number))) // round number + ssidList = append(ssidList, round.temp.ssidNonce) + ssid := common.SHA512_256i(ssidList...).Bytes() + + return ssid, nil +} diff --git a/ecdsa/signing/ecdsa-signing.pb.go b/ecdsa/signing/ecdsa-signing.pb.go index 54eb0c78..4b8a55d2 100644 --- a/ecdsa/signing/ecdsa-signing.pb.go +++ b/ecdsa/signing/ecdsa-signing.pb.go @@ -1,70 +1,84 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 // source: protob/ecdsa-signing.proto package signing import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // // Represents a P2P message sent to each party during Round 1 of the ECDSA TSS signing protocol. type SignRound1Message1 struct { - C []byte `protobuf:"bytes,1,opt,name=c,proto3" json:"c,omitempty"` - RangeProofAlice [][]byte `protobuf:"bytes,2,rep,name=range_proof_alice,json=rangeProofAlice,proto3" json:"range_proof_alice,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound1Message1) Reset() { *m = SignRound1Message1{} } -func (m *SignRound1Message1) String() string { return proto.CompactTextString(m) } -func (*SignRound1Message1) ProtoMessage() {} -func (*SignRound1Message1) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{0} + C []byte `protobuf:"bytes,1,opt,name=c,proto3" json:"c,omitempty"` + RangeProofAlice [][]byte `protobuf:"bytes,2,rep,name=range_proof_alice,json=rangeProofAlice,proto3" json:"range_proof_alice,omitempty"` } -func (m *SignRound1Message1) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound1Message1.Unmarshal(m, b) -} -func (m *SignRound1Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound1Message1.Marshal(b, m, deterministic) -} -func (m *SignRound1Message1) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound1Message1.Merge(m, src) +func (x *SignRound1Message1) Reset() { + *x = SignRound1Message1{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound1Message1) XXX_Size() int { - return xxx_messageInfo_SignRound1Message1.Size(m) + +func (x *SignRound1Message1) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound1Message1) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound1Message1.DiscardUnknown(m) + +func (*SignRound1Message1) ProtoMessage() {} + +func (x *SignRound1Message1) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound1Message1 proto.InternalMessageInfo +// Deprecated: Use SignRound1Message1.ProtoReflect.Descriptor instead. +func (*SignRound1Message1) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{0} +} -func (m *SignRound1Message1) GetC() []byte { - if m != nil { - return m.C +func (x *SignRound1Message1) GetC() []byte { + if x != nil { + return x.C } return nil } -func (m *SignRound1Message1) GetRangeProofAlice() [][]byte { - if m != nil { - return m.RangeProofAlice +func (x *SignRound1Message1) GetRangeProofAlice() [][]byte { + if x != nil { + return x.RangeProofAlice } return nil } @@ -72,40 +86,48 @@ func (m *SignRound1Message1) GetRangeProofAlice() [][]byte { // // Represents a BROADCAST message sent to all parties during Round 1 of the ECDSA TSS signing protocol. type SignRound1Message2 struct { - Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound1Message2) Reset() { *m = SignRound1Message2{} } -func (m *SignRound1Message2) String() string { return proto.CompactTextString(m) } -func (*SignRound1Message2) ProtoMessage() {} -func (*SignRound1Message2) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{1} + Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` } -func (m *SignRound1Message2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound1Message2.Unmarshal(m, b) -} -func (m *SignRound1Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound1Message2.Marshal(b, m, deterministic) -} -func (m *SignRound1Message2) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound1Message2.Merge(m, src) +func (x *SignRound1Message2) Reset() { + *x = SignRound1Message2{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound1Message2) XXX_Size() int { - return xxx_messageInfo_SignRound1Message2.Size(m) + +func (x *SignRound1Message2) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound1Message2) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound1Message2.DiscardUnknown(m) + +func (*SignRound1Message2) ProtoMessage() {} + +func (x *SignRound1Message2) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound1Message2 proto.InternalMessageInfo +// Deprecated: Use SignRound1Message2.ProtoReflect.Descriptor instead. +func (*SignRound1Message2) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{1} +} -func (m *SignRound1Message2) GetCommitment() []byte { - if m != nil { - return m.Commitment +func (x *SignRound1Message2) GetCommitment() []byte { + if x != nil { + return x.Commitment } return nil } @@ -113,64 +135,72 @@ func (m *SignRound1Message2) GetCommitment() []byte { // // Represents a P2P message sent to each party during Round 2 of the ECDSA TSS signing protocol. type SignRound2Message struct { - C1 []byte `protobuf:"bytes,1,opt,name=c1,proto3" json:"c1,omitempty"` - C2 []byte `protobuf:"bytes,2,opt,name=c2,proto3" json:"c2,omitempty"` - ProofBob [][]byte `protobuf:"bytes,3,rep,name=proof_bob,json=proofBob,proto3" json:"proof_bob,omitempty"` - ProofBobWc [][]byte `protobuf:"bytes,4,rep,name=proof_bob_wc,json=proofBobWc,proto3" json:"proof_bob_wc,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SignRound2Message) Reset() { *m = SignRound2Message{} } -func (m *SignRound2Message) String() string { return proto.CompactTextString(m) } -func (*SignRound2Message) ProtoMessage() {} -func (*SignRound2Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{2} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + C1 []byte `protobuf:"bytes,1,opt,name=c1,proto3" json:"c1,omitempty"` + C2 []byte `protobuf:"bytes,2,opt,name=c2,proto3" json:"c2,omitempty"` + ProofBob [][]byte `protobuf:"bytes,3,rep,name=proof_bob,json=proofBob,proto3" json:"proof_bob,omitempty"` + ProofBobWc [][]byte `protobuf:"bytes,4,rep,name=proof_bob_wc,json=proofBobWc,proto3" json:"proof_bob_wc,omitempty"` +} + +func (x *SignRound2Message) Reset() { + *x = SignRound2Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound2Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound2Message.Unmarshal(m, b) -} -func (m *SignRound2Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound2Message.Marshal(b, m, deterministic) +func (x *SignRound2Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound2Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound2Message.Merge(m, src) -} -func (m *SignRound2Message) XXX_Size() int { - return xxx_messageInfo_SignRound2Message.Size(m) -} -func (m *SignRound2Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound2Message.DiscardUnknown(m) + +func (*SignRound2Message) ProtoMessage() {} + +func (x *SignRound2Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound2Message proto.InternalMessageInfo +// Deprecated: Use SignRound2Message.ProtoReflect.Descriptor instead. +func (*SignRound2Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{2} +} -func (m *SignRound2Message) GetC1() []byte { - if m != nil { - return m.C1 +func (x *SignRound2Message) GetC1() []byte { + if x != nil { + return x.C1 } return nil } -func (m *SignRound2Message) GetC2() []byte { - if m != nil { - return m.C2 +func (x *SignRound2Message) GetC2() []byte { + if x != nil { + return x.C2 } return nil } -func (m *SignRound2Message) GetProofBob() [][]byte { - if m != nil { - return m.ProofBob +func (x *SignRound2Message) GetProofBob() [][]byte { + if x != nil { + return x.ProofBob } return nil } -func (m *SignRound2Message) GetProofBobWc() [][]byte { - if m != nil { - return m.ProofBobWc +func (x *SignRound2Message) GetProofBobWc() [][]byte { + if x != nil { + return x.ProofBobWc } return nil } @@ -178,40 +208,48 @@ func (m *SignRound2Message) GetProofBobWc() [][]byte { // // Represents a BROADCAST message sent to all parties during Round 3 of the ECDSA TSS signing protocol. type SignRound3Message struct { - Theta []byte `protobuf:"bytes,1,opt,name=theta,proto3" json:"theta,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound3Message) Reset() { *m = SignRound3Message{} } -func (m *SignRound3Message) String() string { return proto.CompactTextString(m) } -func (*SignRound3Message) ProtoMessage() {} -func (*SignRound3Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{3} + Theta []byte `protobuf:"bytes,1,opt,name=theta,proto3" json:"theta,omitempty"` } -func (m *SignRound3Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound3Message.Unmarshal(m, b) -} -func (m *SignRound3Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound3Message.Marshal(b, m, deterministic) -} -func (m *SignRound3Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound3Message.Merge(m, src) +func (x *SignRound3Message) Reset() { + *x = SignRound3Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound3Message) XXX_Size() int { - return xxx_messageInfo_SignRound3Message.Size(m) + +func (x *SignRound3Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound3Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound3Message.DiscardUnknown(m) + +func (*SignRound3Message) ProtoMessage() {} + +func (x *SignRound3Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound3Message proto.InternalMessageInfo +// Deprecated: Use SignRound3Message.ProtoReflect.Descriptor instead. +func (*SignRound3Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{3} +} -func (m *SignRound3Message) GetTheta() []byte { - if m != nil { - return m.Theta +func (x *SignRound3Message) GetTheta() []byte { + if x != nil { + return x.Theta } return nil } @@ -219,64 +257,72 @@ func (m *SignRound3Message) GetTheta() []byte { // // Represents a BROADCAST message sent to all parties during Round 4 of the ECDSA TSS signing protocol. type SignRound4Message struct { - DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` - ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` - ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` - ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SignRound4Message) Reset() { *m = SignRound4Message{} } -func (m *SignRound4Message) String() string { return proto.CompactTextString(m) } -func (*SignRound4Message) ProtoMessage() {} -func (*SignRound4Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{4} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` + ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` + ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` + ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` +} + +func (x *SignRound4Message) Reset() { + *x = SignRound4Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound4Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound4Message.Unmarshal(m, b) -} -func (m *SignRound4Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound4Message.Marshal(b, m, deterministic) -} -func (m *SignRound4Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound4Message.Merge(m, src) +func (x *SignRound4Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound4Message) XXX_Size() int { - return xxx_messageInfo_SignRound4Message.Size(m) -} -func (m *SignRound4Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound4Message.DiscardUnknown(m) + +func (*SignRound4Message) ProtoMessage() {} + +func (x *SignRound4Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound4Message proto.InternalMessageInfo +// Deprecated: Use SignRound4Message.ProtoReflect.Descriptor instead. +func (*SignRound4Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{4} +} -func (m *SignRound4Message) GetDeCommitment() [][]byte { - if m != nil { - return m.DeCommitment +func (x *SignRound4Message) GetDeCommitment() [][]byte { + if x != nil { + return x.DeCommitment } return nil } -func (m *SignRound4Message) GetProofAlphaX() []byte { - if m != nil { - return m.ProofAlphaX +func (x *SignRound4Message) GetProofAlphaX() []byte { + if x != nil { + return x.ProofAlphaX } return nil } -func (m *SignRound4Message) GetProofAlphaY() []byte { - if m != nil { - return m.ProofAlphaY +func (x *SignRound4Message) GetProofAlphaY() []byte { + if x != nil { + return x.ProofAlphaY } return nil } -func (m *SignRound4Message) GetProofT() []byte { - if m != nil { - return m.ProofT +func (x *SignRound4Message) GetProofT() []byte { + if x != nil { + return x.ProofT } return nil } @@ -284,40 +330,48 @@ func (m *SignRound4Message) GetProofT() []byte { // // Represents a BROADCAST message sent to all parties during Round 5 of the ECDSA TSS signing protocol. type SignRound5Message struct { - Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound5Message) Reset() { *m = SignRound5Message{} } -func (m *SignRound5Message) String() string { return proto.CompactTextString(m) } -func (*SignRound5Message) ProtoMessage() {} -func (*SignRound5Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{5} + Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` } -func (m *SignRound5Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound5Message.Unmarshal(m, b) -} -func (m *SignRound5Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound5Message.Marshal(b, m, deterministic) -} -func (m *SignRound5Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound5Message.Merge(m, src) +func (x *SignRound5Message) Reset() { + *x = SignRound5Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound5Message) XXX_Size() int { - return xxx_messageInfo_SignRound5Message.Size(m) + +func (x *SignRound5Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound5Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound5Message.DiscardUnknown(m) + +func (*SignRound5Message) ProtoMessage() {} + +func (x *SignRound5Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound5Message proto.InternalMessageInfo +// Deprecated: Use SignRound5Message.ProtoReflect.Descriptor instead. +func (*SignRound5Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{5} +} -func (m *SignRound5Message) GetCommitment() []byte { - if m != nil { - return m.Commitment +func (x *SignRound5Message) GetCommitment() []byte { + if x != nil { + return x.Commitment } return nil } @@ -325,96 +379,104 @@ func (m *SignRound5Message) GetCommitment() []byte { // // Represents a BROADCAST message sent to all parties during Round 6 of the ECDSA TSS signing protocol. type SignRound6Message struct { - DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` - ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` - ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` - ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` - VProofAlphaX []byte `protobuf:"bytes,5,opt,name=v_proof_alpha_x,json=vProofAlphaX,proto3" json:"v_proof_alpha_x,omitempty"` - VProofAlphaY []byte `protobuf:"bytes,6,opt,name=v_proof_alpha_y,json=vProofAlphaY,proto3" json:"v_proof_alpha_y,omitempty"` - VProofT []byte `protobuf:"bytes,7,opt,name=v_proof_t,json=vProofT,proto3" json:"v_proof_t,omitempty"` - VProofU []byte `protobuf:"bytes,8,opt,name=v_proof_u,json=vProofU,proto3" json:"v_proof_u,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SignRound6Message) Reset() { *m = SignRound6Message{} } -func (m *SignRound6Message) String() string { return proto.CompactTextString(m) } -func (*SignRound6Message) ProtoMessage() {} -func (*SignRound6Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{6} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` + ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` + ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` + ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` + VProofAlphaX []byte `protobuf:"bytes,5,opt,name=v_proof_alpha_x,json=vProofAlphaX,proto3" json:"v_proof_alpha_x,omitempty"` + VProofAlphaY []byte `protobuf:"bytes,6,opt,name=v_proof_alpha_y,json=vProofAlphaY,proto3" json:"v_proof_alpha_y,omitempty"` + VProofT []byte `protobuf:"bytes,7,opt,name=v_proof_t,json=vProofT,proto3" json:"v_proof_t,omitempty"` + VProofU []byte `protobuf:"bytes,8,opt,name=v_proof_u,json=vProofU,proto3" json:"v_proof_u,omitempty"` +} + +func (x *SignRound6Message) Reset() { + *x = SignRound6Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound6Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound6Message.Unmarshal(m, b) -} -func (m *SignRound6Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound6Message.Marshal(b, m, deterministic) -} -func (m *SignRound6Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound6Message.Merge(m, src) -} -func (m *SignRound6Message) XXX_Size() int { - return xxx_messageInfo_SignRound6Message.Size(m) +func (x *SignRound6Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound6Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound6Message.DiscardUnknown(m) + +func (*SignRound6Message) ProtoMessage() {} + +func (x *SignRound6Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound6Message proto.InternalMessageInfo +// Deprecated: Use SignRound6Message.ProtoReflect.Descriptor instead. +func (*SignRound6Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{6} +} -func (m *SignRound6Message) GetDeCommitment() [][]byte { - if m != nil { - return m.DeCommitment +func (x *SignRound6Message) GetDeCommitment() [][]byte { + if x != nil { + return x.DeCommitment } return nil } -func (m *SignRound6Message) GetProofAlphaX() []byte { - if m != nil { - return m.ProofAlphaX +func (x *SignRound6Message) GetProofAlphaX() []byte { + if x != nil { + return x.ProofAlphaX } return nil } -func (m *SignRound6Message) GetProofAlphaY() []byte { - if m != nil { - return m.ProofAlphaY +func (x *SignRound6Message) GetProofAlphaY() []byte { + if x != nil { + return x.ProofAlphaY } return nil } -func (m *SignRound6Message) GetProofT() []byte { - if m != nil { - return m.ProofT +func (x *SignRound6Message) GetProofT() []byte { + if x != nil { + return x.ProofT } return nil } -func (m *SignRound6Message) GetVProofAlphaX() []byte { - if m != nil { - return m.VProofAlphaX +func (x *SignRound6Message) GetVProofAlphaX() []byte { + if x != nil { + return x.VProofAlphaX } return nil } -func (m *SignRound6Message) GetVProofAlphaY() []byte { - if m != nil { - return m.VProofAlphaY +func (x *SignRound6Message) GetVProofAlphaY() []byte { + if x != nil { + return x.VProofAlphaY } return nil } -func (m *SignRound6Message) GetVProofT() []byte { - if m != nil { - return m.VProofT +func (x *SignRound6Message) GetVProofT() []byte { + if x != nil { + return x.VProofT } return nil } -func (m *SignRound6Message) GetVProofU() []byte { - if m != nil { - return m.VProofU +func (x *SignRound6Message) GetVProofU() []byte { + if x != nil { + return x.VProofU } return nil } @@ -422,40 +484,48 @@ func (m *SignRound6Message) GetVProofU() []byte { // // Represents a BROADCAST message sent to all parties during Round 7 of the ECDSA TSS signing protocol. type SignRound7Message struct { - Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound7Message) Reset() { *m = SignRound7Message{} } -func (m *SignRound7Message) String() string { return proto.CompactTextString(m) } -func (*SignRound7Message) ProtoMessage() {} -func (*SignRound7Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{7} + Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` } -func (m *SignRound7Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound7Message.Unmarshal(m, b) -} -func (m *SignRound7Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound7Message.Marshal(b, m, deterministic) -} -func (m *SignRound7Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound7Message.Merge(m, src) +func (x *SignRound7Message) Reset() { + *x = SignRound7Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound7Message) XXX_Size() int { - return xxx_messageInfo_SignRound7Message.Size(m) + +func (x *SignRound7Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound7Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound7Message.DiscardUnknown(m) + +func (*SignRound7Message) ProtoMessage() {} + +func (x *SignRound7Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound7Message proto.InternalMessageInfo +// Deprecated: Use SignRound7Message.ProtoReflect.Descriptor instead. +func (*SignRound7Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{7} +} -func (m *SignRound7Message) GetCommitment() []byte { - if m != nil { - return m.Commitment +func (x *SignRound7Message) GetCommitment() []byte { + if x != nil { + return x.Commitment } return nil } @@ -463,40 +533,48 @@ func (m *SignRound7Message) GetCommitment() []byte { // // Represents a BROADCAST message sent to all parties during Round 8 of the ECDSA TSS signing protocol. type SignRound8Message struct { - DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound8Message) Reset() { *m = SignRound8Message{} } -func (m *SignRound8Message) String() string { return proto.CompactTextString(m) } -func (*SignRound8Message) ProtoMessage() {} -func (*SignRound8Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{8} + DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` } -func (m *SignRound8Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound8Message.Unmarshal(m, b) -} -func (m *SignRound8Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound8Message.Marshal(b, m, deterministic) -} -func (m *SignRound8Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound8Message.Merge(m, src) +func (x *SignRound8Message) Reset() { + *x = SignRound8Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound8Message) XXX_Size() int { - return xxx_messageInfo_SignRound8Message.Size(m) + +func (x *SignRound8Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound8Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound8Message.DiscardUnknown(m) + +func (*SignRound8Message) ProtoMessage() {} + +func (x *SignRound8Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound8Message proto.InternalMessageInfo +// Deprecated: Use SignRound8Message.ProtoReflect.Descriptor instead. +func (*SignRound8Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{8} +} -func (m *SignRound8Message) GetDeCommitment() [][]byte { - if m != nil { - return m.DeCommitment +func (x *SignRound8Message) GetDeCommitment() [][]byte { + if x != nil { + return x.DeCommitment } return nil } @@ -504,84 +582,297 @@ func (m *SignRound8Message) GetDeCommitment() [][]byte { // // Represents a BROADCAST message sent to all parties during Round 9 of the ECDSA TSS signing protocol. type SignRound9Message struct { - S []byte `protobuf:"bytes,1,opt,name=s,proto3" json:"s,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound9Message) Reset() { *m = SignRound9Message{} } -func (m *SignRound9Message) String() string { return proto.CompactTextString(m) } -func (*SignRound9Message) ProtoMessage() {} -func (*SignRound9Message) Descriptor() ([]byte, []int) { - return fileDescriptor_5f861bfc687bec19, []int{9} + S []byte `protobuf:"bytes,1,opt,name=s,proto3" json:"s,omitempty"` } -func (m *SignRound9Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound9Message.Unmarshal(m, b) -} -func (m *SignRound9Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound9Message.Marshal(b, m, deterministic) -} -func (m *SignRound9Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound9Message.Merge(m, src) +func (x *SignRound9Message) Reset() { + *x = SignRound9Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_ecdsa_signing_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound9Message) XXX_Size() int { - return xxx_messageInfo_SignRound9Message.Size(m) + +func (x *SignRound9Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound9Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound9Message.DiscardUnknown(m) + +func (*SignRound9Message) ProtoMessage() {} + +func (x *SignRound9Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_ecdsa_signing_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound9Message proto.InternalMessageInfo +// Deprecated: Use SignRound9Message.ProtoReflect.Descriptor instead. +func (*SignRound9Message) Descriptor() ([]byte, []int) { + return file_protob_ecdsa_signing_proto_rawDescGZIP(), []int{9} +} -func (m *SignRound9Message) GetS() []byte { - if m != nil { - return m.S +func (x *SignRound9Message) GetS() []byte { + if x != nil { + return x.S } return nil } -func init() { - proto.RegisterType((*SignRound1Message1)(nil), "SignRound1Message1") - proto.RegisterType((*SignRound1Message2)(nil), "SignRound1Message2") - proto.RegisterType((*SignRound2Message)(nil), "SignRound2Message") - proto.RegisterType((*SignRound3Message)(nil), "SignRound3Message") - proto.RegisterType((*SignRound4Message)(nil), "SignRound4Message") - proto.RegisterType((*SignRound5Message)(nil), "SignRound5Message") - proto.RegisterType((*SignRound6Message)(nil), "SignRound6Message") - proto.RegisterType((*SignRound7Message)(nil), "SignRound7Message") - proto.RegisterType((*SignRound8Message)(nil), "SignRound8Message") - proto.RegisterType((*SignRound9Message)(nil), "SignRound9Message") -} - -func init() { proto.RegisterFile("protob/ecdsa-signing.proto", fileDescriptor_5f861bfc687bec19) } - -var fileDescriptor_5f861bfc687bec19 = []byte{ - // 395 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x93, 0x5f, 0x4b, 0xe3, 0x40, - 0x14, 0xc5, 0x49, 0xfa, 0xff, 0x6e, 0xba, 0xa5, 0xc3, 0xc2, 0x0e, 0x5d, 0x58, 0xba, 0xb3, 0x2c, - 0x74, 0x17, 0xd6, 0x92, 0xb4, 0x6a, 0x7d, 0xb4, 0x3e, 0x2b, 0xa5, 0x56, 0xb4, 0xbe, 0x84, 0x64, - 0x32, 0xa6, 0x01, 0x9b, 0x09, 0x49, 0x5a, 0xed, 0x47, 0xf1, 0xc9, 0xaf, 0x2a, 0x9d, 0x64, 0xca, - 0xb4, 0x15, 0xd4, 0x37, 0x1f, 0xef, 0x3d, 0xbf, 0x3b, 0xe7, 0xce, 0x81, 0x0b, 0xad, 0x28, 0xe6, - 0x29, 0x77, 0xbb, 0x8c, 0x7a, 0x89, 0xf3, 0x3f, 0x09, 0xfc, 0x30, 0x08, 0xfd, 0x03, 0xd1, 0x24, - 0x17, 0x80, 0x2e, 0x03, 0x3f, 0x1c, 0xf3, 0x45, 0xe8, 0x99, 0xe7, 0x2c, 0x49, 0x1c, 0x9f, 0x99, - 0xc8, 0x00, 0x8d, 0x62, 0xad, 0xad, 0x75, 0x8c, 0xb1, 0x46, 0xd1, 0x3f, 0x68, 0xc6, 0x4e, 0xe8, - 0x33, 0x3b, 0x8a, 0x39, 0xbf, 0xb3, 0x9d, 0xfb, 0x80, 0x32, 0xac, 0xb7, 0x0b, 0x1d, 0x63, 0xdc, - 0x10, 0xc2, 0x68, 0xdd, 0x3f, 0x5d, 0xb7, 0x49, 0xff, 0x95, 0xf7, 0x2c, 0xf4, 0x13, 0x80, 0xf2, - 0xf9, 0x3c, 0x48, 0xe7, 0x2c, 0x4c, 0xf3, 0x87, 0x95, 0x0e, 0x89, 0xa1, 0xb9, 0x99, 0xb2, 0xf2, - 0x29, 0xf4, 0x15, 0x74, 0x6a, 0xe6, 0xb0, 0x4e, 0x4d, 0x51, 0x5b, 0x58, 0xcf, 0x6b, 0x0b, 0xfd, - 0x80, 0x5a, 0xb6, 0x90, 0xcb, 0x5d, 0x5c, 0x10, 0xeb, 0x54, 0x45, 0x63, 0xc8, 0x5d, 0xd4, 0x06, - 0x63, 0x23, 0xda, 0x0f, 0x14, 0x17, 0x85, 0x0e, 0x52, 0xbf, 0xa6, 0xe4, 0xaf, 0xe2, 0xd9, 0x93, - 0x9e, 0xdf, 0xa0, 0x94, 0xce, 0x58, 0xea, 0xe4, 0xb6, 0x59, 0x41, 0x9e, 0x34, 0x85, 0xed, 0x4b, - 0xf6, 0x37, 0xd4, 0x3d, 0x66, 0x6f, 0xfd, 0x6b, 0xed, 0x61, 0x78, 0xec, 0x6c, 0xd3, 0x43, 0x04, - 0xea, 0x32, 0xb5, 0x68, 0xe6, 0xd8, 0x8f, 0xf9, 0xfe, 0x5f, 0xa2, 0x2c, 0xb2, 0x68, 0xe6, 0xdc, - 0xec, 0x32, 0x2b, 0x5c, 0xd8, 0x65, 0xa6, 0xe8, 0x3b, 0x54, 0x32, 0x26, 0xc5, 0x45, 0xa1, 0x96, - 0x45, 0x39, 0x21, 0x3d, 0x65, 0xb5, 0x43, 0xb9, 0xda, 0x5b, 0x79, 0x3f, 0xeb, 0xca, 0xd4, 0xd1, - 0xa7, 0xfa, 0x10, 0xfa, 0x03, 0x8d, 0xa5, 0xbd, 0x6d, 0x51, 0x12, 0x80, 0xb1, 0x1c, 0x29, 0x1e, - 0x7b, 0xd8, 0x0a, 0x97, 0xf7, 0xb0, 0x29, 0x6a, 0x41, 0x4d, 0x62, 0x29, 0xae, 0x08, 0xa0, 0x92, - 0x01, 0x13, 0x55, 0x5b, 0xe0, 0xaa, 0xaa, 0x5d, 0x6d, 0xc5, 0x7a, 0xfc, 0xde, 0x58, 0x07, 0xca, - 0xd0, 0xe0, 0x23, 0xa9, 0x92, 0x5f, 0xca, 0xe4, 0x89, 0x9c, 0x34, 0x40, 0x4b, 0xe4, 0x15, 0x26, - 0xc3, 0xc6, 0x6d, 0x5d, 0x1c, 0x70, 0x37, 0x3f, 0x60, 0xb7, 0x2c, 0x2e, 0xb8, 0xf7, 0x12, 0x00, - 0x00, 0xff, 0xff, 0xe8, 0xdb, 0x9c, 0xf3, 0xdf, 0x03, 0x00, 0x00, +var File_protob_ecdsa_signing_proto protoreflect.FileDescriptor + +var file_protob_ecdsa_signing_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x65, 0x63, 0x64, 0x73, 0x61, 0x2d, 0x73, + 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x62, 0x69, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x65, 0x63, 0x64, + 0x73, 0x61, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x4e, 0x0a, 0x12, 0x53, 0x69, + 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, + 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x63, 0x12, 0x2a, + 0x0a, 0x11, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, + 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x12, 0x53, 0x69, + 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x22, 0x72, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x02, 0x63, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x02, 0x63, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x62, + 0x6f, 0x62, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x42, + 0x6f, 0x62, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x62, 0x5f, + 0x77, 0x63, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x42, + 0x6f, 0x62, 0x57, 0x63, 0x22, 0x29, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x33, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x68, 0x65, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x74, 0x68, 0x65, 0x74, 0x61, 0x22, + 0x99, 0x01, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x34, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x64, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x72, + 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x58, 0x12, 0x22, + 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, 0x68, + 0x61, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x54, 0x22, 0x33, 0x0a, 0x11, 0x53, + 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x35, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x22, 0x9f, 0x02, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x36, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x64, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x70, + 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x78, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x58, 0x12, + 0x22, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, + 0x68, 0x61, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x54, 0x12, 0x25, 0x0a, 0x0f, + 0x76, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x78, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x76, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, + 0x68, 0x61, 0x58, 0x12, 0x25, 0x0a, 0x0f, 0x76, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x76, 0x50, + 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x59, 0x12, 0x1a, 0x0a, 0x09, 0x76, 0x5f, + 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x76, + 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x54, 0x12, 0x1a, 0x0a, 0x09, 0x76, 0x5f, 0x70, 0x72, 0x6f, 0x6f, + 0x66, 0x5f, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x76, 0x50, 0x72, 0x6f, 0x6f, + 0x66, 0x55, 0x22, 0x33, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x37, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x38, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x38, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x64, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x22, 0x21, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x39, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x01, 0x73, 0x42, 0x0f, 0x5a, 0x0d, 0x65, 0x63, 0x64, 0x73, 0x61, 0x2f, 0x73, 0x69, + 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protob_ecdsa_signing_proto_rawDescOnce sync.Once + file_protob_ecdsa_signing_proto_rawDescData = file_protob_ecdsa_signing_proto_rawDesc +) + +func file_protob_ecdsa_signing_proto_rawDescGZIP() []byte { + file_protob_ecdsa_signing_proto_rawDescOnce.Do(func() { + file_protob_ecdsa_signing_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_ecdsa_signing_proto_rawDescData) + }) + return file_protob_ecdsa_signing_proto_rawDescData +} + +var file_protob_ecdsa_signing_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_protob_ecdsa_signing_proto_goTypes = []interface{}{ + (*SignRound1Message1)(nil), // 0: binance.tsslib.ecdsa.signing.SignRound1Message1 + (*SignRound1Message2)(nil), // 1: binance.tsslib.ecdsa.signing.SignRound1Message2 + (*SignRound2Message)(nil), // 2: binance.tsslib.ecdsa.signing.SignRound2Message + (*SignRound3Message)(nil), // 3: binance.tsslib.ecdsa.signing.SignRound3Message + (*SignRound4Message)(nil), // 4: binance.tsslib.ecdsa.signing.SignRound4Message + (*SignRound5Message)(nil), // 5: binance.tsslib.ecdsa.signing.SignRound5Message + (*SignRound6Message)(nil), // 6: binance.tsslib.ecdsa.signing.SignRound6Message + (*SignRound7Message)(nil), // 7: binance.tsslib.ecdsa.signing.SignRound7Message + (*SignRound8Message)(nil), // 8: binance.tsslib.ecdsa.signing.SignRound8Message + (*SignRound9Message)(nil), // 9: binance.tsslib.ecdsa.signing.SignRound9Message +} +var file_protob_ecdsa_signing_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_protob_ecdsa_signing_proto_init() } +func file_protob_ecdsa_signing_proto_init() { + if File_protob_ecdsa_signing_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_ecdsa_signing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound1Message1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound1Message2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound2Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound3Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound4Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound5Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound6Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound7Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound8Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_ecdsa_signing_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound9Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_ecdsa_signing_proto_rawDesc, + NumEnums: 0, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_ecdsa_signing_proto_goTypes, + DependencyIndexes: file_protob_ecdsa_signing_proto_depIdxs, + MessageInfos: file_protob_ecdsa_signing_proto_msgTypes, + }.Build() + File_protob_ecdsa_signing_proto = out.File + file_protob_ecdsa_signing_proto_rawDesc = nil + file_protob_ecdsa_signing_proto_goTypes = nil + file_protob_ecdsa_signing_proto_depIdxs = nil } diff --git a/ecdsa/signing/finalize.go b/ecdsa/signing/finalize.go index ae0ca8ac..995702fe 100644 --- a/ecdsa/signing/finalize.go +++ b/ecdsa/signing/finalize.go @@ -12,8 +12,8 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *finalization) Start() *tss.Error { @@ -25,7 +25,7 @@ func (round *finalization) Start() *tss.Error { round.resetOK() sumS := round.temp.si - modN := common.ModInt(tss.EC().Params().N) + modN := common.ModInt(round.Params().EC().Params().N) for j := range round.Parties().IDs() { round.ok[j] = true @@ -38,7 +38,7 @@ func (round *finalization) Start() *tss.Error { recid := 0 // byte v = if(R.X > curve.N) then 2 else 0) | (if R.Y.IsEven then 0 else 1); - if round.temp.rx.Cmp(tss.EC().Params().N) > 0 { + if round.temp.rx.Cmp(round.Params().EC().Params().N) > 0 { recid = 2 } if round.temp.ry.Bit(0) != 0 { @@ -49,21 +49,22 @@ func (round *finalization) Start() *tss.Error { // https://github.com/btcsuite/btcd/blob/c26ffa870fd817666a857af1bf6498fabba1ffe3/btcec/signature.go#L442-L444 // This is needed because of tendermint checks here: // https://github.com/tendermint/tendermint/blob/d9481e3648450cb99e15c6a070c1fb69aa0c255b/crypto/secp256k1/secp256k1_nocgo.go#L43-L47 - secp256k1halfN := new(big.Int).Rsh(tss.EC().Params().N, 1) + secp256k1halfN := new(big.Int).Rsh(round.Params().EC().Params().N, 1) if sumS.Cmp(secp256k1halfN) > 0 { - sumS.Sub(tss.EC().Params().N, sumS) + sumS.Sub(round.Params().EC().Params().N, sumS) recid ^= 1 } // save the signature for final output - round.data.Signature = append(round.temp.rx.Bytes(), sumS.Bytes()...) + bitSizeInBytes := round.Params().EC().Params().BitSize / 8 + round.data.R = padToLengthBytesInPlace(round.temp.rx.Bytes(), bitSizeInBytes) + round.data.S = padToLengthBytesInPlace(sumS.Bytes(), bitSizeInBytes) + round.data.Signature = append(round.data.R, round.data.S...) round.data.SignatureRecovery = []byte{byte(recid)} - round.data.R = round.temp.rx.Bytes() - round.data.S = sumS.Bytes() round.data.M = round.temp.m.Bytes() pk := ecdsa.PublicKey{ - Curve: tss.EC(), + Curve: round.Params().EC(), X: round.key.ECDSAPub.X(), Y: round.key.ECDSAPub.Y(), } @@ -72,7 +73,7 @@ func (round *finalization) Start() *tss.Error { return round.WrapError(fmt.Errorf("signature verification failed")) } - round.end <- *round.data + round.end <- round.data return nil } @@ -90,3 +91,13 @@ func (round *finalization) Update() (bool, *tss.Error) { func (round *finalization) NextRound() tss.Round { return nil // finished! } + +func padToLengthBytesInPlace(src []byte, length int) []byte { + oriLen := len(src) + if oriLen < length { + for i := 0; i < length-oriLen; i++ { + src = append([]byte{0}, src...) + } + } + return src +} diff --git a/ecdsa/signing/key_derivation_util.go b/ecdsa/signing/key_derivation_util.go new file mode 100644 index 00000000..668d9d4f --- /dev/null +++ b/ecdsa/signing/key_derivation_util.go @@ -0,0 +1,59 @@ +// Copyright © 2021 Swingby + +package signing + +import ( + "crypto/ecdsa" + "crypto/elliptic" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/ckd" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + + "github.com/btcsuite/btcd/chaincfg" +) + +func UpdatePublicKeyAndAdjustBigXj(keyDerivationDelta *big.Int, keys []keygen.LocalPartySaveData, extendedChildPk *ecdsa.PublicKey, ec elliptic.Curve) error { + var err error + gDelta := crypto.ScalarBaseMult(ec, keyDerivationDelta) + for k := range keys { + keys[k].ECDSAPub, err = crypto.NewECPoint(ec, extendedChildPk.X, extendedChildPk.Y) + if err != nil { + common.Logger.Errorf("error creating new extended child public key") + return err + } + // Suppose X_j has shamir shares X_j0, X_j1, ..., X_jn + // So X_j + D has shamir shares X_j0 + D, X_j1 + D, ..., X_jn + D + for j := range keys[k].BigXj { + keys[k].BigXj[j], err = keys[k].BigXj[j].Add(gDelta) + if err != nil { + common.Logger.Errorf("error in delta operation") + return err + } + } + } + return nil +} + +func derivingPubkeyFromPath(masterPub *crypto.ECPoint, chainCode []byte, path []uint32, ec elliptic.Curve) (*big.Int, *ckd.ExtendedKey, error) { + // build ecdsa key pair + pk := ecdsa.PublicKey{ + Curve: ec, + X: masterPub.X(), + Y: masterPub.Y(), + } + + net := &chaincfg.MainNetParams + extendedParentPk := &ckd.ExtendedKey{ + PublicKey: pk, + Depth: 0, + ChildIndex: 0, + ChainCode: chainCode[:], + ParentFP: []byte{0x00, 0x00, 0x00, 0x00}, + Version: net.HDPrivateKeyID[:], + } + + return ckd.DeriveChildKeyFromHierarchy(path, extendedParentPk, ec.Params().N, ec) +} diff --git a/ecdsa/signing/local_party.go b/ecdsa/signing/local_party.go index cde5c271..ae34ad00 100644 --- a/ecdsa/signing/local_party.go +++ b/ecdsa/signing/local_party.go @@ -11,12 +11,12 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/mta" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/mta" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Implements Party @@ -31,11 +31,11 @@ type ( keys keygen.LocalPartySaveData temp localTempData - data common.SignatureData + data *common.SignatureData // outbound messaging out chan<- tss.Message - end chan<- common.SignatureData + end chan<- *common.SignatureData } localMessageStore struct { @@ -61,6 +61,7 @@ type ( theta, thetaInverse, sigma, + keyDerivationDelta, gamma *big.Int cis []*big.Int bigWs []*crypto.ECPoint @@ -90,6 +91,9 @@ type ( Ui, Ti *crypto.ECPoint DTelda cmt.HashDeCommitment + + ssidNonce *big.Int + ssid []byte } ) @@ -98,7 +102,18 @@ func NewLocalParty( params *tss.Parameters, key keygen.LocalPartySaveData, out chan<- tss.Message, - end chan<- common.SignatureData, + end chan<- *common.SignatureData) tss.Party { + return NewLocalPartyWithKDD(msg, params, key, nil, out, end) +} + +// NewLocalPartyWithKDD returns a party with key derivation delta for HD support +func NewLocalPartyWithKDD( + msg *big.Int, + params *tss.Parameters, + key keygen.LocalPartySaveData, + keyDerivationDelta *big.Int, + out chan<- tss.Message, + end chan<- *common.SignatureData, ) tss.Party { partyCount := len(params.Parties().IDs()) p := &LocalParty{ @@ -106,7 +121,7 @@ func NewLocalParty( params: params, keys: keygen.BuildLocalSaveDataSubset(key, params.Parties().IDs()), temp: localTempData{}, - data: common.SignatureData{}, + data: &common.SignatureData{}, out: out, end: end, } @@ -122,6 +137,7 @@ func NewLocalParty( p.temp.signRound8Messages = make([]tss.ParsedMessage, partyCount) p.temp.signRound9Messages = make([]tss.ParsedMessage, partyCount) // temp data init + p.temp.keyDerivationDelta = keyDerivationDelta p.temp.m = msg p.temp.cis = make([]*big.Int, partyCount) p.temp.bigWs = make([]*crypto.ECPoint, partyCount) @@ -135,7 +151,7 @@ func NewLocalParty( } func (p *LocalParty) FirstRound() tss.Round { - return newRound1(p.params, &p.keys, &p.data, &p.temp, p.out, p.end) + return newRound1(p.params, &p.keys, p.data, &p.temp, p.out, p.end) } func (p *LocalParty) Start() *tss.Error { diff --git a/ecdsa/signing/local_party_test.go b/ecdsa/signing/local_party_test.go index 574644db..a1680b5f 100644 --- a/ecdsa/signing/local_party_test.go +++ b/ecdsa/signing/local_party_test.go @@ -14,13 +14,14 @@ import ( "sync/atomic" "testing" + "github.com/btcsuite/btcd/btcec/v2" "github.com/ipfs/go-log" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -51,13 +52,13 @@ func TestE2EConcurrent(t *testing.T) { errCh := make(chan *tss.Error, len(signPIDs)) outCh := make(chan tss.Message, len(signPIDs)) - endCh := make(chan common.SignatureData, len(signPIDs)) + endCh := make(chan *common.SignatureData, len(signPIDs)) updater := test.SharedPartyUpdater // init the parties for i := 0; i < len(signPIDs); i++ { - params := tss.NewParameters(p2pCtx, signPIDs[i], len(signPIDs), threshold) + params := tss.NewParameters(tss.S256(), p2pCtx, signPIDs[i], len(signPIDs), threshold) P := NewLocalParty(big.NewInt(42), params, keys[i], outCh, endCh).(*LocalParty) parties = append(parties, P) @@ -102,7 +103,7 @@ signing: r := parties[0].temp.rx fmt.Printf("sign result: R(%s, %s), r=%s\n", R.X().String(), R.Y().String(), r.String()) - modN := common.ModInt(tss.EC().Params().N) + modN := common.ModInt(tss.S256().Params().N) // BEGIN check s correctness sumS := big.NewInt(0) @@ -129,3 +130,135 @@ signing: } } } + +func TestE2EWithHDKeyDerivation(t *testing.T) { + setUp("info") + threshold := testThreshold + + // PHASE: load keygen fixtures + keys, signPIDs, err := keygen.LoadKeygenTestFixturesRandomSet(testThreshold+1, testParticipants) + assert.NoError(t, err, "should load keygen fixtures") + assert.Equal(t, testThreshold+1, len(keys)) + assert.Equal(t, testThreshold+1, len(signPIDs)) + + chainCode := make([]byte, 32) + max32b := new(big.Int).Lsh(new(big.Int).SetUint64(1), 256) + max32b = new(big.Int).Sub(max32b, new(big.Int).SetUint64(1)) + fillBytes(common.GetRandomPositiveInt(max32b), chainCode) + + il, extendedChildPk, errorDerivation := derivingPubkeyFromPath(keys[0].ECDSAPub, chainCode, []uint32{12, 209, 3}, btcec.S256()) + assert.NoErrorf(t, errorDerivation, "there should not be an error deriving the child public key") + + keyDerivationDelta := il + + err = UpdatePublicKeyAndAdjustBigXj(keyDerivationDelta, keys, &extendedChildPk.PublicKey, btcec.S256()) + assert.NoErrorf(t, err, "there should not be an error setting the derived keys") + + // PHASE: signing + // use a shuffled selection of the list of parties for this test + p2pCtx := tss.NewPeerContext(signPIDs) + parties := make([]*LocalParty, 0, len(signPIDs)) + + errCh := make(chan *tss.Error, len(signPIDs)) + outCh := make(chan tss.Message, len(signPIDs)) + endCh := make(chan *common.SignatureData, len(signPIDs)) + + updater := test.SharedPartyUpdater + + // init the parties + for i := 0; i < len(signPIDs); i++ { + params := tss.NewParameters(tss.S256(), p2pCtx, signPIDs[i], len(signPIDs), threshold) + + P := NewLocalPartyWithKDD(big.NewInt(42), params, keys[i], keyDerivationDelta, outCh, endCh).(*LocalParty) + parties = append(parties, P) + go func(P *LocalParty) { + if err := P.Start(); err != nil { + errCh <- err + } + }(P) + } + + var ended int32 +signing: + for { + select { + case err := <-errCh: + common.Logger.Errorf("Error: %s", err) + assert.FailNow(t, err.Error()) + break signing + + case msg := <-outCh: + dest := msg.GetTo() + if dest == nil { + for _, P := range parties { + if P.PartyID().Index == msg.GetFrom().Index { + continue + } + go updater(P, msg, errCh) + } + } else { + if dest[0].Index == msg.GetFrom().Index { + t.Fatalf("party %d tried to send a message to itself (%d)", dest[0].Index, msg.GetFrom().Index) + } + go updater(parties[dest[0].Index], msg, errCh) + } + + case <-endCh: + atomic.AddInt32(&ended, 1) + if atomic.LoadInt32(&ended) == int32(len(signPIDs)) { + t.Logf("Done. Received signature data from %d participants", ended) + R := parties[0].temp.bigR + r := parties[0].temp.rx + fmt.Printf("sign result: R(%s, %s), r=%s\n", R.X().String(), R.Y().String(), r.String()) + + modN := common.ModInt(tss.S256().Params().N) + + // BEGIN check s correctness + sumS := big.NewInt(0) + for _, p := range parties { + sumS = modN.Add(sumS, p.temp.si) + } + fmt.Printf("S: %s\n", sumS.String()) + // END check s correctness + + // BEGIN ECDSA verify + pkX, pkY := keys[0].ECDSAPub.X(), keys[0].ECDSAPub.Y() + pk := ecdsa.PublicKey{ + Curve: tss.EC(), + X: pkX, + Y: pkY, + } + ok := ecdsa.Verify(&pk, big.NewInt(42).Bytes(), R.X(), sumS) + assert.True(t, ok, "ecdsa verify must pass") + t.Log("ECDSA signing test done.") + // END ECDSA verify + + break signing + } + } + } +} + +func TestFillTo32BytesInPlace(t *testing.T) { + s := big.NewInt(123456789) + normalizedS := padToLengthBytesInPlace(s.Bytes(), 32) + assert.True(t, big.NewInt(0).SetBytes(normalizedS).Cmp(s) == 0) + assert.Equal(t, 32, len(normalizedS)) + assert.NotEqual(t, 32, len(s.Bytes())) +} + +func fillBytes(x *big.Int, buf []byte) []byte { + b := x.Bytes() + if len(b) > len(buf) { + panic("buffer too small") + } + offset := len(buf) - len(b) + for i := range buf { + if i < offset { + buf[i] = 0 + } else { + buf[i] = b[i-offset] + } + } + return buf +} diff --git a/ecdsa/signing/messages.go b/ecdsa/signing/messages.go index 3cbfa39d..8d3d853a 100644 --- a/ecdsa/signing/messages.go +++ b/ecdsa/signing/messages.go @@ -7,16 +7,15 @@ package signing import ( + "crypto/elliptic" "math/big" - "github.com/golang/protobuf/proto" - - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/mta" - "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/mta" + "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/tss" ) // These messages were generated from Protocol Buffers definitions into ecdsa-signing.pb.go @@ -38,19 +37,6 @@ var ( } ) -func init() { - proto.RegisterType((*SignRound1Message1)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound1Message1") - proto.RegisterType((*SignRound1Message2)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound1Message2") - proto.RegisterType((*SignRound2Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound2Message") - proto.RegisterType((*SignRound3Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound3Message") - proto.RegisterType((*SignRound4Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound4Message") - proto.RegisterType((*SignRound5Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound5Message") - proto.RegisterType((*SignRound6Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound6Message") - proto.RegisterType((*SignRound7Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound7Message") - proto.RegisterType((*SignRound8Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound8Message") - proto.RegisterType((*SignRound9Message)(nil), tss.ECDSAProtoNamePrefix+"signing.SignRound9Message") -} - // ----- // func NewSignRound1Message1( @@ -150,8 +136,8 @@ func (m *SignRound2Message) UnmarshalProofBob() (*mta.ProofBob, error) { return mta.ProofBobFromBytes(m.ProofBob) } -func (m *SignRound2Message) UnmarshalProofBobWC() (*mta.ProofBobWC, error) { - return mta.ProofBobWCFromBytes(m.ProofBobWc) +func (m *SignRound2Message) UnmarshalProofBobWC(ec elliptic.Curve) (*mta.ProofBobWC, error) { + return mta.ProofBobWCFromBytes(ec, m.ProofBobWc) } // ----- // @@ -211,9 +197,9 @@ func (m *SignRound4Message) UnmarshalDeCommitment() []*big.Int { return cmt.NewHashDeCommitmentFromBytes(deComBzs) } -func (m *SignRound4Message) UnmarshalZKProof() (*schnorr.ZKProof, error) { +func (m *SignRound4Message) UnmarshalZKProof(ec elliptic.Curve) (*schnorr.ZKProof, error) { point, err := crypto.NewECPoint( - tss.EC(), + ec, new(big.Int).SetBytes(m.GetProofAlphaX()), new(big.Int).SetBytes(m.GetProofAlphaY())) if err != nil { @@ -295,9 +281,9 @@ func (m *SignRound6Message) UnmarshalDeCommitment() []*big.Int { return cmt.NewHashDeCommitmentFromBytes(deComBzs) } -func (m *SignRound6Message) UnmarshalZKProof() (*schnorr.ZKProof, error) { +func (m *SignRound6Message) UnmarshalZKProof(ec elliptic.Curve) (*schnorr.ZKProof, error) { point, err := crypto.NewECPoint( - tss.EC(), + ec, new(big.Int).SetBytes(m.GetProofAlphaX()), new(big.Int).SetBytes(m.GetProofAlphaY())) if err != nil { @@ -309,9 +295,9 @@ func (m *SignRound6Message) UnmarshalZKProof() (*schnorr.ZKProof, error) { }, nil } -func (m *SignRound6Message) UnmarshalZKVProof() (*schnorr.ZKVProof, error) { +func (m *SignRound6Message) UnmarshalZKVProof(ec elliptic.Curve) (*schnorr.ZKVProof, error) { point, err := crypto.NewECPoint( - tss.EC(), + ec, new(big.Int).SetBytes(m.GetVProofAlphaX()), new(big.Int).SetBytes(m.GetVProofAlphaY())) if err != nil { diff --git a/ecdsa/signing/prepare.go b/ecdsa/signing/prepare.go index 149fa331..ae6d186c 100644 --- a/ecdsa/signing/prepare.go +++ b/ecdsa/signing/prepare.go @@ -7,17 +7,17 @@ package signing import ( + "crypto/elliptic" "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" ) // PrepareForSigning(), GG18Spec (11) Fig. 14 -func PrepareForSigning(i, pax int, xi *big.Int, ks []*big.Int, bigXs []*crypto.ECPoint) (wi *big.Int, bigWs []*crypto.ECPoint) { - modQ := common.ModInt(tss.EC().Params().N) +func PrepareForSigning(ec elliptic.Curve, i, pax int, xi *big.Int, ks []*big.Int, bigXs []*crypto.ECPoint) (wi *big.Int, bigWs []*crypto.ECPoint) { + modQ := common.ModInt(ec.Params().N) if len(ks) != len(bigXs) { panic(fmt.Errorf("PrepareForSigning: len(ks) != len(bigXs) (%d != %d)", len(ks), len(bigXs))) } @@ -34,8 +34,13 @@ func PrepareForSigning(i, pax int, xi *big.Int, ks []*big.Int, bigXs []*crypto.E if j == i { continue } + ksj := ks[j] + ksi := ks[i] + if ksj.Cmp(ksi) == 0 { + panic(fmt.Errorf("index of two parties are equal")) + } // big.Int Div is calculated as: a/b = a * modInv(b,q) - coef := modQ.Mul(ks[j], modQ.ModInverse(new(big.Int).Sub(ks[j], ks[i]))) + coef := modQ.Mul(ks[j], modQ.ModInverse(new(big.Int).Sub(ksj, ksi))) wi = modQ.Mul(wi, coef) } diff --git a/ecdsa/signing/round_1.go b/ecdsa/signing/round_1.go index 99a3f06b..924b080f 100644 --- a/ecdsa/signing/round_1.go +++ b/ecdsa/signing/round_1.go @@ -11,12 +11,12 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/mta" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/mta" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) var ( @@ -24,7 +24,7 @@ var ( ) // round 1 represents round 1 of the signing part of the GG18 ECDSA TSS spec (Gennaro, Goldfeder; 2018) -func newRound1(params *tss.Parameters, key *keygen.LocalPartySaveData, data *common.SignatureData, temp *localTempData, out chan<- tss.Message, end chan<- common.SignatureData) tss.Round { +func newRound1(params *tss.Parameters, key *keygen.LocalPartySaveData, data *common.SignatureData, temp *localTempData, out chan<- tss.Message, end chan<- *common.SignatureData) tss.Round { return &round1{ &base{params, key, data, temp, out, end, make([]bool, len(params.Parties().IDs())), false, 1}} } @@ -38,18 +38,24 @@ func (round *round1) Start() *tss.Error { // but considered different blockchain use different hash function we accept the converted big.Int // if this big.Int is not belongs to Zq, the client might not comply with common rule (for ECDSA): // https://github.com/btcsuite/btcd/blob/c26ffa870fd817666a857af1bf6498fabba1ffe3/btcec/signature.go#L263 - if round.temp.m.Cmp(tss.EC().Params().N) >= 0 { + if round.temp.m.Cmp(round.Params().EC().Params().N) >= 0 { return round.WrapError(errors.New("hashed message is not valid")) } round.number = 1 round.started = true round.resetOK() + round.temp.ssidNonce = new(big.Int).SetUint64(0) + ssid, err := round.getSSID() + if err != nil { + return round.WrapError(err) + } + round.temp.ssid = ssid - k := common.GetRandomPositiveInt(tss.EC().Params().N) - gamma := common.GetRandomPositiveInt(tss.EC().Params().N) + k := common.GetRandomPositiveInt(round.Params().EC().Params().N) + gamma := common.GetRandomPositiveInt(round.Params().EC().Params().N) - pointGamma := crypto.ScalarBaseMult(tss.EC(), gamma) + pointGamma := crypto.ScalarBaseMult(round.Params().EC(), gamma) cmt := commitments.NewHashCommitment(pointGamma.X(), pointGamma.Y()) round.temp.k = k round.temp.gamma = gamma @@ -63,7 +69,7 @@ func (round *round1) Start() *tss.Error { if j == i { continue } - cA, pi, err := mta.AliceInit(round.key.PaillierPKs[i], k, round.key.NTildej[j], round.key.H1j[j], round.key.H2j[j]) + cA, pi, err := mta.AliceInit(round.Params().EC(), round.key.PaillierPKs[i], k, round.key.NTildej[j], round.key.H1j[j], round.key.H2j[j]) if err != nil { return round.WrapError(fmt.Errorf("failed to init mta: %v", err)) } @@ -121,10 +127,19 @@ func (round *round1) prepare() error { ks := round.key.Ks bigXs := round.key.BigXj + if round.temp.keyDerivationDelta != nil { + // adding the key derivation delta to the xi's + // Suppose x has shamir shares x_0, x_1, ..., x_n + // So x + D has shamir shares x_0 + D, x_1 + D, ..., x_n + D + mod := common.ModInt(round.Params().EC().Params().N) + xi = mod.Add(round.temp.keyDerivationDelta, xi) + round.key.Xi = xi + } + if round.Threshold()+1 > len(ks) { return fmt.Errorf("t+1=%d is not satisfied by the key count of %d", round.Threshold()+1, len(ks)) } - wi, bigWs := PrepareForSigning(i, len(ks), xi, ks, bigXs) + wi, bigWs := PrepareForSigning(round.Params().EC(), i, len(ks), xi, ks, bigXs) round.temp.w = wi round.temp.bigWs = bigWs diff --git a/ecdsa/signing/round_2.go b/ecdsa/signing/round_2.go index 37e8e0cf..9a23bf1e 100644 --- a/ecdsa/signing/round_2.go +++ b/ecdsa/signing/round_2.go @@ -8,12 +8,13 @@ package signing import ( "errors" + "math/big" "sync" errorspkg "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/crypto/mta" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto/mta" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round2) Start() *tss.Error { @@ -30,6 +31,7 @@ func (round *round2) Start() *tss.Error { errChs := make(chan *tss.Error, (len(round.Parties().IDs())-1)*2) wg := sync.WaitGroup{} wg.Add((len(round.Parties().IDs()) - 1) * 2) + ContextI := append(round.temp.ssid, new(big.Int).SetUint64(uint64(i)).Bytes()...) for j, Pj := range round.Parties().IDs() { if j == i { continue @@ -44,6 +46,8 @@ func (round *round2) Start() *tss.Error { return } beta, c1ji, _, pi1ji, err := mta.BobMid( + ContextI, + round.Parameters.EC(), round.key.PaillierPKs[j], rangeProofAliceJ, round.temp.gamma, @@ -72,6 +76,8 @@ func (round *round2) Start() *tss.Error { return } v, c2ji, _, pi2ji, err := mta.BobMidWC( + ContextI, + round.Parameters.EC(), round.key.PaillierPKs[j], rangeProofAliceJ, round.temp.w, @@ -114,16 +120,18 @@ func (round *round2) Start() *tss.Error { } func (round *round2) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound2Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round2) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/round_3.go b/ecdsa/signing/round_3.go index 709f7aaf..918648ef 100644 --- a/ecdsa/signing/round_3.go +++ b/ecdsa/signing/round_3.go @@ -13,9 +13,9 @@ import ( errorspkg "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto/mta" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto/mta" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round3) Start() *tss.Error { @@ -38,6 +38,7 @@ func (round *round3) Start() *tss.Error { if j == i { continue } + ContextJ := append(round.temp.ssid, new(big.Int).SetUint64(uint64(j)).Bytes()...) // Alice_end go func(j int, Pj *tss.PartyID) { defer wg.Done() @@ -48,6 +49,8 @@ func (round *round3) Start() *tss.Error { return } alphaIj, err := mta.AliceEnd( + ContextJ, + round.Params().EC(), round.key.PaillierPKs[i], proofBob, round.key.H1j[i], @@ -65,12 +68,14 @@ func (round *round3) Start() *tss.Error { go func(j int, Pj *tss.PartyID) { defer wg.Done() r2msg := round.temp.signRound2Messages[j].Content().(*SignRound2Message) - proofBobWC, err := r2msg.UnmarshalProofBobWC() + proofBobWC, err := r2msg.UnmarshalProofBobWC(round.Parameters.EC()) if err != nil { errChs <- round.WrapError(errorspkg.Wrapf(err, "UnmarshalProofBobWC failed"), Pj) return } uIj, err := mta.AliceEndWC( + ContextJ, + round.Params().EC(), round.key.PaillierPKs[i], proofBobWC, round.temp.bigWs[j], @@ -98,7 +103,7 @@ func (round *round3) Start() *tss.Error { return round.WrapError(errors.New("failed to calculate Alice_end or Alice_end_wc"), culprits...) } - modN := common.ModInt(tss.EC().Params().N) + modN := common.ModInt(round.Params().EC().Params().N) thelta := modN.Mul(round.temp.k, round.temp.gamma) sigma := modN.Mul(round.temp.k, round.temp.w) @@ -120,16 +125,18 @@ func (round *round3) Start() *tss.Error { } func (round *round3) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound3Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round3) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/round_4.go b/ecdsa/signing/round_4.go index dbf33e5f..7fc78993 100644 --- a/ecdsa/signing/round_4.go +++ b/ecdsa/signing/round_4.go @@ -12,9 +12,9 @@ import ( errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round4) Start() *tss.Error { @@ -28,7 +28,7 @@ func (round *round4) Start() *tss.Error { theta := *round.temp.theta thetaInverse := &theta - modN := common.ModInt(tss.EC().Params().N) + modN := common.ModInt(round.Params().EC().Params().N) for j := range round.Parties().IDs() { if j == round.PartyID().Index { @@ -41,7 +41,9 @@ func (round *round4) Start() *tss.Error { // compute the multiplicative inverse thelta mod q thetaInverse = modN.ModInverse(thetaInverse) - piGamma, err := schnorr.NewZKProof(round.temp.gamma, round.temp.pointGamma) + i := round.PartyID().Index + ContextI := append(round.temp.ssid, new(big.Int).SetUint64(uint64(i)).Bytes()...) + piGamma, err := schnorr.NewZKProof(ContextI, round.temp.gamma, round.temp.pointGamma) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewZKProof(gamma, bigGamma)")) } @@ -54,16 +56,18 @@ func (round *round4) Start() *tss.Error { } func (round *round4) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound4Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round4) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/round_5.go b/ecdsa/signing/round_5.go index 23e28d5f..f6ecf308 100644 --- a/ecdsa/signing/round_5.go +++ b/ecdsa/signing/round_5.go @@ -8,13 +8,14 @@ package signing import ( "errors" + "math/big" errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round5) Start() *tss.Error { @@ -30,6 +31,7 @@ func (round *round5) Start() *tss.Error { if j == round.PartyID().Index { continue } + ContextJ := common.AppendBigIntToBytesSlice(round.temp.ssid, big.NewInt(int64(j))) r1msg2 := round.temp.signRound1Message2s[j].Content().(*SignRound1Message2) r4msg := round.temp.signRound4Messages[j].Content().(*SignRound4Message) SCj, SDj := r1msg2.UnmarshalCommitment(), r4msg.UnmarshalDeCommitment() @@ -38,15 +40,15 @@ func (round *round5) Start() *tss.Error { if !ok || len(bigGammaJ) != 2 { return round.WrapError(errors.New("commitment verify failed"), Pj) } - bigGammaJPoint, err := crypto.NewECPoint(tss.EC(), bigGammaJ[0], bigGammaJ[1]) + bigGammaJPoint, err := crypto.NewECPoint(round.Params().EC(), bigGammaJ[0], bigGammaJ[1]) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewECPoint(bigGammaJ)"), Pj) } - proof, err := r4msg.UnmarshalZKProof() + proof, err := r4msg.UnmarshalZKProof(round.Params().EC()) if err != nil { return round.WrapError(errors.New("failed to unmarshal bigGamma proof"), Pj) } - ok = proof.Verify(bigGammaJPoint) + ok = proof.Verify(ContextJ, bigGammaJPoint) if !ok { return round.WrapError(errors.New("failed to prove bigGamma"), Pj) } @@ -57,7 +59,7 @@ func (round *round5) Start() *tss.Error { } R = R.ScalarMult(round.temp.thetaInverse) - N := tss.EC().Params().N + N := round.Params().EC().Params().N modN := common.ModInt(N) rx := R.X() ry := R.Y() @@ -70,8 +72,8 @@ func (round *round5) Start() *tss.Error { li := common.GetRandomPositiveInt(N) // li roI := common.GetRandomPositiveInt(N) // pi rToSi := R.ScalarMult(si) - liPoint := crypto.ScalarBaseMult(tss.EC(), li) - bigAi := crypto.ScalarBaseMult(tss.EC(), roI) + liPoint := crypto.ScalarBaseMult(round.Params().EC(), li) + bigAi := crypto.ScalarBaseMult(round.Params().EC(), roI) bigVi, err := rToSi.Add(liPoint) if err != nil { return round.WrapError(errors2.Wrapf(err, "rToSi.Add(li)")) @@ -96,16 +98,18 @@ func (round *round5) Start() *tss.Error { } func (round *round5) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound5Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round5) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/round_6.go b/ecdsa/signing/round_6.go index 536ca66e..0f8cdd03 100644 --- a/ecdsa/signing/round_6.go +++ b/ecdsa/signing/round_6.go @@ -8,11 +8,12 @@ package signing import ( "errors" + "math/big" errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round6) Start() *tss.Error { @@ -23,11 +24,13 @@ func (round *round6) Start() *tss.Error { round.started = true round.resetOK() - piAi, err := schnorr.NewZKProof(round.temp.roi, round.temp.bigAi) + i := round.PartyID().Index + ContextI := append(round.temp.ssid, new(big.Int).SetUint64(uint64(i)).Bytes()...) + piAi, err := schnorr.NewZKProof(ContextI, round.temp.roi, round.temp.bigAi) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewZKProof(roi, bigAi)")) } - piV, err := schnorr.NewZKVProof(round.temp.bigVi, round.temp.bigR, round.temp.si, round.temp.li) + piV, err := schnorr.NewZKVProof(ContextI, round.temp.bigVi, round.temp.bigR, round.temp.si, round.temp.li) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewZKVProof(bigVi, bigR, si, li)")) } @@ -39,16 +42,18 @@ func (round *round6) Start() *tss.Error { } func (round *round6) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound6Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round6) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/round_7.go b/ecdsa/signing/round_7.go index a8f0cb19..e89e0fcd 100644 --- a/ecdsa/signing/round_7.go +++ b/ecdsa/signing/round_7.go @@ -12,10 +12,10 @@ import ( errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round7) Start() *tss.Error { @@ -32,6 +32,7 @@ func (round *round7) Start() *tss.Error { if j == round.PartyID().Index { continue } + ContextJ := common.AppendBigIntToBytesSlice(round.temp.ssid, big.NewInt(int64(j))) r5msg := round.temp.signRound5Messages[j].Content().(*SignRound5Message) r6msg := round.temp.signRound6Messages[j].Content().(*SignRound6Message) cj, dj := r5msg.UnmarshalCommitment(), r6msg.UnmarshalDeCommitment() @@ -41,47 +42,47 @@ func (round *round7) Start() *tss.Error { return round.WrapError(errors.New("de-commitment for bigVj and bigAj failed"), Pj) } bigVjX, bigVjY, bigAjX, bigAjY := values[0], values[1], values[2], values[3] - bigVj, err := crypto.NewECPoint(tss.EC(), bigVjX, bigVjY) + bigVj, err := crypto.NewECPoint(round.Params().EC(), bigVjX, bigVjY) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewECPoint(bigVj)"), Pj) } bigVjs[j] = bigVj - bigAj, err := crypto.NewECPoint(tss.EC(), bigAjX, bigAjY) + bigAj, err := crypto.NewECPoint(round.Params().EC(), bigAjX, bigAjY) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewECPoint(bigAj)"), Pj) } bigAjs[j] = bigAj - pijA, err := r6msg.UnmarshalZKProof() - if err != nil || !pijA.Verify(bigAj) { + pijA, err := r6msg.UnmarshalZKProof(round.Params().EC()) + if err != nil || !pijA.Verify(ContextJ, bigAj) { return round.WrapError(errors.New("schnorr verify for Aj failed"), Pj) } - pijV, err := r6msg.UnmarshalZKVProof() - if err != nil || !pijV.Verify(bigVj, round.temp.bigR) { + pijV, err := r6msg.UnmarshalZKVProof(round.Params().EC()) + if err != nil || !pijV.Verify(ContextJ, bigVj, round.temp.bigR) { return round.WrapError(errors.New("vverify for Vj failed"), Pj) } } - modN := common.ModInt(tss.EC().Params().N) + modN := common.ModInt(round.Params().EC().Params().N) AX, AY := round.temp.bigAi.X(), round.temp.bigAi.Y() minusM := modN.Sub(big.NewInt(0), round.temp.m) - gToMInvX, gToMInvY := tss.EC().ScalarBaseMult(minusM.Bytes()) + gToMInvX, gToMInvY := round.Params().EC().ScalarBaseMult(minusM.Bytes()) minusR := modN.Sub(big.NewInt(0), round.temp.rx) - yToRInvX, yToRInvY := tss.EC().ScalarMult(round.key.ECDSAPub.X(), round.key.ECDSAPub.Y(), minusR.Bytes()) - VX, VY := tss.EC().Add(gToMInvX, gToMInvY, yToRInvX, yToRInvY) - VX, VY = tss.EC().Add(VX, VY, round.temp.bigVi.X(), round.temp.bigVi.Y()) + yToRInvX, yToRInvY := round.Params().EC().ScalarMult(round.key.ECDSAPub.X(), round.key.ECDSAPub.Y(), minusR.Bytes()) + VX, VY := round.Params().EC().Add(gToMInvX, gToMInvY, yToRInvX, yToRInvY) + VX, VY = round.Params().EC().Add(VX, VY, round.temp.bigVi.X(), round.temp.bigVi.Y()) for j := range round.Parties().IDs() { if j == round.PartyID().Index { continue } - VX, VY = tss.EC().Add(VX, VY, bigVjs[j].X(), bigVjs[j].Y()) - AX, AY = tss.EC().Add(AX, AY, bigAjs[j].X(), bigAjs[j].Y()) + VX, VY = round.Params().EC().Add(VX, VY, bigVjs[j].X(), bigVjs[j].Y()) + AX, AY = round.Params().EC().Add(AX, AY, bigAjs[j].X(), bigAjs[j].Y()) } - UiX, UiY := tss.EC().ScalarMult(VX, VY, round.temp.roi.Bytes()) - TiX, TiY := tss.EC().ScalarMult(AX, AY, round.temp.li.Bytes()) - round.temp.Ui = crypto.NewECPointNoCurveCheck(tss.EC(), UiX, UiY) - round.temp.Ti = crypto.NewECPointNoCurveCheck(tss.EC(), TiX, TiY) + UiX, UiY := round.Params().EC().ScalarMult(VX, VY, round.temp.roi.Bytes()) + TiX, TiY := round.Params().EC().ScalarMult(AX, AY, round.temp.li.Bytes()) + round.temp.Ui = crypto.NewECPointNoCurveCheck(round.Params().EC(), UiX, UiY) + round.temp.Ti = crypto.NewECPointNoCurveCheck(round.Params().EC(), TiX, TiY) cmt := commitments.NewHashCommitment(UiX, UiY, TiX, TiY) r7msg := NewSignRound7Message(round.PartyID(), cmt.C) round.temp.signRound7Messages[round.PartyID().Index] = r7msg @@ -92,16 +93,18 @@ func (round *round7) Start() *tss.Error { } func (round *round7) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound7Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round7) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/round_8.go b/ecdsa/signing/round_8.go index 45379e52..4e3f29cb 100644 --- a/ecdsa/signing/round_8.go +++ b/ecdsa/signing/round_8.go @@ -9,7 +9,7 @@ package signing import ( "errors" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round8) Start() *tss.Error { @@ -28,16 +28,18 @@ func (round *round8) Start() *tss.Error { } func (round *round8) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound8Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round8) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/round_9.go b/ecdsa/signing/round_9.go index 0787f38b..a1c85d7f 100644 --- a/ecdsa/signing/round_9.go +++ b/ecdsa/signing/round_9.go @@ -9,8 +9,8 @@ package signing import ( "errors" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round9) Start() *tss.Error { @@ -37,8 +37,8 @@ func (round *round9) Start() *tss.Error { return round.WrapError(errors.New("de-commitment for bigVj and bigAj failed"), Pj) } UjX, UjY, TjX, TjY := values[0], values[1], values[2], values[3] - UX, UY = tss.EC().Add(UX, UY, UjX, UjY) - TX, TY = tss.EC().Add(TX, TY, TjX, TjY) + UX, UY = round.Params().EC().Add(UX, UY, UjX, UjY) + TX, TY = round.Params().EC().Add(TX, TY, TjX, TjY) } if UX.Cmp(TX) != 0 || UY.Cmp(TY) != 0 { return round.WrapError(errors.New("U doesn't equal T"), round.PartyID()) @@ -51,16 +51,18 @@ func (round *round9) Start() *tss.Error { } func (round *round9) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound9Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round9) CanAccept(msg tss.ParsedMessage) bool { diff --git a/ecdsa/signing/rounds.go b/ecdsa/signing/rounds.go index c3ced0d3..86d01407 100644 --- a/ecdsa/signing/rounds.go +++ b/ecdsa/signing/rounds.go @@ -7,9 +7,13 @@ package signing import ( - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/ecdsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "errors" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/ecdsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -23,7 +27,7 @@ type ( data *common.SignatureData temp *localTempData out chan<- tss.Message - end chan<- common.SignatureData + end chan<- *common.SignatureData ok []bool // `ok` tracks parties which have been verified by Update() started bool number int @@ -121,3 +125,22 @@ func (round *base) resetOK() { round.ok[j] = false } } + +// get ssid from local params +func (round *base) getSSID() ([]byte, error) { + ssidList := []*big.Int{round.EC().Params().P, round.EC().Params().N, round.EC().Params().B, round.EC().Params().Gx, round.EC().Params().Gy} // ec curve + ssidList = append(ssidList, round.Parties().IDs().Keys()...) // parties + BigXjList, err := crypto.FlattenECPoints(round.key.BigXj) + if err != nil { + return nil, round.WrapError(errors.New("read BigXj failed"), round.PartyID()) + } + ssidList = append(ssidList, BigXjList...) // BigXj + ssidList = append(ssidList, round.key.NTildej...) // NTilde + ssidList = append(ssidList, round.key.H1j...) // h1 + ssidList = append(ssidList, round.key.H2j...) // h2 + ssidList = append(ssidList, big.NewInt(int64(round.number))) // round number + ssidList = append(ssidList, round.temp.ssidNonce) + ssid := common.SHA512_256i(ssidList...).Bytes() + + return ssid, nil +} diff --git a/eddsa/keygen/eddsa-keygen.pb.go b/eddsa/keygen/eddsa-keygen.pb.go index 7fd26e62..84327b87 100644 --- a/eddsa/keygen/eddsa-keygen.pb.go +++ b/eddsa/keygen/eddsa-keygen.pb.go @@ -1,62 +1,76 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. -// source: eddsa-keygen.proto +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 +// source: protob/eddsa-keygen.proto package keygen import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // // Represents a BROADCAST message sent during Round 1 of the EDDSA TSS keygen protocol. type KGRound1Message struct { - Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *KGRound1Message) Reset() { *m = KGRound1Message{} } -func (m *KGRound1Message) String() string { return proto.CompactTextString(m) } -func (*KGRound1Message) ProtoMessage() {} -func (*KGRound1Message) Descriptor() ([]byte, []int) { - return fileDescriptor_87f3b4615ca57212, []int{0} + Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` } -func (m *KGRound1Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KGRound1Message.Unmarshal(m, b) -} -func (m *KGRound1Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KGRound1Message.Marshal(b, m, deterministic) -} -func (m *KGRound1Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_KGRound1Message.Merge(m, src) +func (x *KGRound1Message) Reset() { + *x = KGRound1Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_keygen_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KGRound1Message) XXX_Size() int { - return xxx_messageInfo_KGRound1Message.Size(m) + +func (x *KGRound1Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KGRound1Message) XXX_DiscardUnknown() { - xxx_messageInfo_KGRound1Message.DiscardUnknown(m) + +func (*KGRound1Message) ProtoMessage() {} + +func (x *KGRound1Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_keygen_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_KGRound1Message proto.InternalMessageInfo +// Deprecated: Use KGRound1Message.ProtoReflect.Descriptor instead. +func (*KGRound1Message) Descriptor() ([]byte, []int) { + return file_protob_eddsa_keygen_proto_rawDescGZIP(), []int{0} +} -func (m *KGRound1Message) GetCommitment() []byte { - if m != nil { - return m.Commitment +func (x *KGRound1Message) GetCommitment() []byte { + if x != nil { + return x.Commitment } return nil } @@ -64,40 +78,48 @@ func (m *KGRound1Message) GetCommitment() []byte { // // Represents a P2P message sent to each party during Round 2 of the EDDSA TSS keygen protocol. type KGRound2Message1 struct { - Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *KGRound2Message1) Reset() { *m = KGRound2Message1{} } -func (m *KGRound2Message1) String() string { return proto.CompactTextString(m) } -func (*KGRound2Message1) ProtoMessage() {} -func (*KGRound2Message1) Descriptor() ([]byte, []int) { - return fileDescriptor_87f3b4615ca57212, []int{1} + Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` } -func (m *KGRound2Message1) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KGRound2Message1.Unmarshal(m, b) -} -func (m *KGRound2Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KGRound2Message1.Marshal(b, m, deterministic) -} -func (m *KGRound2Message1) XXX_Merge(src proto.Message) { - xxx_messageInfo_KGRound2Message1.Merge(m, src) +func (x *KGRound2Message1) Reset() { + *x = KGRound2Message1{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_keygen_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KGRound2Message1) XXX_Size() int { - return xxx_messageInfo_KGRound2Message1.Size(m) + +func (x *KGRound2Message1) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KGRound2Message1) XXX_DiscardUnknown() { - xxx_messageInfo_KGRound2Message1.DiscardUnknown(m) + +func (*KGRound2Message1) ProtoMessage() {} + +func (x *KGRound2Message1) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_keygen_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_KGRound2Message1 proto.InternalMessageInfo +// Deprecated: Use KGRound2Message1.ProtoReflect.Descriptor instead. +func (*KGRound2Message1) Descriptor() ([]byte, []int) { + return file_protob_eddsa_keygen_proto_rawDescGZIP(), []int{1} +} -func (m *KGRound2Message1) GetShare() []byte { - if m != nil { - return m.Share +func (x *KGRound2Message1) GetShare() []byte { + if x != nil { + return x.Share } return nil } @@ -105,89 +127,187 @@ func (m *KGRound2Message1) GetShare() []byte { // // Represents a BROADCAST message sent to each party during Round 2 of the EDDSA TSS keygen protocol. type KGRound2Message2 struct { - DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` - ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` - ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` - ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *KGRound2Message2) Reset() { *m = KGRound2Message2{} } -func (m *KGRound2Message2) String() string { return proto.CompactTextString(m) } -func (*KGRound2Message2) ProtoMessage() {} -func (*KGRound2Message2) Descriptor() ([]byte, []int) { - return fileDescriptor_87f3b4615ca57212, []int{2} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *KGRound2Message2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_KGRound2Message2.Unmarshal(m, b) + DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` + ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` + ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` + ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` } -func (m *KGRound2Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_KGRound2Message2.Marshal(b, m, deterministic) -} -func (m *KGRound2Message2) XXX_Merge(src proto.Message) { - xxx_messageInfo_KGRound2Message2.Merge(m, src) + +func (x *KGRound2Message2) Reset() { + *x = KGRound2Message2{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_keygen_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *KGRound2Message2) XXX_Size() int { - return xxx_messageInfo_KGRound2Message2.Size(m) + +func (x *KGRound2Message2) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *KGRound2Message2) XXX_DiscardUnknown() { - xxx_messageInfo_KGRound2Message2.DiscardUnknown(m) + +func (*KGRound2Message2) ProtoMessage() {} + +func (x *KGRound2Message2) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_keygen_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_KGRound2Message2 proto.InternalMessageInfo +// Deprecated: Use KGRound2Message2.ProtoReflect.Descriptor instead. +func (*KGRound2Message2) Descriptor() ([]byte, []int) { + return file_protob_eddsa_keygen_proto_rawDescGZIP(), []int{2} +} -func (m *KGRound2Message2) GetDeCommitment() [][]byte { - if m != nil { - return m.DeCommitment +func (x *KGRound2Message2) GetDeCommitment() [][]byte { + if x != nil { + return x.DeCommitment } return nil } -func (m *KGRound2Message2) GetProofAlphaX() []byte { - if m != nil { - return m.ProofAlphaX +func (x *KGRound2Message2) GetProofAlphaX() []byte { + if x != nil { + return x.ProofAlphaX } return nil } -func (m *KGRound2Message2) GetProofAlphaY() []byte { - if m != nil { - return m.ProofAlphaY +func (x *KGRound2Message2) GetProofAlphaY() []byte { + if x != nil { + return x.ProofAlphaY } return nil } -func (m *KGRound2Message2) GetProofT() []byte { - if m != nil { - return m.ProofT +func (x *KGRound2Message2) GetProofT() []byte { + if x != nil { + return x.ProofT } return nil } -func init() { - proto.RegisterType((*KGRound1Message)(nil), "KGRound1Message") - proto.RegisterType((*KGRound2Message1)(nil), "KGRound2Message1") - proto.RegisterType((*KGRound2Message2)(nil), "KGRound2Message2") -} - -func init() { proto.RegisterFile("eddsa-keygen.proto", fileDescriptor_87f3b4615ca57212) } - -var fileDescriptor_87f3b4615ca57212 = []byte{ - // 200 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4a, 0x4d, 0x49, 0x29, - 0x4e, 0xd4, 0xcd, 0x4e, 0xad, 0x4c, 0x4f, 0xcd, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x57, 0x32, - 0xe4, 0xe2, 0xf7, 0x76, 0x0f, 0xca, 0x2f, 0xcd, 0x4b, 0x31, 0xf4, 0x4d, 0x2d, 0x2e, 0x4e, 0x4c, - 0x4f, 0x15, 0x92, 0xe3, 0xe2, 0x4a, 0xce, 0xcf, 0xcd, 0xcd, 0x2c, 0xc9, 0x4d, 0xcd, 0x2b, 0x91, - 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x09, 0x42, 0x12, 0x51, 0xd2, 0xe0, 0x12, 0x80, 0x6a, 0x31, 0x82, - 0x6a, 0x31, 0x14, 0x12, 0xe1, 0x62, 0x2d, 0xce, 0x48, 0x2c, 0x4a, 0x85, 0x2a, 0x87, 0x70, 0x94, - 0x66, 0x30, 0x62, 0x28, 0x35, 0x12, 0x52, 0xe6, 0xe2, 0x4d, 0x49, 0x8d, 0x47, 0xb1, 0x81, 0x59, - 0x83, 0x27, 0x88, 0x27, 0x25, 0xd5, 0x19, 0x2e, 0x26, 0xa4, 0xc4, 0xc5, 0x5b, 0x50, 0x94, 0x9f, - 0x9f, 0x16, 0x9f, 0x98, 0x53, 0x90, 0x91, 0x18, 0x5f, 0x21, 0xc1, 0x04, 0x36, 0x97, 0x1b, 0x2c, - 0xe8, 0x08, 0x12, 0x8b, 0x40, 0x57, 0x53, 0x29, 0xc1, 0x8c, 0xae, 0x26, 0x52, 0x48, 0x9c, 0x8b, - 0x1d, 0xa2, 0xa6, 0x44, 0x82, 0x05, 0x2c, 0xcb, 0x06, 0xe6, 0x86, 0x38, 0xf1, 0x45, 0xf1, 0x80, - 0x43, 0x43, 0x1f, 0x12, 0x1a, 0x49, 0x6c, 0xe0, 0xe0, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0x61, 0x46, 0xe6, 0x18, 0x24, 0x01, 0x00, 0x00, +var File_protob_eddsa_keygen_proto protoreflect.FileDescriptor + +var file_protob_eddsa_keygen_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x65, 0x64, 0x64, 0x73, 0x61, 0x2d, 0x6b, + 0x65, 0x79, 0x67, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x62, 0x69, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x65, 0x64, 0x64, 0x73, + 0x61, 0x2e, 0x6b, 0x65, 0x79, 0x67, 0x65, 0x6e, 0x22, 0x31, 0x0a, 0x0f, 0x4b, 0x47, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x28, 0x0a, 0x10, 0x4b, + 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x10, 0x4b, 0x47, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x0c, 0x64, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x22, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, + 0x68, 0x61, 0x58, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x5f, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, + 0x66, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6f, 0x66, + 0x5f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x54, + 0x42, 0x0e, 0x5a, 0x0c, 0x65, 0x64, 0x64, 0x73, 0x61, 0x2f, 0x6b, 0x65, 0x79, 0x67, 0x65, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protob_eddsa_keygen_proto_rawDescOnce sync.Once + file_protob_eddsa_keygen_proto_rawDescData = file_protob_eddsa_keygen_proto_rawDesc +) + +func file_protob_eddsa_keygen_proto_rawDescGZIP() []byte { + file_protob_eddsa_keygen_proto_rawDescOnce.Do(func() { + file_protob_eddsa_keygen_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_eddsa_keygen_proto_rawDescData) + }) + return file_protob_eddsa_keygen_proto_rawDescData +} + +var file_protob_eddsa_keygen_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_protob_eddsa_keygen_proto_goTypes = []interface{}{ + (*KGRound1Message)(nil), // 0: binance.tsslib.eddsa.keygen.KGRound1Message + (*KGRound2Message1)(nil), // 1: binance.tsslib.eddsa.keygen.KGRound2Message1 + (*KGRound2Message2)(nil), // 2: binance.tsslib.eddsa.keygen.KGRound2Message2 +} +var file_protob_eddsa_keygen_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_protob_eddsa_keygen_proto_init() } +func file_protob_eddsa_keygen_proto_init() { + if File_protob_eddsa_keygen_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_eddsa_keygen_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KGRound1Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_keygen_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KGRound2Message1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_keygen_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KGRound2Message2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_eddsa_keygen_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_eddsa_keygen_proto_goTypes, + DependencyIndexes: file_protob_eddsa_keygen_proto_depIdxs, + MessageInfos: file_protob_eddsa_keygen_proto_msgTypes, + }.Build() + File_protob_eddsa_keygen_proto = out.File + file_protob_eddsa_keygen_proto_rawDesc = nil + file_protob_eddsa_keygen_proto_goTypes = nil + file_protob_eddsa_keygen_proto_depIdxs = nil } diff --git a/eddsa/keygen/local_party.go b/eddsa/keygen/local_party.go index ccc2474a..11601e0b 100644 --- a/eddsa/keygen/local_party.go +++ b/eddsa/keygen/local_party.go @@ -11,10 +11,10 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Implements Party @@ -32,7 +32,7 @@ type ( // outbound messaging out chan<- tss.Message - end chan<- LocalPartySaveData + end chan<- *LocalPartySaveData } localMessageStore struct { @@ -51,6 +51,9 @@ type ( vs vss.Vs shares vss.Shares deCommitPolyG cmt.HashDeCommitment + + ssid []byte + ssidNonce *big.Int } ) @@ -58,7 +61,7 @@ type ( func NewLocalParty( params *tss.Parameters, out chan<- tss.Message, - end chan<- LocalPartySaveData, + end chan<- *LocalPartySaveData, ) tss.Party { partyCount := params.PartyCount() data := NewLocalPartySaveData(partyCount) diff --git a/eddsa/keygen/local_party_test.go b/eddsa/keygen/local_party_test.go index bc90e85a..119371f6 100644 --- a/eddsa/keygen/local_party_test.go +++ b/eddsa/keygen/local_party_test.go @@ -19,11 +19,11 @@ import ( "github.com/ipfs/go-log" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -40,8 +40,6 @@ func setUp(level string) { func TestE2EConcurrentAndSaveFixtures(t *testing.T) { setUp("info") - tss.SetCurve(edwards.Edwards()) - threshold := testThreshold fixtures, pIDs, err := LoadKeygenTestFixtures(testParticipants) if err != nil { @@ -54,7 +52,7 @@ func TestE2EConcurrentAndSaveFixtures(t *testing.T) { errCh := make(chan *tss.Error, len(pIDs)) outCh := make(chan tss.Message, len(pIDs)) - endCh := make(chan LocalPartySaveData, len(pIDs)) + endCh := make(chan *LocalPartySaveData, len(pIDs)) updater := test.SharedPartyUpdater @@ -63,7 +61,7 @@ func TestE2EConcurrentAndSaveFixtures(t *testing.T) { // init the parties for i := 0; i < len(pIDs); i++ { var P *LocalParty - params := tss.NewParameters(p2pCtx, pIDs[i], len(pIDs), threshold) + params := tss.NewParameters(tss.Edwards(), p2pCtx, pIDs[i], len(pIDs), threshold) if i < len(fixtures) { P = NewLocalParty(params, outCh, endCh).(*LocalParty) } else { @@ -110,7 +108,7 @@ keygen: // .. here comes a workaround to recover this party's index (it was removed from save data) index, err := save.OriginalIndex() assert.NoErrorf(t, err, "should not be an error getting a party's index from save data") - tryWriteTestFixtureFile(t, index, save) + tryWriteTestFixtureFile(t, index, *save) atomic.AddInt32(&ended, 1) if atomic.LoadInt32(&ended) == int32(len(pIDs)) { @@ -133,17 +131,17 @@ keygen: } pShares = append(pShares, shareStruct) } - uj, err := pShares[:threshold+1].ReConstruct() + uj, err := pShares[:threshold+1].ReConstruct(tss.Edwards()) assert.NoError(t, err, "vss.ReConstruct should not throw error") // uG test: u*G[j] == V[0] assert.Equal(t, uj, Pj.temp.ui) - uG := crypto.ScalarBaseMult(tss.EC(), uj) + uG := crypto.ScalarBaseMult(tss.Edwards(), uj) assert.True(t, uG.Equals(Pj.temp.vs[0]), "ensure u*G[j] == V_0") // xj tests: BigXj == xj*G xj := Pj.data.Xi - gXj := crypto.ScalarBaseMult(tss.EC(), xj) + gXj := crypto.ScalarBaseMult(tss.Edwards(), xj) BigXj := Pj.data.BigXj[j] assert.True(t, BigXj.Equals(gXj), "ensure BigX_j == g^x_j") @@ -151,28 +149,28 @@ keygen: { badShares := pShares[:threshold] badShares[len(badShares)-1].Share.Set(big.NewInt(0)) - uj, err := pShares[:threshold].ReConstruct() + uj, err := pShares[:threshold].ReConstruct(tss.Edwards()) assert.NoError(t, err) assert.NotEqual(t, parties[j].temp.ui, uj) - BigXjX, BigXjY := tss.EC().ScalarBaseMult(uj.Bytes()) + BigXjX, BigXjY := tss.Edwards().ScalarBaseMult(uj.Bytes()) assert.NotEqual(t, BigXjX, Pj.temp.vs[0].X()) assert.NotEqual(t, BigXjY, Pj.temp.vs[0].Y()) } u = new(big.Int).Add(u, uj) } - u = new(big.Int).Mod(u, tss.EC().Params().N) + u = new(big.Int).Mod(u, tss.Edwards().Params().N) scalar := make([]byte, 0, 32) copy(scalar, u.Bytes()) // build eddsa key pair pkX, pkY := save.EDDSAPub.X(), save.EDDSAPub.Y() pk := edwards.PublicKey{ - Curve: tss.EC(), + Curve: tss.Edwards(), X: pkX, Y: pkY, } println("u len: ", len(u.Bytes())) - sk, _, err := edwards.PrivKeyFromScalar(u.Bytes()) + sk, _, err := edwards.PrivKeyFromScalar(common.PadToLengthBytesInPlace(u.Bytes(), 32)) if !assert.NoError(t, err) { return } @@ -182,7 +180,7 @@ keygen: // public key tests assert.NotZero(t, u, "u should not be zero") - ourPkX, ourPkY := tss.EC().ScalarBaseMult(u.Bytes()) + ourPkX, ourPkY := tss.Edwards().ScalarBaseMult(u.Bytes()) assert.Equal(t, pkX, ourPkX, "pkX should match expected pk derived from u") assert.Equal(t, pkY, ourPkY, "pkY should match expected pk derived from u") t.Log("Public key tests done.") diff --git a/eddsa/keygen/messages.go b/eddsa/keygen/messages.go index 8bcfd650..d6667073 100644 --- a/eddsa/keygen/messages.go +++ b/eddsa/keygen/messages.go @@ -7,16 +7,15 @@ package keygen import ( + "crypto/elliptic" "math/big" - "github.com/golang/protobuf/proto" - - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) // These messages were generated from Protocol Buffers definitions into eddsa-keygen.pb.go @@ -31,12 +30,6 @@ var ( } ) -func init() { - proto.RegisterType((*KGRound1Message)(nil), tss.EDDSAProtoNamePrefix+"keygen.KGRound1Message") - proto.RegisterType((*KGRound2Message1)(nil), tss.EDDSAProtoNamePrefix+"keygen.KGRound2Message1") - proto.RegisterType((*KGRound2Message2)(nil), tss.EDDSAProtoNamePrefix+"keygen.KGRound2Message2") -} - // ----- // func NewKGRound1Message(from *tss.PartyID, ct cmt.HashCommitment) tss.ParsedMessage { @@ -118,9 +111,9 @@ func (m *KGRound2Message2) UnmarshalDeCommitment() []*big.Int { return cmt.NewHashDeCommitmentFromBytes(deComBzs) } -func (m *KGRound2Message2) UnmarshalZKProof() (*schnorr.ZKProof, error) { +func (m *KGRound2Message2) UnmarshalZKProof(ec elliptic.Curve) (*schnorr.ZKProof, error) { point, err := crypto.NewECPoint( - tss.EC(), + ec, new(big.Int).SetBytes(m.GetProofAlphaX()), new(big.Int).SetBytes(m.GetProofAlphaY())) if err != nil { diff --git a/eddsa/keygen/round_1.go b/eddsa/keygen/round_1.go index 049e6f6e..18ac2c58 100644 --- a/eddsa/keygen/round_1.go +++ b/eddsa/keygen/round_1.go @@ -10,11 +10,11 @@ import ( "errors" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmts "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmts "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) var ( @@ -22,7 +22,7 @@ var ( ) // round 1 represents round 1 of the keygen part of the EDDSA TSS spec -func newRound1(params *tss.Parameters, save *LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- LocalPartySaveData) tss.Round { +func newRound1(params *tss.Parameters, save *LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- *LocalPartySaveData) tss.Round { return &round1{ &base{params, save, temp, out, end, make([]bool, len(params.Parties().IDs())), false, 1}} } @@ -38,13 +38,20 @@ func (round *round1) Start() *tss.Error { Pi := round.PartyID() i := Pi.Index + round.temp.ssidNonce = new(big.Int).SetUint64(0) + ssid, err := round.getSSID() + if err != nil { + return round.WrapError(err) + } + round.temp.ssid = ssid + // 1. calculate "partial" key share ui - ui := common.GetRandomPositiveInt(tss.EC().Params().N) + ui := common.GetRandomPositiveInt(round.Params().EC().Params().N) round.temp.ui = ui // 2. compute the vss shares ids := round.Parties().IDs().Keys() - vs, shares, err := vss.Create(round.Threshold(), ui, ids) + vs, shares, err := vss.Create(round.Params().EC(), round.Threshold(), ui, ids) if err != nil { return round.WrapError(err, Pi) } @@ -89,17 +96,19 @@ func (round *round1) CanAccept(msg tss.ParsedMessage) bool { } func (round *round1) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.kgRound1Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } // vss check is in round 2 round.ok[j] = true } - return true, nil + return ret, nil } func (round *round1) NextRound() tss.Round { diff --git a/eddsa/keygen/round_2.go b/eddsa/keygen/round_2.go index f911a8f1..1e0a4474 100644 --- a/eddsa/keygen/round_2.go +++ b/eddsa/keygen/round_2.go @@ -8,11 +8,12 @@ package keygen import ( "errors" + "math/big" errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round2) Start() *tss.Error { @@ -45,7 +46,8 @@ func (round *round2) Start() *tss.Error { } // 5. compute Schnorr prove - pii, err := schnorr.NewZKProof(round.temp.ui, round.temp.vs[0]) + ContextI := append(round.temp.ssid, new(big.Int).SetUint64(uint64(i)).Bytes()...) + pii, err := schnorr.NewZKProof(ContextI, round.temp.ui, round.temp.vs[0]) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewZKProof(ui, vi0)")) } @@ -70,20 +72,23 @@ func (round *round2) CanAccept(msg tss.ParsedMessage) bool { func (round *round2) Update() (bool, *tss.Error) { // guard - VERIFY de-commit for all Pj + ret := true for j, msg := range round.temp.kgRound2Message1s { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } msg2 := round.temp.kgRound2Message2s[j] if msg2 == nil || !round.CanAccept(msg2) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round2) NextRound() tss.Round { diff --git a/eddsa/keygen/round_3.go b/eddsa/keygen/round_3.go index 2b219a99..476ab3d3 100644 --- a/eddsa/keygen/round_3.go +++ b/eddsa/keygen/round_3.go @@ -13,11 +13,11 @@ import ( "github.com/hashicorp/go-multierror" errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round3) Start() *tss.Error { @@ -41,7 +41,7 @@ func (round *round3) Start() *tss.Error { share := r2msg1.UnmarshalShare() xi = new(big.Int).Add(xi, share) } - round.save.Xi = new(big.Int).Mod(xi, tss.EC().Params().N) + round.save.Xi = new(big.Int).Mod(xi, round.Params().EC().Params().N) // 2-3. Vc := make(vss.Vs, round.Threshold()+1) @@ -65,6 +65,8 @@ func (round *round3) Start() *tss.Error { if j == PIdx { continue } + ContextJ := common.AppendBigIntToBytesSlice(round.temp.ssid, big.NewInt(int64(j))) + // 6-9. go func(j int, ch chan<- vssOut) { // 4-10. @@ -77,17 +79,22 @@ func (round *round3) Start() *tss.Error { ch <- vssOut{errors.New("de-commitment verify failed"), nil} return } - PjVs, err := crypto.UnFlattenECPoints(tss.EC(), flatPolyGs) + + PjVs, err := crypto.UnFlattenECPoints(round.Params().EC(), flatPolyGs) + for i, PjV := range PjVs { + PjVs[i] = PjV.EightInvEight() + } + if err != nil { ch <- vssOut{err, nil} return } - proof, err := r2msg2.UnmarshalZKProof() + proof, err := r2msg2.UnmarshalZKProof(round.Params().EC()) if err != nil { ch <- vssOut{errors.New("failed to unmarshal schnorr proof"), nil} return } - ok = proof.Verify(PjVs[0]) + ok = proof.Verify(ContextJ, PjVs[0]) if !ok { ch <- vssOut{errors.New("failed to prove schnorr proof"), nil} return @@ -98,7 +105,7 @@ func (round *round3) Start() *tss.Error { ID: round.PartyID().KeyInt(), Share: r2msg1.UnmarshalShare(), } - if ok = PjShare.Verify(round.Threshold(), PjVs); !ok { + if ok = PjShare.Verify(round.Params().EC(), round.Threshold(), PjVs); !ok { ch <- vssOut{errors.New("vss verify failed"), nil} return } @@ -124,10 +131,9 @@ func (round *round3) Start() *tss.Error { var multiErr error if len(culprits) > 0 { for _, vssResult := range vssResults { - if vssResult.unWrappedErr == nil { - continue + if vssResult.unWrappedErr != nil { + multiErr = multierror.Append(multiErr, vssResult.unWrappedErr) } - multiErr = multierror.Append(multiErr, vssResult.unWrappedErr) } return round.WrapError(multiErr, culprits...) } @@ -156,7 +162,7 @@ func (round *round3) Start() *tss.Error { // 13-17. compute Xj for each Pj { var err error - modQ := common.ModInt(tss.EC().Params().N) + modQ := common.ModInt(round.Params().EC().Params().N) culprits := make([]*tss.PartyID, 0, len(Ps)) // who caused the error(s) bigXj := round.save.BigXj for j := 0; j < round.PartyCount(); j++ { @@ -180,7 +186,7 @@ func (round *round3) Start() *tss.Error { } // 18. compute and SAVE the EDDSA public key `y` - eddsaPubKey, err := crypto.NewECPoint(tss.EC(), Vc[0].X(), Vc[0].Y()) + eddsaPubKey, err := crypto.NewECPoint(round.Params().EC(), Vc[0].X(), Vc[0].Y()) if err != nil { return round.WrapError(errors2.Wrapf(err, "public key is not on the curve")) } @@ -189,7 +195,7 @@ func (round *round3) Start() *tss.Error { // PRINT public key & private share common.Logger.Debugf("%s public key: %x", round.PartyID(), eddsaPubKey) - round.end <- *round.save + round.end <- round.save return nil } diff --git a/eddsa/keygen/rounds.go b/eddsa/keygen/rounds.go index 3cb52f3f..cc880508 100644 --- a/eddsa/keygen/rounds.go +++ b/eddsa/keygen/rounds.go @@ -7,7 +7,10 @@ package keygen import ( - "github.com/binance-chain/tss-lib/tss" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -20,7 +23,7 @@ type ( save *LocalPartySaveData temp *localTempData out chan<- tss.Message - end chan<- LocalPartySaveData + end chan<- *LocalPartySaveData ok []bool // `ok` tracks parties which have been verified by Update() started bool number int @@ -82,3 +85,14 @@ func (round *base) resetOK() { round.ok[j] = false } } + +// get ssid from local params +func (round *base) getSSID() ([]byte, error) { + ssidList := []*big.Int{round.EC().Params().P, round.EC().Params().N, round.EC().Params().Gx, round.EC().Params().Gy} // ec curve + ssidList = append(ssidList, round.Parties().IDs().Keys()...) + ssidList = append(ssidList, big.NewInt(int64(round.number))) // round number + ssidList = append(ssidList, round.temp.ssidNonce) + ssid := common.SHA512_256i(ssidList...).Bytes() + + return ssid, nil +} diff --git a/eddsa/keygen/save_data.go b/eddsa/keygen/save_data.go index df131caf..a7be639f 100644 --- a/eddsa/keygen/save_data.go +++ b/eddsa/keygen/save_data.go @@ -10,9 +10,8 @@ import ( "encoding/hex" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/tss" ) type ( @@ -54,7 +53,7 @@ func BuildLocalSaveDataSubset(sourceData LocalPartySaveData, sortedIDs tss.Sorte for j, id := range sortedIDs { savedIdx, ok := keysToIndices[hex.EncodeToString(id.Key)] if !ok { - common.Logger.Warning("BuildLocalSaveDataSubset: unable to find a signer party in the local save data", id) + panic("BuildLocalSaveDataSubset: unable to find a signer party in the local save data") } newData.Ks[j] = sourceData.Ks[savedIdx] newData.BigXj[j] = sourceData.BigXj[savedIdx] diff --git a/eddsa/keygen/test_utils.go b/eddsa/keygen/test_utils.go index 5cd70d33..c6d8e985 100644 --- a/eddsa/keygen/test_utils.go +++ b/eddsa/keygen/test_utils.go @@ -17,8 +17,8 @@ import ( "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -52,6 +52,10 @@ func LoadKeygenTestFixtures(qty int, optionalStart ...int) ([]LocalPartySaveData "could not unmarshal fixture data for party %d located at: %s", i, fixtureFilePath) } + for _, kbxj := range key.BigXj { + kbxj.SetCurve(tss.Edwards()) + } + key.EDDSAPub.SetCurve(tss.Edwards()) keys = append(keys, key) } partyIDs := make(tss.UnSortedPartyIDs, len(keys)) @@ -86,6 +90,10 @@ func LoadKeygenTestFixturesRandomSet(qty, fixtureCount int) ([]LocalPartySaveDat "could not unmarshal fixture data for party %d located at: %s", i, fixtureFilePath) } + for _, kbxj := range key.BigXj { + kbxj.SetCurve(tss.Edwards()) + } + key.EDDSAPub.SetCurve(tss.Edwards()) keys = append(keys, key) } partyIDs := make(tss.UnSortedPartyIDs, len(keys)) diff --git a/eddsa/resharing/eddsa-resharing.pb.go b/eddsa/resharing/eddsa-resharing.pb.go index b581313a..25c33ed4 100644 --- a/eddsa/resharing/eddsa-resharing.pb.go +++ b/eddsa/resharing/eddsa-resharing.pb.go @@ -1,79 +1,92 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. -// source: eddsa-resharing.proto +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 +// source: protob/eddsa-resharing.proto package resharing import ( - fmt "fmt" - math "math" - - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // // The Round 1 data is broadcast to peers of the New Committee in this message. type DGRound1Message struct { - EddsaPubX []byte `protobuf:"bytes,1,opt,name=eddsa_pub_x,json=eddsaPubX,proto3" json:"eddsa_pub_x,omitempty"` - EddsaPubY []byte `protobuf:"bytes,2,opt,name=eddsa_pub_y,json=eddsaPubY,proto3" json:"eddsa_pub_y,omitempty"` - VCommitment []byte `protobuf:"bytes,3,opt,name=v_commitment,json=vCommitment,proto3" json:"v_commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *DGRound1Message) Reset() { *m = DGRound1Message{} } -func (m *DGRound1Message) String() string { return proto.CompactTextString(m) } -func (*DGRound1Message) ProtoMessage() {} -func (*DGRound1Message) Descriptor() ([]byte, []int) { - return fileDescriptor_d6ac4d7ec55a8fe1, []int{0} + EddsaPubX []byte `protobuf:"bytes,1,opt,name=eddsa_pub_x,json=eddsaPubX,proto3" json:"eddsa_pub_x,omitempty"` + EddsaPubY []byte `protobuf:"bytes,2,opt,name=eddsa_pub_y,json=eddsaPubY,proto3" json:"eddsa_pub_y,omitempty"` + VCommitment []byte `protobuf:"bytes,3,opt,name=v_commitment,json=vCommitment,proto3" json:"v_commitment,omitempty"` } -func (m *DGRound1Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound1Message.Unmarshal(m, b) -} -func (m *DGRound1Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound1Message.Marshal(b, m, deterministic) -} -func (m *DGRound1Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound1Message.Merge(m, src) +func (x *DGRound1Message) Reset() { + *x = DGRound1Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_resharing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound1Message) XXX_Size() int { - return xxx_messageInfo_DGRound1Message.Size(m) + +func (x *DGRound1Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound1Message) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound1Message.DiscardUnknown(m) + +func (*DGRound1Message) ProtoMessage() {} + +func (x *DGRound1Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_resharing_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DGRound1Message proto.InternalMessageInfo +// Deprecated: Use DGRound1Message.ProtoReflect.Descriptor instead. +func (*DGRound1Message) Descriptor() ([]byte, []int) { + return file_protob_eddsa_resharing_proto_rawDescGZIP(), []int{0} +} -func (m *DGRound1Message) GetEddsaPubX() []byte { - if m != nil { - return m.EddsaPubX +func (x *DGRound1Message) GetEddsaPubX() []byte { + if x != nil { + return x.EddsaPubX } return nil } -func (m *DGRound1Message) GetEddsaPubY() []byte { - if m != nil { - return m.EddsaPubY +func (x *DGRound1Message) GetEddsaPubY() []byte { + if x != nil { + return x.EddsaPubY } return nil } -func (m *DGRound1Message) GetVCommitment() []byte { - if m != nil { - return m.VCommitment +func (x *DGRound1Message) GetVCommitment() []byte { + if x != nil { + return x.VCommitment } return nil } @@ -81,73 +94,88 @@ func (m *DGRound1Message) GetVCommitment() []byte { // // The Round 2 "ACK" is broadcast to peers of the Old Committee in this message. type DGRound2Message struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *DGRound2Message) Reset() { *m = DGRound2Message{} } -func (m *DGRound2Message) String() string { return proto.CompactTextString(m) } -func (*DGRound2Message) ProtoMessage() {} -func (*DGRound2Message) Descriptor() ([]byte, []int) { - return fileDescriptor_d6ac4d7ec55a8fe1, []int{1} +func (x *DGRound2Message) Reset() { + *x = DGRound2Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_resharing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound2Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound2Message2.Unmarshal(m, b) -} -func (m *DGRound2Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound2Message2.Marshal(b, m, deterministic) +func (x *DGRound2Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound2Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound2Message2.Merge(m, src) -} -func (m *DGRound2Message) XXX_Size() int { - return xxx_messageInfo_DGRound2Message2.Size(m) -} -func (m *DGRound2Message) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound2Message2.DiscardUnknown(m) + +func (*DGRound2Message) ProtoMessage() {} + +func (x *DGRound2Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_resharing_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DGRound2Message2 proto.InternalMessageInfo +// Deprecated: Use DGRound2Message.ProtoReflect.Descriptor instead. +func (*DGRound2Message) Descriptor() ([]byte, []int) { + return file_protob_eddsa_resharing_proto_rawDescGZIP(), []int{1} +} // // The Round 3 data is sent to peers of the New Committee in this message. type DGRound3Message1 struct { - Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *DGRound3Message1) Reset() { *m = DGRound3Message1{} } -func (m *DGRound3Message1) String() string { return proto.CompactTextString(m) } -func (*DGRound3Message1) ProtoMessage() {} -func (*DGRound3Message1) Descriptor() ([]byte, []int) { - return fileDescriptor_d6ac4d7ec55a8fe1, []int{2} + Share []byte `protobuf:"bytes,1,opt,name=share,proto3" json:"share,omitempty"` } -func (m *DGRound3Message1) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound3Message1.Unmarshal(m, b) -} -func (m *DGRound3Message1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound3Message1.Marshal(b, m, deterministic) -} -func (m *DGRound3Message1) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound3Message1.Merge(m, src) +func (x *DGRound3Message1) Reset() { + *x = DGRound3Message1{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_resharing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound3Message1) XXX_Size() int { - return xxx_messageInfo_DGRound3Message1.Size(m) + +func (x *DGRound3Message1) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound3Message1) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound3Message1.DiscardUnknown(m) + +func (*DGRound3Message1) ProtoMessage() {} + +func (x *DGRound3Message1) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_resharing_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DGRound3Message1 proto.InternalMessageInfo +// Deprecated: Use DGRound3Message1.ProtoReflect.Descriptor instead. +func (*DGRound3Message1) Descriptor() ([]byte, []int) { + return file_protob_eddsa_resharing_proto_rawDescGZIP(), []int{2} +} -func (m *DGRound3Message1) GetShare() []byte { - if m != nil { - return m.Share +func (x *DGRound3Message1) GetShare() []byte { + if x != nil { + return x.Share } return nil } @@ -155,40 +183,48 @@ func (m *DGRound3Message1) GetShare() []byte { // // The Round 3 data is broadcast to peers of the New Committee in this message. type DGRound3Message2 struct { - VDecommitment [][]byte `protobuf:"bytes,1,rep,name=v_decommitment,json=vDecommitment,proto3" json:"v_decommitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *DGRound3Message2) Reset() { *m = DGRound3Message2{} } -func (m *DGRound3Message2) String() string { return proto.CompactTextString(m) } -func (*DGRound3Message2) ProtoMessage() {} -func (*DGRound3Message2) Descriptor() ([]byte, []int) { - return fileDescriptor_d6ac4d7ec55a8fe1, []int{3} + VDecommitment [][]byte `protobuf:"bytes,1,rep,name=v_decommitment,json=vDecommitment,proto3" json:"v_decommitment,omitempty"` } -func (m *DGRound3Message2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound3Message2.Unmarshal(m, b) -} -func (m *DGRound3Message2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound3Message2.Marshal(b, m, deterministic) -} -func (m *DGRound3Message2) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound3Message2.Merge(m, src) +func (x *DGRound3Message2) Reset() { + *x = DGRound3Message2{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_resharing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound3Message2) XXX_Size() int { - return xxx_messageInfo_DGRound3Message2.Size(m) + +func (x *DGRound3Message2) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *DGRound3Message2) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound3Message2.DiscardUnknown(m) + +func (*DGRound3Message2) ProtoMessage() {} + +func (x *DGRound3Message2) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_resharing_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_DGRound3Message2 proto.InternalMessageInfo +// Deprecated: Use DGRound3Message2.ProtoReflect.Descriptor instead. +func (*DGRound3Message2) Descriptor() ([]byte, []int) { + return file_protob_eddsa_resharing_proto_rawDescGZIP(), []int{3} +} -func (m *DGRound3Message2) GetVDecommitment() [][]byte { - if m != nil { - return m.VDecommitment +func (x *DGRound3Message2) GetVDecommitment() [][]byte { + if x != nil { + return x.VDecommitment } return nil } @@ -196,59 +232,181 @@ func (m *DGRound3Message2) GetVDecommitment() [][]byte { // // The Round 4 "ACK" is broadcast to peers of the Old and New Committees from the New Committee in this message. type DGRound4Message struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *DGRound4Message) Reset() { *m = DGRound4Message{} } -func (m *DGRound4Message) String() string { return proto.CompactTextString(m) } -func (*DGRound4Message) ProtoMessage() {} -func (*DGRound4Message) Descriptor() ([]byte, []int) { - return fileDescriptor_d6ac4d7ec55a8fe1, []int{4} +func (x *DGRound4Message) Reset() { + *x = DGRound4Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_resharing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *DGRound4Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DGRound4Message.Unmarshal(m, b) -} -func (m *DGRound4Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DGRound4Message.Marshal(b, m, deterministic) -} -func (m *DGRound4Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_DGRound4Message.Merge(m, src) -} -func (m *DGRound4Message) XXX_Size() int { - return xxx_messageInfo_DGRound4Message.Size(m) -} -func (m *DGRound4Message) XXX_DiscardUnknown() { - xxx_messageInfo_DGRound4Message.DiscardUnknown(m) +func (x *DGRound4Message) String() string { + return protoimpl.X.MessageStringOf(x) } -var xxx_messageInfo_DGRound4Message proto.InternalMessageInfo +func (*DGRound4Message) ProtoMessage() {} -func init() { - proto.RegisterType((*DGRound1Message)(nil), "DGRound1Message") - proto.RegisterType((*DGRound2Message)(nil), "DGRound2Message") - proto.RegisterType((*DGRound3Message1)(nil), "DGRound3Message1") - proto.RegisterType((*DGRound3Message2)(nil), "DGRound3Message2") - proto.RegisterType((*DGRound4Message)(nil), "DGRound4Message") +func (x *DGRound4Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_resharing_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func init() { proto.RegisterFile("eddsa-resharing.proto", fileDescriptor_d6ac4d7ec55a8fe1) } +// Deprecated: Use DGRound4Message.ProtoReflect.Descriptor instead. +func (*DGRound4Message) Descriptor() ([]byte, []int) { + return file_protob_eddsa_resharing_proto_rawDescGZIP(), []int{4} +} + +var File_protob_eddsa_resharing_proto protoreflect.FileDescriptor + +var file_protob_eddsa_resharing_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x65, 0x64, 0x64, 0x73, 0x61, 0x2d, 0x72, + 0x65, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, + 0x62, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x65, + 0x64, 0x64, 0x73, 0x61, 0x2e, 0x72, 0x65, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x74, + 0x0a, 0x0f, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x64, 0x64, 0x73, 0x61, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x64, 0x64, 0x73, 0x61, 0x50, 0x75, 0x62, + 0x58, 0x12, 0x1e, 0x0a, 0x0b, 0x65, 0x64, 0x64, 0x73, 0x61, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x64, 0x64, 0x73, 0x61, 0x50, 0x75, 0x62, + 0x59, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x76, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x28, 0x0a, 0x10, 0x44, 0x47, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x33, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x33, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x5f, 0x64, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x76, + 0x44, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x11, 0x0a, 0x0f, + 0x44, 0x47, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x34, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, + 0x11, 0x5a, 0x0f, 0x65, 0x64, 0x64, 0x73, 0x61, 0x2f, 0x72, 0x65, 0x73, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protob_eddsa_resharing_proto_rawDescOnce sync.Once + file_protob_eddsa_resharing_proto_rawDescData = file_protob_eddsa_resharing_proto_rawDesc +) -var fileDescriptor_d6ac4d7ec55a8fe1 = []byte{ - // 203 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0x4d, 0x49, 0x29, - 0x4e, 0xd4, 0x2d, 0x4a, 0x2d, 0xce, 0x48, 0x2c, 0xca, 0xcc, 0x4b, 0xd7, 0x2b, 0x28, 0xca, 0x2f, - 0xc9, 0x57, 0x2a, 0xe1, 0xe2, 0x77, 0x71, 0x0f, 0xca, 0x2f, 0xcd, 0x4b, 0x31, 0xf4, 0x4d, 0x2d, - 0x2e, 0x4e, 0x4c, 0x4f, 0x15, 0x92, 0xe3, 0xe2, 0x06, 0xab, 0x8d, 0x2f, 0x28, 0x4d, 0x8a, 0xaf, - 0x90, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x09, 0xe2, 0x04, 0x0b, 0x05, 0x94, 0x26, 0x45, 0xa0, 0xca, - 0x57, 0x4a, 0x30, 0xa1, 0xca, 0x47, 0x0a, 0x29, 0x72, 0xf1, 0x94, 0xc5, 0x27, 0xe7, 0xe7, 0xe6, - 0x66, 0x96, 0xe4, 0xa6, 0xe6, 0x95, 0x48, 0x30, 0x83, 0x15, 0x70, 0x97, 0x39, 0xc3, 0x85, 0x94, - 0x84, 0xb8, 0x04, 0xa0, 0xb6, 0x1a, 0x41, 0x6d, 0x35, 0x52, 0xd2, 0x80, 0x8b, 0x19, 0x43, 0xc5, - 0x0c, 0x85, 0x44, 0xb8, 0x58, 0x41, 0xce, 0x4d, 0x85, 0x3a, 0x02, 0xc2, 0x51, 0xb2, 0xc4, 0x50, - 0x69, 0x24, 0xa4, 0xca, 0xc5, 0x57, 0x16, 0x9f, 0x92, 0x8a, 0x64, 0x2d, 0xa3, 0x02, 0xb3, 0x06, - 0x4f, 0x10, 0x6f, 0x99, 0x0b, 0x92, 0xa0, 0x92, 0x20, 0xdc, 0xbb, 0x26, 0x50, 0xad, 0x4e, 0x82, - 0x51, 0xfc, 0x60, 0xb7, 0xeb, 0xc3, 0x83, 0x26, 0x89, 0x0d, 0x1c, 0x36, 0xc6, 0x80, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x76, 0xdf, 0xde, 0x85, 0x34, 0x01, 0x00, 0x00, +func file_protob_eddsa_resharing_proto_rawDescGZIP() []byte { + file_protob_eddsa_resharing_proto_rawDescOnce.Do(func() { + file_protob_eddsa_resharing_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_eddsa_resharing_proto_rawDescData) + }) + return file_protob_eddsa_resharing_proto_rawDescData +} + +var file_protob_eddsa_resharing_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_protob_eddsa_resharing_proto_goTypes = []interface{}{ + (*DGRound1Message)(nil), // 0: binance.tsslib.eddsa.resharing.DGRound1Message + (*DGRound2Message)(nil), // 1: binance.tsslib.eddsa.resharing.DGRound2Message + (*DGRound3Message1)(nil), // 2: binance.tsslib.eddsa.resharing.DGRound3Message1 + (*DGRound3Message2)(nil), // 3: binance.tsslib.eddsa.resharing.DGRound3Message2 + (*DGRound4Message)(nil), // 4: binance.tsslib.eddsa.resharing.DGRound4Message +} +var file_protob_eddsa_resharing_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_protob_eddsa_resharing_proto_init() } +func file_protob_eddsa_resharing_proto_init() { + if File_protob_eddsa_resharing_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_eddsa_resharing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound1Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_resharing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound2Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_resharing_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound3Message1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_resharing_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound3Message2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_resharing_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DGRound4Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_eddsa_resharing_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_eddsa_resharing_proto_goTypes, + DependencyIndexes: file_protob_eddsa_resharing_proto_depIdxs, + MessageInfos: file_protob_eddsa_resharing_proto_msgTypes, + }.Build() + File_protob_eddsa_resharing_proto = out.File + file_protob_eddsa_resharing_proto_rawDesc = nil + file_protob_eddsa_resharing_proto_goTypes = nil + file_protob_eddsa_resharing_proto_depIdxs = nil } diff --git a/eddsa/resharing/local_party.go b/eddsa/resharing/local_party.go index 2b7b7469..5e7aebf9 100644 --- a/eddsa/resharing/local_party.go +++ b/eddsa/resharing/local_party.go @@ -10,12 +10,12 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/eddsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Implements Party @@ -33,7 +33,7 @@ type ( // outbound messaging out chan<- tss.Message - end chan<- keygen.LocalPartySaveData + end chan<- *keygen.LocalPartySaveData } localMessageStore struct { @@ -67,7 +67,7 @@ func NewLocalParty( params *tss.ReSharingParameters, key keygen.LocalPartySaveData, out chan<- tss.Message, - end chan<- keygen.LocalPartySaveData, + end chan<- *keygen.LocalPartySaveData, ) tss.Party { oldPartyCount := len(params.OldParties().IDs()) subset := key diff --git a/eddsa/resharing/local_party_test.go b/eddsa/resharing/local_party_test.go index 3a33db37..72411c0c 100644 --- a/eddsa/resharing/local_party_test.go +++ b/eddsa/resharing/local_party_test.go @@ -15,13 +15,13 @@ import ( "github.com/ipfs/go-log" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/eddsa/keygen" - . "github.com/binance-chain/tss-lib/eddsa/resharing" - "github.com/binance-chain/tss-lib/eddsa/signing" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + . "github.com/bnb-chain/tss-lib/v2/eddsa/resharing" + "github.com/bnb-chain/tss-lib/v2/eddsa/signing" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -33,17 +33,18 @@ func setUp(level string) { if err := log.SetLogLevel("tss-lib", level); err != nil { panic(err) } + + // only for test + tss.SetCurve(tss.Edwards()) } func TestE2EConcurrent(t *testing.T) { setUp("info") - tss.SetCurve(edwards.Edwards()) - threshold, newThreshold := testThreshold, testThreshold // PHASE: load keygen fixtures - firstPartyIdx, extraParties := 5, 1 // // extra can be 0 to N-first + firstPartyIdx, extraParties := 1, 1 // // extra can be 0 to N-first oldKeys, oldPIDs, err := keygen.LoadKeygenTestFixtures(testThreshold+1+extraParties+firstPartyIdx, firstPartyIdx) assert.NoError(t, err, "should load keygen fixtures") @@ -61,20 +62,20 @@ func TestE2EConcurrent(t *testing.T) { errCh := make(chan *tss.Error, bothCommitteesPax) outCh := make(chan tss.Message, bothCommitteesPax) - endCh := make(chan keygen.LocalPartySaveData, bothCommitteesPax) + endCh := make(chan *keygen.LocalPartySaveData, bothCommitteesPax) updater := test.SharedPartyUpdater // init the old parties first for j, pID := range oldPIDs { - params := tss.NewReSharingParameters(oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) + params := tss.NewReSharingParameters(tss.Edwards(), oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) P := NewLocalParty(params, oldKeys[j], outCh, endCh).(*LocalParty) // discard old key data oldCommittee = append(oldCommittee, P) } // init the new parties for _, pID := range newPIDs { - params := tss.NewReSharingParameters(oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) + params := tss.NewReSharingParameters(tss.Edwards(), oldP2PCtx, newP2PCtx, pID, testParticipants, threshold, newPCount, newThreshold) save := keygen.NewLocalPartySaveData(newPCount) P := NewLocalParty(params, save, outCh, endCh).(*LocalParty) newCommittee = append(newCommittee, P) @@ -128,7 +129,7 @@ func TestE2EConcurrent(t *testing.T) { if save.Xi != nil { index, err := save.OriginalIndex() assert.NoErrorf(t, err, "should not be an error getting a party's index from save data") - newKeys[index] = save + newKeys[index] = *save } else { endedOldCommittee++ } @@ -141,7 +142,7 @@ func TestE2EConcurrent(t *testing.T) { for j, key := range newKeys { // xj test: BigXj == xj*G xj := key.Xi - gXj := crypto.ScalarBaseMult(tss.EC(), xj) + gXj := crypto.ScalarBaseMult(tss.Edwards(), xj) BigXj := key.BigXj[j] assert.True(t, BigXj.Equals(gXj), "ensure BigX_j == g^x_j") } @@ -160,10 +161,10 @@ signing: signErrCh := make(chan *tss.Error, len(signPIDs)) signOutCh := make(chan tss.Message, len(signPIDs)) - signEndCh := make(chan common.SignatureData, len(signPIDs)) + signEndCh := make(chan *common.SignatureData, len(signPIDs)) for j, signPID := range signPIDs { - params := tss.NewParameters(signP2pCtx, signPID, len(signPIDs), newThreshold) + params := tss.NewParameters(tss.Edwards(), signP2pCtx, signPID, len(signPIDs), newThreshold) P := signing.NewLocalParty(big.NewInt(42), params, signKeys[j], signOutCh, signEndCh).(*signing.LocalParty) signParties = append(signParties, P) go func(P *signing.LocalParty) { @@ -205,7 +206,7 @@ signing: // BEGIN EDDSA verify pkX, pkY := signKeys[0].EDDSAPub.X(), signKeys[0].EDDSAPub.Y() pk := edwards.PublicKey{ - Curve: tss.EC(), + Curve: tss.Edwards(), X: pkX, Y: pkY, } diff --git a/eddsa/resharing/messages.go b/eddsa/resharing/messages.go index ccc7733c..abf45bb4 100644 --- a/eddsa/resharing/messages.go +++ b/eddsa/resharing/messages.go @@ -7,15 +7,14 @@ package resharing import ( + "crypto/elliptic" "math/big" - "github.com/golang/protobuf/proto" - - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) // These messages were generated from Protocol Buffers definitions into eddsa-resharing.pb.go @@ -27,17 +26,10 @@ var ( (*DGRound2Message)(nil), (*DGRound3Message1)(nil), (*DGRound3Message2)(nil), + (*DGRound4Message)(nil), } ) -func init() { - proto.RegisterType((*DGRound1Message)(nil), tss.EDDSAProtoNamePrefix+"resharing.DGRound1Message") - proto.RegisterType((*DGRound2Message)(nil), tss.EDDSAProtoNamePrefix+"resharing.DGRound2Message") - proto.RegisterType((*DGRound3Message1)(nil), tss.EDDSAProtoNamePrefix+"resharing.DGRound3Message1") - proto.RegisterType((*DGRound3Message2)(nil), tss.EDDSAProtoNamePrefix+"resharing.DGRound3Message2") - proto.RegisterType((*DGRound4Message)(nil), tss.EDDSAProtoNamePrefix+"resharing.DGRound4Message") -} - // ----- // func NewDGRound1Message( @@ -68,9 +60,9 @@ func (m *DGRound1Message) ValidateBasic() bool { common.NonEmptyBytes(m.VCommitment) } -func (m *DGRound1Message) UnmarshalEDDSAPub() (*crypto.ECPoint, error) { +func (m *DGRound1Message) UnmarshalEDDSAPub(ec elliptic.Curve) (*crypto.ECPoint, error) { return crypto.NewECPoint( - tss.EC(), + ec, new(big.Int).SetBytes(m.EddsaPubX), new(big.Int).SetBytes(m.EddsaPubY)) } diff --git a/eddsa/resharing/round_1_old_step_1.go b/eddsa/resharing/round_1_old_step_1.go index 56fb4351..61bac309 100644 --- a/eddsa/resharing/round_1_old_step_1.go +++ b/eddsa/resharing/round_1_old_step_1.go @@ -10,16 +10,16 @@ import ( "errors" "fmt" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/eddsa/keygen" - "github.com/binance-chain/tss-lib/eddsa/signing" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + "github.com/bnb-chain/tss-lib/v2/eddsa/signing" + "github.com/bnb-chain/tss-lib/v2/tss" ) // round 1 represents round 1 of the keygen part of the EDDSA TSS spec -func newRound1(params *tss.ReSharingParameters, input, save *keygen.LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- keygen.LocalPartySaveData) tss.Round { +func newRound1(params *tss.ReSharingParameters, input, save *keygen.LocalPartySaveData, temp *localTempData, out chan<- tss.Message, end chan<- *keygen.LocalPartySaveData) tss.Round { return &round1{ &base{params, temp, input, save, out, end, make([]bool, len(params.OldParties().IDs())), make([]bool, len(params.NewParties().IDs())), false, 1}} } @@ -47,10 +47,10 @@ func (round *round1) Start() *tss.Error { return round.WrapError(fmt.Errorf("t+1=%d is not satisfied by the key count of %d", round.Threshold()+1, len(ks)), round.PartyID()) } newKs := round.NewParties().IDs().Keys() - wi := signing.PrepareForSigning(i, len(round.OldParties().IDs()), xi, ks) + wi := signing.PrepareForSigning(round.Params().EC(), i, len(round.OldParties().IDs()), xi, ks) // 2. - vi, shares, err := vss.Create(round.NewThreshold(), wi, newKs) + vi, shares, err := vss.Create(round.Params().EC(), round.NewThreshold(), wi, newKs) if err != nil { return round.WrapError(err, round.PartyID()) } @@ -90,18 +90,24 @@ func (round *round1) Update() (bool, *tss.Error) { return true, nil } // accept messages from old -> new committee + ret := true for j, msg := range round.temp.dgRound1Messages { if round.oldOK[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.oldOK[j] = true + if round.temp.dgRound1Messages[0] == nil { + ret = false + continue + } // save the eddsa pub received from the old committee r1msg := round.temp.dgRound1Messages[0].Content().(*DGRound1Message) - candidate, err := r1msg.UnmarshalEDDSAPub() + candidate, err := r1msg.UnmarshalEDDSAPub(round.Params().EC()) if err != nil { return false, round.WrapError(errors.New("unable to unmarshal the eddsa pub key"), msg.GetFrom()) } @@ -112,7 +118,7 @@ func (round *round1) Update() (bool, *tss.Error) { } round.save.EDDSAPub = candidate } - return true, nil + return ret, nil } func (round *round1) NextRound() tss.Round { diff --git a/eddsa/resharing/round_2_new_step_1.go b/eddsa/resharing/round_2_new_step_1.go index c323bfb0..703d154a 100644 --- a/eddsa/resharing/round_2_new_step_1.go +++ b/eddsa/resharing/round_2_new_step_1.go @@ -9,7 +9,7 @@ package resharing import ( "errors" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round2) Start() *tss.Error { @@ -50,18 +50,20 @@ func (round *round2) Update() (bool, *tss.Error) { return true, nil } + ret := true // accept messages from new -> old committee for j, msg := range round.temp.dgRound2Messages { if round.newOK[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.newOK[j] = true } - return true, nil + return ret, nil } func (round *round2) NextRound() tss.Round { diff --git a/eddsa/resharing/round_3_old_step_2.go b/eddsa/resharing/round_3_old_step_2.go index f80fe466..db2e1112 100644 --- a/eddsa/resharing/round_3_old_step_2.go +++ b/eddsa/resharing/round_3_old_step_2.go @@ -9,7 +9,7 @@ package resharing import ( "errors" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round3) Start() *tss.Error { diff --git a/eddsa/resharing/round_4_new_step_2.go b/eddsa/resharing/round_4_new_step_2.go index fccbaf51..9911142f 100644 --- a/eddsa/resharing/round_4_new_step_2.go +++ b/eddsa/resharing/round_4_new_step_2.go @@ -11,11 +11,11 @@ import ( "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/vss" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/vss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round4) Start() *tss.Error { @@ -40,7 +40,7 @@ func (round *round4) Start() *tss.Error { newXi := big.NewInt(0) // 2-8. - modQ := common.ModInt(tss.EC().Params().N) + modQ := common.ModInt(round.Params().EC().Params().N) vjc := make([][]*crypto.ECPoint, len(round.OldParties().IDs())) for j := 0; j <= len(vjc)-1; j++ { // P1..P_t+1. Ps are indexed from 0 here r1msg := round.temp.dgRound1Messages[j].Content().(*DGRound1Message) @@ -55,10 +55,15 @@ func (round *round4) Start() *tss.Error { // TODO collect culprits and return a list of them as per convention return round.WrapError(errors.New("de-commitment of v_j0..v_jt failed"), round.Parties().IDs()[j]) } - vj, err := crypto.UnFlattenECPoints(tss.EC(), flatVs) + vj, err := crypto.UnFlattenECPoints(round.Params().EC(), flatVs) if err != nil { return round.WrapError(err, round.Parties().IDs()[j]) } + + for i, v := range vj { + vj[i] = v.EightInvEight() + } + vjc[j] = vj r3msg1 := round.temp.dgRound3Message1s[j].Content().(*DGRound3Message1) @@ -67,7 +72,7 @@ func (round *round4) Start() *tss.Error { ID: round.PartyID().KeyInt(), Share: new(big.Int).SetBytes(r3msg1.Share), } - if ok := sharej.Verify(round.NewThreshold(), vj); !ok { + if ok := sharej.Verify(round.Params().EC(), round.NewThreshold(), vj); !ok { return round.WrapError(errors.New("share from old committee did not pass Verify()"), round.Parties().IDs()[j]) } @@ -136,16 +141,18 @@ func (round *round4) CanAccept(msg tss.ParsedMessage) bool { func (round *round4) Update() (bool, *tss.Error) { // accept messages from new -> old&new committees + ret := true for j, msg := range round.temp.dgRound4Messages { if round.newOK[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.newOK[j] = true } - return true, nil + return ret, nil } func (round *round4) NextRound() tss.Round { diff --git a/eddsa/resharing/round_5_new_step_3.go b/eddsa/resharing/round_5_new_step_3.go index 44b335c7..3abc2f28 100644 --- a/eddsa/resharing/round_5_new_step_3.go +++ b/eddsa/resharing/round_5_new_step_3.go @@ -9,7 +9,7 @@ package resharing import ( "errors" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round5) Start() *tss.Error { @@ -33,7 +33,7 @@ func (round *round5) Start() *tss.Error { round.input.Xi.SetInt64(0) } - round.end <- *round.save + round.end <- round.save return nil } diff --git a/eddsa/resharing/rounds.go b/eddsa/resharing/rounds.go index 67a1a3f2..07d1f90e 100644 --- a/eddsa/resharing/rounds.go +++ b/eddsa/resharing/rounds.go @@ -7,8 +7,8 @@ package resharing import ( - "github.com/binance-chain/tss-lib/eddsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -21,7 +21,7 @@ type ( temp *localTempData input, save *keygen.LocalPartySaveData out chan<- tss.Message - end chan<- keygen.LocalPartySaveData + end chan<- *keygen.LocalPartySaveData oldOK, // old committee "ok" tracker newOK []bool // `ok` tracks parties which have been verified by Update(); this one is for the new committee started bool diff --git a/eddsa/signing/eddsa-signing.pb.go b/eddsa/signing/eddsa-signing.pb.go index 62a772a8..1f130e09 100644 --- a/eddsa/signing/eddsa-signing.pb.go +++ b/eddsa/signing/eddsa-signing.pb.go @@ -1,62 +1,76 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. -// source: eddsa-signing.proto +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 +// source: protob/eddsa-signing.proto package signing import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // // Represents a BROADCAST message sent to all parties during Round 1 of the EDDSA TSS signing protocol. type SignRound1Message struct { - Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound1Message) Reset() { *m = SignRound1Message{} } -func (m *SignRound1Message) String() string { return proto.CompactTextString(m) } -func (*SignRound1Message) ProtoMessage() {} -func (*SignRound1Message) Descriptor() ([]byte, []int) { - return fileDescriptor_cf83f80fc7454980, []int{0} + Commitment []byte `protobuf:"bytes,1,opt,name=commitment,proto3" json:"commitment,omitempty"` } -func (m *SignRound1Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound1Message.Unmarshal(m, b) -} -func (m *SignRound1Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound1Message.Marshal(b, m, deterministic) -} -func (m *SignRound1Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound1Message.Merge(m, src) +func (x *SignRound1Message) Reset() { + *x = SignRound1Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_signing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound1Message) XXX_Size() int { - return xxx_messageInfo_SignRound1Message.Size(m) + +func (x *SignRound1Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound1Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound1Message.DiscardUnknown(m) + +func (*SignRound1Message) ProtoMessage() {} + +func (x *SignRound1Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_signing_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound1Message proto.InternalMessageInfo +// Deprecated: Use SignRound1Message.ProtoReflect.Descriptor instead. +func (*SignRound1Message) Descriptor() ([]byte, []int) { + return file_protob_eddsa_signing_proto_rawDescGZIP(), []int{0} +} -func (m *SignRound1Message) GetCommitment() []byte { - if m != nil { - return m.Commitment +func (x *SignRound1Message) GetCommitment() []byte { + if x != nil { + return x.Commitment } return nil } @@ -64,64 +78,72 @@ func (m *SignRound1Message) GetCommitment() []byte { // // Represents a BROADCAST message sent to all parties during Round 2 of the EDDSA TSS signing protocol. type SignRound2Message struct { - DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` - ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` - ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` - ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SignRound2Message) Reset() { *m = SignRound2Message{} } -func (m *SignRound2Message) String() string { return proto.CompactTextString(m) } -func (*SignRound2Message) ProtoMessage() {} -func (*SignRound2Message) Descriptor() ([]byte, []int) { - return fileDescriptor_cf83f80fc7454980, []int{1} -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *SignRound2Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound2Message.Unmarshal(m, b) -} -func (m *SignRound2Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound2Message.Marshal(b, m, deterministic) + DeCommitment [][]byte `protobuf:"bytes,1,rep,name=de_commitment,json=deCommitment,proto3" json:"de_commitment,omitempty"` + ProofAlphaX []byte `protobuf:"bytes,2,opt,name=proof_alpha_x,json=proofAlphaX,proto3" json:"proof_alpha_x,omitempty"` + ProofAlphaY []byte `protobuf:"bytes,3,opt,name=proof_alpha_y,json=proofAlphaY,proto3" json:"proof_alpha_y,omitempty"` + ProofT []byte `protobuf:"bytes,4,opt,name=proof_t,json=proofT,proto3" json:"proof_t,omitempty"` } -func (m *SignRound2Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound2Message.Merge(m, src) + +func (x *SignRound2Message) Reset() { + *x = SignRound2Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_signing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound2Message) XXX_Size() int { - return xxx_messageInfo_SignRound2Message.Size(m) + +func (x *SignRound2Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound2Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound2Message.DiscardUnknown(m) + +func (*SignRound2Message) ProtoMessage() {} + +func (x *SignRound2Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_signing_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_SignRound2Message proto.InternalMessageInfo +// Deprecated: Use SignRound2Message.ProtoReflect.Descriptor instead. +func (*SignRound2Message) Descriptor() ([]byte, []int) { + return file_protob_eddsa_signing_proto_rawDescGZIP(), []int{1} +} -func (m *SignRound2Message) GetDeCommitment() [][]byte { - if m != nil { - return m.DeCommitment +func (x *SignRound2Message) GetDeCommitment() [][]byte { + if x != nil { + return x.DeCommitment } return nil } -func (m *SignRound2Message) GetProofAlphaX() []byte { - if m != nil { - return m.ProofAlphaX +func (x *SignRound2Message) GetProofAlphaX() []byte { + if x != nil { + return x.ProofAlphaX } return nil } -func (m *SignRound2Message) GetProofAlphaY() []byte { - if m != nil { - return m.ProofAlphaY +func (x *SignRound2Message) GetProofAlphaY() []byte { + if x != nil { + return x.ProofAlphaY } return nil } -func (m *SignRound2Message) GetProofT() []byte { - if m != nil { - return m.ProofT +func (x *SignRound2Message) GetProofT() []byte { + if x != nil { + return x.ProofT } return nil } @@ -129,65 +151,163 @@ func (m *SignRound2Message) GetProofT() []byte { // // Represents a BROADCAST message sent to all parties during Round 3 of the EDDSA TSS signing protocol. type SignRound3Message struct { - S []byte `protobuf:"bytes,1,opt,name=s,proto3" json:"s,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + S []byte `protobuf:"bytes,1,opt,name=s,proto3" json:"s,omitempty"` } -func (m *SignRound3Message) Reset() { *m = SignRound3Message{} } -func (m *SignRound3Message) String() string { return proto.CompactTextString(m) } -func (*SignRound3Message) ProtoMessage() {} -func (*SignRound3Message) Descriptor() ([]byte, []int) { - return fileDescriptor_cf83f80fc7454980, []int{2} +func (x *SignRound3Message) Reset() { + *x = SignRound3Message{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_eddsa_signing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SignRound3Message) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignRound3Message.Unmarshal(m, b) +func (x *SignRound3Message) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *SignRound3Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignRound3Message.Marshal(b, m, deterministic) + +func (*SignRound3Message) ProtoMessage() {} + +func (x *SignRound3Message) ProtoReflect() protoreflect.Message { + mi := &file_protob_eddsa_signing_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (m *SignRound3Message) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignRound3Message.Merge(m, src) + +// Deprecated: Use SignRound3Message.ProtoReflect.Descriptor instead. +func (*SignRound3Message) Descriptor() ([]byte, []int) { + return file_protob_eddsa_signing_proto_rawDescGZIP(), []int{2} } -func (m *SignRound3Message) XXX_Size() int { - return xxx_messageInfo_SignRound3Message.Size(m) + +func (x *SignRound3Message) GetS() []byte { + if x != nil { + return x.S + } + return nil } -func (m *SignRound3Message) XXX_DiscardUnknown() { - xxx_messageInfo_SignRound3Message.DiscardUnknown(m) + +var File_protob_eddsa_signing_proto protoreflect.FileDescriptor + +var file_protob_eddsa_signing_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x65, 0x64, 0x64, 0x73, 0x61, 0x2d, 0x73, + 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x62, 0x69, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x65, 0x64, 0x64, + 0x73, 0x61, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x33, 0x0a, 0x11, 0x53, 0x69, + 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, + 0x99, 0x01, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x64, 0x65, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x72, + 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x58, 0x12, 0x22, + 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x41, 0x6c, 0x70, 0x68, + 0x61, 0x59, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x54, 0x22, 0x21, 0x0a, 0x11, 0x53, + 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x33, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x0c, 0x0a, 0x01, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x73, 0x42, 0x0f, + 0x5a, 0x0d, 0x65, 0x64, 0x64, 0x73, 0x61, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -var xxx_messageInfo_SignRound3Message proto.InternalMessageInfo +var ( + file_protob_eddsa_signing_proto_rawDescOnce sync.Once + file_protob_eddsa_signing_proto_rawDescData = file_protob_eddsa_signing_proto_rawDesc +) -func (m *SignRound3Message) GetS() []byte { - if m != nil { - return m.S - } - return nil +func file_protob_eddsa_signing_proto_rawDescGZIP() []byte { + file_protob_eddsa_signing_proto_rawDescOnce.Do(func() { + file_protob_eddsa_signing_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_eddsa_signing_proto_rawDescData) + }) + return file_protob_eddsa_signing_proto_rawDescData } -func init() { - proto.RegisterType((*SignRound1Message)(nil), "SignRound1Message") - proto.RegisterType((*SignRound2Message)(nil), "SignRound2Message") - proto.RegisterType((*SignRound3Message)(nil), "SignRound3Message") -} - -func init() { proto.RegisterFile("eddsa-signing.proto", fileDescriptor_cf83f80fc7454980) } - -var fileDescriptor_cf83f80fc7454980 = []byte{ - // 197 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0x4d, 0x49, 0x29, - 0x4e, 0xd4, 0x2d, 0xce, 0x4c, 0xcf, 0xcb, 0xcc, 0x4b, 0xd7, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x57, - 0x32, 0xe6, 0x12, 0x0c, 0xce, 0x4c, 0xcf, 0x0b, 0xca, 0x2f, 0xcd, 0x4b, 0x31, 0xf4, 0x4d, 0x2d, - 0x2e, 0x4e, 0x4c, 0x4f, 0x15, 0x92, 0xe3, 0xe2, 0x4a, 0xce, 0xcf, 0xcd, 0xcd, 0x2c, 0xc9, 0x4d, - 0xcd, 0x2b, 0x91, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x09, 0x42, 0x12, 0x51, 0x9a, 0xc9, 0x88, 0xa4, - 0xcb, 0x08, 0xa6, 0x4b, 0x99, 0x8b, 0x37, 0x25, 0x35, 0x1e, 0x45, 0x23, 0xb3, 0x06, 0x4f, 0x10, - 0x4f, 0x4a, 0xaa, 0x33, 0x5c, 0x4c, 0x48, 0x89, 0x8b, 0xb7, 0xa0, 0x28, 0x3f, 0x3f, 0x2d, 0x3e, - 0x31, 0xa7, 0x20, 0x23, 0x31, 0xbe, 0x42, 0x82, 0x09, 0x6c, 0x3a, 0x37, 0x58, 0xd0, 0x11, 0x24, - 0x16, 0x81, 0xae, 0xa6, 0x52, 0x82, 0x19, 0x5d, 0x4d, 0xa4, 0x90, 0x38, 0x17, 0x3b, 0x44, 0x4d, - 0x89, 0x04, 0x0b, 0x58, 0x96, 0x0d, 0xcc, 0x0d, 0x51, 0x52, 0x44, 0x72, 0x9a, 0x31, 0xcc, 0x69, - 0x3c, 0x5c, 0x8c, 0xc5, 0x50, 0x7f, 0x30, 0x16, 0x3b, 0xf1, 0x47, 0xf1, 0x82, 0x83, 0x42, 0x1f, - 0x1a, 0x14, 0x49, 0x6c, 0xe0, 0xb0, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x36, 0x85, - 0xc1, 0x22, 0x01, 0x00, 0x00, +var file_protob_eddsa_signing_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_protob_eddsa_signing_proto_goTypes = []interface{}{ + (*SignRound1Message)(nil), // 0: binance.tsslib.eddsa.signing.SignRound1Message + (*SignRound2Message)(nil), // 1: binance.tsslib.eddsa.signing.SignRound2Message + (*SignRound3Message)(nil), // 2: binance.tsslib.eddsa.signing.SignRound3Message +} +var file_protob_eddsa_signing_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_protob_eddsa_signing_proto_init() } +func file_protob_eddsa_signing_proto_init() { + if File_protob_eddsa_signing_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_eddsa_signing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound1Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_signing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound2Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_eddsa_signing_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignRound3Message); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_eddsa_signing_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_eddsa_signing_proto_goTypes, + DependencyIndexes: file_protob_eddsa_signing_proto_depIdxs, + MessageInfos: file_protob_eddsa_signing_proto_msgTypes, + }.Build() + File_protob_eddsa_signing_proto = out.File + file_protob_eddsa_signing_proto_rawDesc = nil + file_protob_eddsa_signing_proto_goTypes = nil + file_protob_eddsa_signing_proto_depIdxs = nil } diff --git a/eddsa/signing/finalize.go b/eddsa/signing/finalize.go index 7313580a..aaafd255 100644 --- a/eddsa/signing/finalize.go +++ b/eddsa/signing/finalize.go @@ -14,7 +14,7 @@ import ( "github.com/agl/ed25519/edwards25519" "github.com/decred/dcrd/dcrec/edwards/v2" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *finalization) Start() *tss.Error { @@ -37,25 +37,25 @@ func (round *finalization) Start() *tss.Error { edwards25519.ScMulAdd(&tmpSumS, sumS, bigIntToEncodedBytes(big.NewInt(1)), sjBytes) sumS = &tmpSumS } + s := encodedBytesToBigInt(sumS) // save the signature for final output round.data.Signature = append(bigIntToEncodedBytes(round.temp.r)[:], sumS[:]...) round.data.R = round.temp.r.Bytes() - round.data.S = sumS[:] + round.data.S = s.Bytes() round.data.M = round.temp.m.Bytes() pk := edwards.PublicKey{ - Curve: tss.EC(), + Curve: round.Params().EC(), X: round.key.EDDSAPub.X(), Y: round.key.EDDSAPub.Y(), } - s := encodedBytesToBigInt(sumS) ok := edwards.Verify(&pk, round.temp.m.Bytes(), round.temp.r, s) if !ok { return round.WrapError(fmt.Errorf("signature verification failed")) } - round.end <- *round.data + round.end <- round.data return nil } diff --git a/eddsa/signing/local_party.go b/eddsa/signing/local_party.go index bb001e0f..d11a29c4 100644 --- a/eddsa/signing/local_party.go +++ b/eddsa/signing/local_party.go @@ -11,11 +11,11 @@ import ( "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/eddsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) // Implements Party @@ -30,11 +30,11 @@ type ( keys keygen.LocalPartySaveData temp localTempData - data common.SignatureData + data *common.SignatureData // outbound messaging out chan<- tss.Message - end chan<- common.SignatureData + end chan<- *common.SignatureData } localMessageStore struct { @@ -59,6 +59,9 @@ type ( // round 3 r *big.Int + + ssid []byte + ssidNonce *big.Int } ) @@ -67,7 +70,7 @@ func NewLocalParty( params *tss.Parameters, key keygen.LocalPartySaveData, out chan<- tss.Message, - end chan<- common.SignatureData, + end chan<- *common.SignatureData, ) tss.Party { partyCount := len(params.Parties().IDs()) p := &LocalParty{ @@ -75,7 +78,7 @@ func NewLocalParty( params: params, keys: keygen.BuildLocalSaveDataSubset(key, params.Parties().IDs()), temp: localTempData{}, - data: common.SignatureData{}, + data: &common.SignatureData{}, out: out, end: end, } @@ -91,7 +94,7 @@ func NewLocalParty( } func (p *LocalParty) FirstRound() tss.Round { - return newRound1(p.params, &p.keys, &p.data, &p.temp, p.out, p.end) + return newRound1(p.params, &p.keys, p.data, &p.temp, p.out, p.end) } func (p *LocalParty) Start() *tss.Error { diff --git a/eddsa/signing/local_party_test.go b/eddsa/signing/local_party_test.go index 36303470..33f6fa4e 100644 --- a/eddsa/signing/local_party_test.go +++ b/eddsa/signing/local_party_test.go @@ -17,10 +17,10 @@ import ( "github.com/ipfs/go-log" "github.com/stretchr/testify/assert" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/eddsa/keygen" - "github.com/binance-chain/tss-lib/test" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + "github.com/bnb-chain/tss-lib/v2/test" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -32,13 +32,14 @@ func setUp(level string) { if err := log.SetLogLevel("tss-lib", level); err != nil { panic(err) } + + // only for test + tss.SetCurve(tss.Edwards()) } func TestE2EConcurrent(t *testing.T) { setUp("info") - tss.SetCurve(edwards.Edwards()) - threshold := testThreshold // PHASE: load keygen fixtures @@ -54,14 +55,14 @@ func TestE2EConcurrent(t *testing.T) { errCh := make(chan *tss.Error, len(signPIDs)) outCh := make(chan tss.Message, len(signPIDs)) - endCh := make(chan common.SignatureData, len(signPIDs)) + endCh := make(chan *common.SignatureData, len(signPIDs)) updater := test.SharedPartyUpdater msg := big.NewInt(200) // init the parties for i := 0; i < len(signPIDs); i++ { - params := tss.NewParameters(p2pCtx, signPIDs[i], len(signPIDs), threshold) + params := tss.NewParameters(tss.Edwards(), p2pCtx, signPIDs[i], len(signPIDs), threshold) P := NewLocalParty(msg, params, keys[i], outCh, endCh).(*LocalParty) parties = append(parties, P) @@ -121,7 +122,7 @@ signing: // BEGIN EDDSA verify pkX, pkY := keys[0].EDDSAPub.X(), keys[0].EDDSAPub.Y() pk := edwards.PublicKey{ - Curve: tss.EC(), + Curve: tss.Edwards(), X: pkX, Y: pkY, } diff --git a/eddsa/signing/messages.go b/eddsa/signing/messages.go index 4cf6070b..c60e1880 100644 --- a/eddsa/signing/messages.go +++ b/eddsa/signing/messages.go @@ -7,15 +7,14 @@ package signing import ( + "crypto/elliptic" "math/big" - "github.com/golang/protobuf/proto" - - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - cmt "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + cmt "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/tss" ) // These messages were generated from Protocol Buffers definitions into eddsa-signing.pb.go @@ -30,12 +29,6 @@ var ( } ) -func init() { - proto.RegisterType((*SignRound1Message)(nil), tss.EDDSAProtoNamePrefix+"signing.SignRound1Message") - proto.RegisterType((*SignRound2Message)(nil), tss.EDDSAProtoNamePrefix+"signing.SignRound2Message") - proto.RegisterType((*SignRound3Message)(nil), tss.EDDSAProtoNamePrefix+"signing.SignRound3Message") -} - // ----- // func NewSignRound1Message( @@ -97,9 +90,9 @@ func (m *SignRound2Message) UnmarshalDeCommitment() []*big.Int { return cmt.NewHashDeCommitmentFromBytes(deComBzs) } -func (m *SignRound2Message) UnmarshalZKProof() (*schnorr.ZKProof, error) { +func (m *SignRound2Message) UnmarshalZKProof(ec elliptic.Curve) (*schnorr.ZKProof, error) { point, err := crypto.NewECPoint( - tss.EC(), + ec, new(big.Int).SetBytes(m.GetProofAlphaX()), new(big.Int).SetBytes(m.GetProofAlphaY())) if err != nil { diff --git a/eddsa/signing/prepare.go b/eddsa/signing/prepare.go index 59981779..1e86b437 100644 --- a/eddsa/signing/prepare.go +++ b/eddsa/signing/prepare.go @@ -7,16 +7,16 @@ package signing import ( + "crypto/elliptic" "fmt" "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" ) // PrepareForSigning(), Fig. 7 -func PrepareForSigning(i, pax int, xi *big.Int, ks []*big.Int) (wi *big.Int) { - modQ := common.ModInt(tss.EC().Params().N) +func PrepareForSigning(ec elliptic.Curve, i, pax int, xi *big.Int, ks []*big.Int) (wi *big.Int) { + modQ := common.ModInt(ec.Params().N) if len(ks) != pax { panic(fmt.Errorf("PrepareForSigning: len(ks) != pax (%d != %d)", len(ks), pax)) } @@ -30,8 +30,13 @@ func PrepareForSigning(i, pax int, xi *big.Int, ks []*big.Int) (wi *big.Int) { if j == i { continue } + ksj := ks[j] + ksi := ks[i] + if ksj.Cmp(ksi) == 0 { + panic(fmt.Errorf("index of two parties are equal")) + } // big.Int Div is calculated as: a/b = a * modInv(b,q) - coef := modQ.Mul(ks[j], modQ.ModInverse(new(big.Int).Sub(ks[j], ks[i]))) + coef := modQ.Mul(ks[j], modQ.ModInverse(new(big.Int).Sub(ksj, ksi))) wi = modQ.Mul(wi, coef) } diff --git a/eddsa/signing/round_1.go b/eddsa/signing/round_1.go index ada10ddf..21f6fa38 100644 --- a/eddsa/signing/round_1.go +++ b/eddsa/signing/round_1.go @@ -9,16 +9,17 @@ package signing import ( "errors" "fmt" + "math/big" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/eddsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) // round 1 represents round 1 of the signing part of the EDDSA TSS spec -func newRound1(params *tss.Parameters, key *keygen.LocalPartySaveData, data *common.SignatureData, temp *localTempData, out chan<- tss.Message, end chan<- common.SignatureData) tss.Round { +func newRound1(params *tss.Parameters, key *keygen.LocalPartySaveData, data *common.SignatureData, temp *localTempData, out chan<- tss.Message, end chan<- *common.SignatureData) tss.Round { return &round1{ &base{params, key, data, temp, out, end, make([]bool, len(params.Parties().IDs())), false, 1}} } @@ -32,11 +33,17 @@ func (round *round1) Start() *tss.Error { round.started = true round.resetOK() + round.temp.ssidNonce = new(big.Int).SetUint64(0) + var err error + round.temp.ssid, err = round.getSSID() + if err != nil { + return round.WrapError(err) + } // 1. select ri - ri := common.GetRandomPositiveInt(tss.EC().Params().N) + ri := common.GetRandomPositiveInt(round.Params().EC().Params().N) // 2. make commitment - pointRi := crypto.ScalarBaseMult(tss.EC(), ri) + pointRi := crypto.ScalarBaseMult(round.Params().EC(), ri) cmt := commitments.NewHashCommitment(pointRi.X(), pointRi.Y()) // 3. store r1 message pieces @@ -56,16 +63,18 @@ func (round *round1) Start() *tss.Error { } func (round *round1) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound1Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round1) CanAccept(msg tss.ParsedMessage) bool { @@ -92,7 +101,7 @@ func (round *round1) prepare() error { if round.Threshold()+1 > len(ks) { return fmt.Errorf("t+1=%d is not satisfied by the key count of %d", round.Threshold()+1, len(ks)) } - wi := PrepareForSigning(i, len(ks), xi, ks) + wi := PrepareForSigning(round.Params().EC(), i, len(ks), xi, ks) round.temp.wi = wi return nil diff --git a/eddsa/signing/round_2.go b/eddsa/signing/round_2.go index 6e2bf3c6..1348a39a 100644 --- a/eddsa/signing/round_2.go +++ b/eddsa/signing/round_2.go @@ -8,11 +8,12 @@ package signing import ( "errors" + "math/big" errors2 "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/crypto/schnorr" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto/schnorr" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round2) Start() *tss.Error { @@ -32,7 +33,8 @@ func (round *round2) Start() *tss.Error { } // 2. compute Schnorr prove - pir, err := schnorr.NewZKProof(round.temp.ri, round.temp.pointRi) + ContextI := append(round.temp.ssid, new(big.Int).SetUint64(uint64(i)).Bytes()...) + pir, err := schnorr.NewZKProof(ContextI, round.temp.ri, round.temp.pointRi) if err != nil { return round.WrapError(errors2.Wrapf(err, "NewZKProof(ri, pointRi)")) } @@ -53,16 +55,18 @@ func (round *round2) CanAccept(msg tss.ParsedMessage) bool { } func (round *round2) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound2Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round2) NextRound() tss.Round { diff --git a/eddsa/signing/round_3.go b/eddsa/signing/round_3.go index 2fd822a4..b2567f54 100644 --- a/eddsa/signing/round_3.go +++ b/eddsa/signing/round_3.go @@ -8,13 +8,15 @@ package signing import ( "crypto/sha512" + "math/big" "github.com/agl/ed25519/edwards25519" + "github.com/bnb-chain/tss-lib/v2/common" "github.com/pkg/errors" - "github.com/binance-chain/tss-lib/crypto" - "github.com/binance-chain/tss-lib/crypto/commitments" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/crypto/commitments" + "github.com/bnb-chain/tss-lib/v2/tss" ) func (round *round3) Start() *tss.Error { @@ -38,6 +40,7 @@ func (round *round3) Start() *tss.Error { continue } + ContextJ := common.AppendBigIntToBytesSlice(round.temp.ssid, big.NewInt(int64(j))) msg := round.temp.signRound2Messages[j] r2msg := msg.Content().(*SignRound2Message) cmtDeCmt := commitments.HashCommitDecommit{C: round.temp.cjs[j], D: r2msg.UnmarshalDeCommitment()} @@ -49,20 +52,21 @@ func (round *round3) Start() *tss.Error { return round.WrapError(errors.New("length of de-commitment should be 2")) } - Rj, err := crypto.NewECPoint(tss.EC(), coordinates[0], coordinates[1]) + Rj, err := crypto.NewECPoint(round.Params().EC(), coordinates[0], coordinates[1]) + Rj = Rj.EightInvEight() if err != nil { return round.WrapError(errors.Wrapf(err, "NewECPoint(Rj)"), Pj) } - proof, err := r2msg.UnmarshalZKProof() + proof, err := r2msg.UnmarshalZKProof(round.Params().EC()) if err != nil { return round.WrapError(errors.New("failed to unmarshal Rj proof"), Pj) } - ok = proof.Verify(Rj) + ok = proof.Verify(ContextJ, Rj) if !ok { return round.WrapError(errors.New("failed to prove Rj"), Pj) } - extendedRj := ecPointToExtendedElement(Rj.X(), Rj.Y()) + extendedRj := ecPointToExtendedElement(round.Params().EC(), Rj.X(), Rj.Y()) R = addExtendedElements(R, extendedRj) } @@ -100,16 +104,18 @@ func (round *round3) Start() *tss.Error { } func (round *round3) Update() (bool, *tss.Error) { + ret := true for j, msg := range round.temp.signRound3Messages { if round.ok[j] { continue } if msg == nil || !round.CanAccept(msg) { - return false, nil + ret = false + continue } round.ok[j] = true } - return true, nil + return ret, nil } func (round *round3) CanAccept(msg tss.ParsedMessage) bool { diff --git a/eddsa/signing/rounds.go b/eddsa/signing/rounds.go index 4cb7c91b..81723c0d 100644 --- a/eddsa/signing/rounds.go +++ b/eddsa/signing/rounds.go @@ -7,9 +7,13 @@ package signing import ( - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/eddsa/keygen" - "github.com/binance-chain/tss-lib/tss" + "errors" + "math/big" + + "github.com/bnb-chain/tss-lib/v2/common" + "github.com/bnb-chain/tss-lib/v2/crypto" + "github.com/bnb-chain/tss-lib/v2/eddsa/keygen" + "github.com/bnb-chain/tss-lib/v2/tss" ) const ( @@ -23,7 +27,7 @@ type ( data *common.SignatureData temp *localTempData out chan<- tss.Message - end chan<- common.SignatureData + end chan<- *common.SignatureData ok []bool // `ok` tracks parties which have been verified by Update() started bool number int @@ -97,3 +101,19 @@ func (round *base) resetOK() { round.ok[j] = false } } + +// get ssid from local params +func (round *base) getSSID() ([]byte, error) { + ssidList := []*big.Int{round.EC().Params().P, round.EC().Params().N, round.EC().Params().Gx, round.EC().Params().Gy} // ec curve + ssidList = append(ssidList, round.Parties().IDs().Keys()...) // parties + BigXjList, err := crypto.FlattenECPoints(round.key.BigXj) + if err != nil { + return nil, round.WrapError(errors.New("read BigXj failed"), round.PartyID()) + } + ssidList = append(ssidList, BigXjList...) // BigXj + ssidList = append(ssidList, big.NewInt(int64(round.number))) // round number + ssidList = append(ssidList, round.temp.ssidNonce) + ssid := common.SHA512_256i(ssidList...).Bytes() + + return ssid, nil +} diff --git a/eddsa/signing/utils.go b/eddsa/signing/utils.go index 8dd58a28..d3b41f8f 100644 --- a/eddsa/signing/utils.go +++ b/eddsa/signing/utils.go @@ -7,12 +7,12 @@ package signing import ( + "crypto/elliptic" "math/big" "github.com/agl/ed25519/edwards25519" - "github.com/binance-chain/tss-lib/common" - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/common" ) func encodedBytesToBigInt(s *[32]byte) *big.Int { @@ -100,11 +100,11 @@ func addExtendedElements(p, q edwards25519.ExtendedGroupElement) edwards25519.Ex return result } -func ecPointToExtendedElement(x *big.Int, y *big.Int) edwards25519.ExtendedGroupElement { +func ecPointToExtendedElement(ec elliptic.Curve, x *big.Int, y *big.Int) edwards25519.ExtendedGroupElement { encodedXBytes := bigIntToEncodedBytes(x) encodedYBytes := bigIntToEncodedBytes(y) - z := common.GetRandomPositiveInt(tss.EC().Params().N) + z := common.GetRandomPositiveInt(ec.Params().N) encodedZBytes := bigIntToEncodedBytes(z) var fx, fy, fxy edwards25519.FieldElement diff --git a/go.mod b/go.mod index b38587a1..499f9466 100644 --- a/go.mod +++ b/go.mod @@ -1,22 +1,20 @@ -module github.com/binance-chain/tss-lib +module github.com/bnb-chain/tss-lib/v2 -go 1.12 +go 1.16 require ( - github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 - github.com/btcsuite/btcd v0.0.0-20190629003639-c26ffa870fd8 - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 - github.com/golang/protobuf v1.3.2 - github.com/hashicorp/go-multierror v1.0.0 - github.com/ipfs/go-log v0.0.1 - github.com/mattn/go-colorable v0.1.2 // indirect - github.com/opentracing/opentracing-go v1.1.0 // indirect - github.com/otiai10/mint v1.2.4 // indirect - github.com/otiai10/primes v0.0.0-20180210170552-f6d2a1ba97c4 - github.com/pkg/errors v0.8.1 - github.com/stretchr/testify v1.3.0 - golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7 // indirect + github.com/agl/ed25519 v0.0.0-20200225211852-fd4d107ace12 + github.com/btcsuite/btcd v0.23.4 + github.com/btcsuite/btcd/btcec/v2 v2.3.2 + github.com/btcsuite/btcutil v1.0.2 + github.com/decred/dcrd/dcrec/edwards/v2 v2.0.3 + github.com/hashicorp/go-multierror v1.1.1 + github.com/ipfs/go-log v1.0.5 + github.com/otiai10/primes v0.0.0-20210501021515-f1b2be525a11 + github.com/pkg/errors v0.9.1 + github.com/stretchr/testify v1.8.4 + golang.org/x/crypto v0.13.0 + google.golang.org/protobuf v1.31.0 ) replace github.com/agl/ed25519 => github.com/binance-chain/edwards25519 v0.0.0-20200305024217-f36fc4b53d43 diff --git a/go.sum b/go.sum index c7cbf922..1c7500cd 100644 --- a/go.sum +++ b/go.sum @@ -1,79 +1,237 @@ -bou.ke/monkey v1.0.1 h1:zEMLInw9xvNakzUUPjfS4Ds6jYPqCFx3m7bRmG5NH2U= -bou.ke/monkey v1.0.1/go.mod h1:FgHuK96Rv2Nlf+0u1OOVDpCMdsWyOFmeeketDHE7LIg= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/binance-chain/edwards25519 v0.0.0-20200305024217-f36fc4b53d43 h1:Vkf7rtHx8uHx8gDfkQaCdVfc+gfrF9v6sR6xJy7RXNg= github.com/binance-chain/edwards25519 v0.0.0-20200305024217-f36fc4b53d43/go.mod h1:TnVqVdGEK8b6erOMkcyYGWzCQMw7HEMCOw3BgFYCFWs= -github.com/btcsuite/btcd v0.0.0-20190629003639-c26ffa870fd8 h1:mOg8/RgDSHTQ1R0IR+LMDuW4TDShPv+JzYHuR4GLoNA= -github.com/btcsuite/btcd v0.0.0-20190629003639-c26ffa870fd8/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= +github.com/btcsuite/btcd v0.23.4 h1:IzV6qqkfwbItOS/sg/aDfPDsjPP8twrCOE2R93hxMlQ= +github.com/btcsuite/btcd v0.23.4/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= +github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= +github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 h1:E5KszxGgpjpmW8vN811G6rBAZg0/S/DftdGqN4FW5x4= -github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0/go.mod h1:d0H8xGMWbiIQP7gN3v2rByWUcuZPm9YsgmnfoxgbINc= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/edwards/v2 v2.0.3 h1:l/lhv2aJCUignzls81+wvga0TFlyoZx8QxRMQgXpZik= +github.com/decred/dcrd/dcrec/edwards/v2 v2.0.3/go.mod h1:AKpV6+wZ2MfPRJnTbQ6NPgWrKzbe9RCIlCF/FKzMtM8= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ipfs/go-log v0.0.1 h1:9XTUN/rW64BCG1YhPK9Hoy3q8nr4gOmHHBpgFdfw6Lc= -github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= +github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= +github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= +github.com/ipfs/go-log/v2 v2.1.3 h1:1iS3IU7aXRlbgUpN8yTTpJ53NXYjAe37vcI5+5nYrzk= +github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95 h1:+OLn68pqasWca0z5ryit9KGfp3sUsW4Lqg32iRMJyzs= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/mint v1.2.4 h1:DxYL0itZyPaR5Z9HILdxSoHx+gNs6Yx+neOGS3IVUk0= -github.com/otiai10/mint v1.2.4/go.mod h1:d+b7n/0R3tdyUYYylALXpWQ/kTN+QobSq/4SRGBkR3M= -github.com/otiai10/primes v0.0.0-20180210170552-f6d2a1ba97c4 h1:blMAhTXF6uL1+e3eVSajjLT43Cc0U8mU1gcigbbolJM= -github.com/otiai10/primes v0.0.0-20180210170552-f6d2a1ba97c4/go.mod h1:UmSP7QeU3XmAdGu5+dnrTJqjBc+IscpVZkQzk473cjM= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/jsonindent v0.0.0-20171116142732-447bf004320b/go.mod h1:SXIpH2WO0dyF5YBc6Iq8jc8TEJYe1Fk2Rc1EVYUdIgY= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= +github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/otiai10/primes v0.0.0-20210501021515-f1b2be525a11 h1:7x5D/2dkkr27Tgh4WFuX+iCS6OzuE5YJoqJzeqM+5mc= +github.com/otiai10/primes v0.0.0-20210501021515-f1b2be525a11/go.mod h1:1DmRMnU78i/OVkMnHzvhXSi4p8IhYUmtLJWhyOavJc0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc h1:9lDbC6Rz4bwmou+oE6Dt4Cb2BGMur5eR/GYptkKUVHo= -github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7 h1:LepdCS8Gf/MVejFIt8lsiexZATdoGVyp5bcyS+rYoUI= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/protob/ecdsa-keygen.proto b/protob/ecdsa-keygen.proto index c00f2ef6..249da904 100644 --- a/protob/ecdsa-keygen.proto +++ b/protob/ecdsa-keygen.proto @@ -5,7 +5,7 @@ // file LICENSE at the root of the source code distribution tree. syntax = "proto3"; - +package binance.tsslib.ecdsa.keygen; option go_package = "ecdsa/keygen"; /* @@ -26,6 +26,7 @@ message KGRound1Message { */ message KGRound2Message1 { bytes share = 1; + repeated bytes facProof = 2; } /* @@ -33,6 +34,7 @@ message KGRound2Message1 { */ message KGRound2Message2 { repeated bytes de_commitment = 1; + repeated bytes modProof = 2; } /* diff --git a/protob/ecdsa-resharing.proto b/protob/ecdsa-resharing.proto index 51e3bff3..d19b7fc7 100644 --- a/protob/ecdsa-resharing.proto +++ b/protob/ecdsa-resharing.proto @@ -5,7 +5,7 @@ // file LICENSE at the root of the source code distribution tree. syntax = "proto3"; - +package binance.tsslib.ecdsa.resharing; option go_package = "ecdsa/resharing"; /* @@ -15,6 +15,7 @@ message DGRound1Message { bytes ecdsa_pub_x = 1; bytes ecdsa_pub_y = 2; bytes v_commitment = 3; + bytes ssid = 4; } /* @@ -22,7 +23,7 @@ message DGRound1Message { */ message DGRound2Message1 { bytes paillier_n = 1; - repeated bytes paillier_proof = 2; + repeated bytes modProof = 2; bytes n_tilde = 3; bytes h1 = 4; bytes h2 = 5; @@ -53,5 +54,12 @@ message DGRound3Message2 { /* * The Round 4 "ACK" is broadcast to peers of the Old and New Committees from the New Committee in this message. */ -message DGRound4Message { +message DGRound4Message2 { } + +/* + * The Round 4 message to peers of New Committees from the New Committee in this message. + */ +message DGRound4Message1 { + repeated bytes facProof = 1; +} \ No newline at end of file diff --git a/protob/ecdsa-signing.proto b/protob/ecdsa-signing.proto index ef23f170..08591c03 100644 --- a/protob/ecdsa-signing.proto +++ b/protob/ecdsa-signing.proto @@ -5,7 +5,7 @@ // file LICENSE at the root of the source code distribution tree. syntax = "proto3"; - +package binance.tsslib.ecdsa.signing; option go_package = "ecdsa/signing"; /* diff --git a/protob/eddsa-keygen.proto b/protob/eddsa-keygen.proto index 52d9f530..199d0502 100644 --- a/protob/eddsa-keygen.proto +++ b/protob/eddsa-keygen.proto @@ -5,7 +5,7 @@ // file LICENSE at the root of the source code distribution tree. syntax = "proto3"; - +package binance.tsslib.eddsa.keygen; option go_package = "eddsa/keygen"; /* diff --git a/protob/eddsa-resharing.proto b/protob/eddsa-resharing.proto index 0ad299f5..3b646cba 100644 --- a/protob/eddsa-resharing.proto +++ b/protob/eddsa-resharing.proto @@ -5,7 +5,7 @@ // file LICENSE at the root of the source code distribution tree. syntax = "proto3"; - +package binance.tsslib.eddsa.resharing; option go_package = "eddsa/resharing"; /* @@ -20,7 +20,7 @@ message DGRound1Message { /* * The Round 2 "ACK" is broadcast to peers of the Old Committee in this message. */ -message DGRound2Message2 { +message DGRound2Message { } /* diff --git a/protob/eddsa-signing.proto b/protob/eddsa-signing.proto index eb795891..b018279e 100644 --- a/protob/eddsa-signing.proto +++ b/protob/eddsa-signing.proto @@ -5,7 +5,7 @@ // file LICENSE at the root of the source code distribution tree. syntax = "proto3"; - +package binance.tsslib.eddsa.signing; option go_package = "eddsa/signing"; /* diff --git a/protob/message.proto b/protob/message.proto index b1f3ce71..707bf039 100644 --- a/protob/message.proto +++ b/protob/message.proto @@ -5,7 +5,7 @@ // file LICENSE at the root of the source code distribution tree. syntax = "proto3"; - +package binance.tsslib; option go_package = "./tss"; import "google/protobuf/any.proto"; diff --git a/protob/signature.proto b/protob/signature.proto index 8b58b42a..a7aeeaa9 100644 --- a/protob/signature.proto +++ b/protob/signature.proto @@ -6,6 +6,7 @@ syntax = "proto3"; +package binance.tsslib; option go_package = "./common"; /* diff --git a/test/_ecdsa_fixtures/keygen_data_0.json b/test/_ecdsa_fixtures/keygen_data_0.json index 68193732..42e7d0b8 100644 --- a/test/_ecdsa_fixtures/keygen_data_0.json +++ b/test/_ecdsa_fixtures/keygen_data_0.json @@ -1 +1,107 @@ -{"PaillierSK":{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089,"LambdaN":12961384874459551339207596440355818078282806213785775342648388043059602722762871913278772846038817369064660845093934027868653313210209768197211341130328879664855129901147229478139886612629125477734977232104966936703892389401050632858920253425959764799077033459545539383476971434811275964871534548983750766672520115861254316608127511715120909186915818876509880056231208052258262510380080295105153942894215245396124765560528098088543032820032983199681389377630502693810272249886420412628917630701692773559849432356251989417662290420554742302877434371102841200978891107281847266690850557956285688970415890246967698012978,"PhiN":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345040231722508633216255023430241818373831637753019760112462416104516525020760160590210307885788430490792249531121056196177086065640065966399362778755261005387620544499772840825257835261403385547119698864712503978835324580841109484605754868742205682401957782214563694533381701115912571377940831780493935396025956},"NTildei":20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,"H1i":16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,"H2i":9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,"Alpha":7073137964546302519426197108795918903355600790936955717923736840490732786295482817546181286885485705259790301469527483584427669945842799314651770055406853852732275734013259522600331726874819141516989629984376313964484821900473954306398017682999954174229504658528063236651987893368454589560813095145972845549239634160410038395430555137183455161117726890513476626495652520344277700761372318531991732442923029695918379854101514426650142318224874474725980008331402893988707190510778836547424547034272241175095182865500366323417396500881575168432154152735186187611899531856007795602612877814298712246199637908092122376599,"Beta":3781329124778805698135968627168562375518994304682072891270490638565903398815921016162668916726922361980836207877243235819696431386786182993335163149600007435177418332221723597286704926041137399234960148965357193156048240916422570358759272483135455734754411862846510585609034734348827060942031583563018534961341701886811090344356131522527105061847489994982866503647681842337628828003678510975110957502599684605684107010421879806261007404227541546063432272552677635838137548724398528410425454871871886019590411197377178358695658433582626781842015808404610705006039671313159344095133029530767173526789878122576408306961,"P":74682834361593481810023372364901068308987897092071652855871125748072435148922776019438622439256305770842874061361575542291646920690415340075876934694226424600012724116678454328570534454824214148215599456938258720769517493756120783418012627126126134213332959856945407004391730249681744107119504561374114258903,"Q":68756140947346998421359710991066203811047516135270426947846872112839728963199219078428991392825847385895934224515769850480824784212201628242055180420737700856064230455409099120643105577895376414218231855017888457591638558485545668540344498197465720699981681711132445684644446855255773133247109821728609375713,"Xi":104274657407863474831405022936374567141379727082942638393989568860864323460152,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719074,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file +{ + "PaillierSK": { + "N": 26862170591381186117144639121800907711621441110694985906073099493104224258631997616337459884349048315436649598594766212786190249139720542986841637789367089751895746802368064104115662988051298443105665522549043623368088781757399812306242052676963161647378421463432813771675598887217547787422261194939872523185392600641669797286300834348740665304662829760721139573070204170902129262797162145018079946053388917283347495995703735479819366865064178966988962612678607190805087224162314010583832802161588455461100682306289046720947974174001828045869589748392310605782826097558345479795972515955139600004112610785604729710757, + "LambdaN": 13431085295690593058572319560900453855810720555347492953036549746552112129315998808168729942174524157718324799297383106393095124569860271493420818894683544875947873401184032052057831494025649221552832761274521811684044390878699906153121026338481580823689210731716406885837799443608773893711130597469936261592532213858878816794879138507493230952759071143256763914863135847264553077488577664633510002801989144150002815082601970607292530318876745886925922476991203656094267047307176836180759972736598187277189369375666238571075693265319527847455818556610107935217778613614515276483294115793052848151350340343144475494998, + "PhiN": 26862170591381186117144639121800907711621441110694985906073099493104224258631997616337459884349048315436649598594766212786190249139720542986841637789367089751895746802368064104115662988051298443105665522549043623368088781757399812306242052676963161647378421463432813771675598887217547787422261194939872523185064427717757633589758277014986461905518142286513527829726271694529106154977155329267020005603978288300005630165203941214585060637753491773851844953982407312188534094614353672361519945473196374554378738751332477142151386530639055694911637113220215870435557227229030552966588231586105696302700680686288950989996, + "P": 156199992157527515679277851563515941446129352347011319825196067672572313106672920497393870514107469203466250029881858883814872913259387909227911821518374527804663005734804760515923302853633171490096548012329974306537954808287455990519023653082720419807513617030697689651815046731746603871834526414575616974279, + "Q": 171972931754636180863279482190687457698558121860600423518736408700450794713333895253666069935303159779875615800617935381419433314051299283909205837177825350811890123813155577706389553834758909416625395542626595272258632835075316360438928982089374315539755253298617237177569237637287299829577403684740161746483 + }, + "NTildei": 25107490776052945575790163886980744121852075793230702092031092910315419013111724585107741342302647097816029689069156500419649067226989207335403141846585589456214707140363806918024254341805807847344462552372749802373561411623464018306841140152736878126807643286464707464144491205717529334857128642937311664356950670200785184493082292988908234459722618881044613550904554507333793627844968327344517418351075665978629614435510466378211576459017353838583039397930178040557511540818370302033808216608330168909665648805527673068950251148153088673193641290377199021831923470431364077200419352774733381328839199321622201645277, + "H1i": 947268510305326446073634507724913447936734171636912400557401318775427643035322780043344044871778218536295489345747992085537349997385753459769909944243608187249295932620582767525243046024431872134558350124222211815956076009495579000118546531817489783543950708796804986346442485595844139040615169351977594594085460608932273701244091036215057114383266995365365226626217411088112095883376367775475107954293975266374705057036496941779873360807750450088301028537780564210964889218799820623451941121168857520561736570209171665676631521362739174866629364755585577716299287494251706261472512421959632149833106509542229972234, + "H2i": 369382535766024782757053511943484023707590301248858510505619543451105355366349475321600848828578055383112252081262740450957242693258711711573898608872557215737850380375149487180022863563616178163440683814662347260503803753150609907077552201623376131096249150783552367189222999632342102603491398593162398739317344334427947844029843540621897547082716967267285286086227255034044222917612280937408214149645699005643727644027239999997789724357422423935120674874708262799420509411969660535187315093553065000790565517535769427338692918882249946664488170641583406635227373502217028982923125561321182147198392699754510926843, + "Alpha": 6669702575802332067051507400723122644839122909837745212967242092483177093666409546803836461769838120342268901353955156661858215357972959560589013601496347059806025103870404243017483236835513779152636288855166974055130846382972514018626781368599584594970808367427466242387093516189696228727421743052639556770083365914732684526264745234552992519722018618668212942788843125095288624719491808726320606573330293693883472896837701226592981135230240346758366425506314368382164046393267850565316732719649541361696315531259629023604214612386322746665953174348707199467021358068970739744717116080568232157794570566194767962193, + "Beta": 4226702103283230409689887623397868172263773072284894957823563643849293193454026723702667572204652313053676186724572803175380434781233229139441124649381910161179586223174332599144926974124401757990737042528978346870480691970515558734832577382199462271326295128038175934801169919909683367743160668157108777692509546415310274417808611190360269418302199996410620600891919468677526911530111335678118505332265820985238717612050499504379017017998849335196637255127847818529939710513362492159636375161860102767812483118583893111980078668274650612227857015281800001652750733997357414494554663009577159114465037019654992649831, + "P": 73458738483859906960505530286009984246470949380903088699714197960661061085155739592774719387578463149575507386969755941321227590452894174208881731929135833875986292699119509529479934647644869851989583450086833987908020203092806374228228193163809755370417640606181205095011955590840300054963158041301552101041, + "Q": 85447597162213295592421685633760432054265215569039633105172607001373470153249654026667908067025680307951469974169784414915998293227135302230856861321307857553984952411841792538464994439156606764727476914663543473228913738927277839435079606623601328422838494376915981928356488990978178935974751052976368228959, + "Xi": 11916527433647828918977250606530964748554479545005979893012447833077873661340, + "ShareID": 59857031556462284717113645237935722663924232558699039874171440941840562677323, + "Ks": [ + 59857031556462284717113645237935722663924232558699039874171440941840562677323, + 59857031556462284717113645237935722663924232558699039874171440941840562677324, + 59857031556462284717113645237935722663924232558699039874171440941840562677325, + 59857031556462284717113645237935722663924232558699039874171440941840562677326, + 59857031556462284717113645237935722663924232558699039874171440941840562677327 + ], + "NTildej": [ + 25107490776052945575790163886980744121852075793230702092031092910315419013111724585107741342302647097816029689069156500419649067226989207335403141846585589456214707140363806918024254341805807847344462552372749802373561411623464018306841140152736878126807643286464707464144491205717529334857128642937311664356950670200785184493082292988908234459722618881044613550904554507333793627844968327344517418351075665978629614435510466378211576459017353838583039397930178040557511540818370302033808216608330168909665648805527673068950251148153088673193641290377199021831923470431364077200419352774733381328839199321622201645277, + 25347321253130040165669198464747637594561084543160875890419030859255281770152898118930416834987900972848102624649324216864737441361174703716495863609322476087408028387965233238285802668149470294745292681572931725456001393301305606431470624857854001369500295623909754190673037775702216922020351830224578270444039819022050738946522292544390839130641700344286132805509002888252787493089063466842186838763536749516490621525613122365080892293964923531037888659136998882617232588657938236946761539565880695421135081565601958037809654399412376843665230604400657963765839300124472222517361299084266084873325229770349534163801, + 21292308023632581181198289513256444712308177801737936647775817904740223548406904422170044682275257431431315028868812996459652895591102638516259762883465973519952131280804384814232387700680465986308431924126707276653911414520068641511680988816011871501850341616042836704357314055609697319128691732749390230733118584785117859207288385865822542643892497962395263780902218346962474333143560514409678469862250207440675303576178809488957082804485944446225032956319749038833642485681946267959990181650810435723731755627693490958402541015772649403218387116342415453965710612578891122860080475980560084488514089712934013739781, + 30862742439593241585708940738147962226366718050501165321237842572436669411737554224118298772517486812375362296405238805912443683584456437953738131350045938787466841040220797401584428446174730486886913719857484102733725336155131475996004306581440515141136345274453183481082707684162136893963291137234740111704738897973555849945611157507740799100242851006495725457213328987753002399448999330977114104566617308036743409045315165685308303262653843118404666538923863063081603256452671995759383632696290823794779551389200638930288120410329395673124242908818519519330118489440718827371013019585524024323106350150372893461689, + 22979378405138893589556133897521754683725883868866200124855036635451629318130978502381364148180090802113404290988890710862982965215323041776178270890557477521858892737028622171038670089616608354902721183960978083779850093600290031995183687729693685221986115197995396115379213021683786733329612441286209467155931087319154615773299643384467163395079212511182788668809520330816917834693871112365384301753056859879036141250397887546537837356226101620007886380291232478721279115321079877121757818532329118011682430897866452653899829996834157870634757693124417404439069108796004756126487268680259509658734527559041787231993 + ], + "H1j": [ + 947268510305326446073634507724913447936734171636912400557401318775427643035322780043344044871778218536295489345747992085537349997385753459769909944243608187249295932620582767525243046024431872134558350124222211815956076009495579000118546531817489783543950708796804986346442485595844139040615169351977594594085460608932273701244091036215057114383266995365365226626217411088112095883376367775475107954293975266374705057036496941779873360807750450088301028537780564210964889218799820623451941121168857520561736570209171665676631521362739174866629364755585577716299287494251706261472512421959632149833106509542229972234, + 3880611998802971481733631912608098494196262778323132826239497201888814778206565779038508295122457059564658474446013387570155222804192995563846151508944721213706421845709980882611956739258515443677158361364276786837940404625680574358803765552923094221476122072037719326145018613827892918963555625064867923347247217043400958580189757825375746004023039968242295816205605839011845166061436412284630990719600784460170159747697580968014664501419463157750169639809058771175198577548493272625218114926414363501638734650889306046401503137104184980837461670247903219705017626260602184962369771097797399062562513353217770565531, + 10831225843690707396172531846155417775408096606230693395561759792282094678514600816663347869748948927505461627250570771469119140533266318664691242702922064589002187370016461932692821183944924214028723777910582605988927471997349297521445102656640882914313554019001846714781268540993241638422699989309757114468372538565383360692272346876551928106077801669528247179220120217249637229522616724754257258083101113512544707361337883525289735840725085893321825199206160881032044949147621462286088226618153585859120352649591156109044603116965314576319186213041333237791389005373191075396808136402252420638572954706343475908070, + 7379047495513012741768052948709028575585555485999633742902872635999567523931496397934138722681164927896829567152505037328183413349521525062101059035871423959216606865846805649228889409341121623645276995775466833580910793875325853108618331288089921648034916011339650914136927737993536151052450142994995957064434847339676185441357826456108823451579572271337009853306909251138234707237745952438799718674765118984490163866366131359672038740868456547662412411582409607895270049993194846640187000629665900662666631953358892682510778724505052220510687061629914270273761091793976303803161711621832014373503323366016634630406, + 11181628178709225486839172762330742659423724114653226835819397085381257304105257566937592702765853135360490266257083192830870077666275960663723976086310235934350572650480643691450656438652769853018111519504498965737440967647717818784480763727200258889702626069322469743838822112397983393755250519010298110374742466783922925487057158527359106287066137656141433380846258646250390469229071336860949790965072334352962521185854509550842351266605524163986806331802767702307634084162000820507840777885400805512071448246749124225768822589052733208381949931869152348048701648349767479285228581634453249080578720203097097514457 + ], + "H2j": [ + 369382535766024782757053511943484023707590301248858510505619543451105355366349475321600848828578055383112252081262740450957242693258711711573898608872557215737850380375149487180022863563616178163440683814662347260503803753150609907077552201623376131096249150783552367189222999632342102603491398593162398739317344334427947844029843540621897547082716967267285286086227255034044222917612280937408214149645699005643727644027239999997789724357422423935120674874708262799420509411969660535187315093553065000790565517535769427338692918882249946664488170641583406635227373502217028982923125561321182147198392699754510926843, + 15969079226966183502382475788401338523488393107499291032002044296474627394217596503568693748659928310923714663501210832583018731196547300812154979725769686288361401778491755680431944887852103221593745623856378860738388368922715577130878948380171217565406616753411777571011139446871620361320986832525400727639941640937364793530207582464684574638726091525574744197708378588020682070096454926012197394347212926657909811288708691651092564968341401161265195710381753419063864921935963903871011102644256286369641306466313805437318014970058871604639507243703932226939038829663830985880788590281053591951619664726739953671018, + 4991965837400033768069871541004261063135140339060316531025599789490182217840042887067892359235887756385798984623237629620830856274859128458536333773291056510054624668039972342087961925191332459597054733496082441434562377800869508105363637144128472861641912914050632826421706717769073047295100882343425757237060029497292934794235607113222710491355298594636899811931946648047811854321545995037508110462735244536402582555614331492107887985617810756386029525697146027973237905139754077084275404126435090136074550061845235250362605148173730041087342012184590101575852114035899339078096801167678750962125251280492197772961, + 23064781826724373162059309790268929175652024853806919970585039362565178134882146726172590403276064143405780341854075186376431326467367967581674319153076910116152907650926195389275015857432169732825486479963071595528043281158690951801576413614814760292960443710324174730418861380180819802157714395735784311928236401433597447641321165573011917942945482934111736905171027083754748263370419119297225245442731766002872688005764140266867116940180286239156118891196076208004108028110204585118322786319227036687507415330523815192275901354672284703528348057050369197376684323825935099945673108591425248965307506340817771591441, + 11624783050789373146135145081851167787144912685550655481254753886486876945039110175782945406523699017594888407389014880101840909734903251718897005090801524812985842948051908677768943122267838594824514706829210878634123695856103833890298708489700110861686115821849284312876390414092087922712380944749991516509300532655840012200292315982914838173353675847647411050340787544373391445319951232858137394531780600427092367231102522845204917484802409447548360146964783744378214393625590646132406343132441415352603518333034984771651345199420810327304168670235976704426708270671344968176457707557409261114405916868900751036145 + ], + "BigXj": [ + { + "Curve": "secp256k1", + "Coords": [ + 95225479287625109140551300097635441933915975782583911515343531112654602880814, + 113745830257261593369068705146261698861441809650110061237310141136031506190085 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 19909020077923456087962021369246692987785610885502332606764981730113023110067, + 60076350170225224442893367050676875983156697199114782416705437692213004111433 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15656029217860558075932288367874977299995954233140419375302609508233656030817, + 88293512119423239639079954683198441748713533855873639211876694257553830935691 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15825259379483050804368543653451724857970141958098760943464945060863314262898, + 46510254063758718632499733093297318465018983961512441577134679077369278627011 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 101163968142129288084264305494084191253074413300747651525777392366080313581620, + 19458713537429380315587854195885123660811710862685360770347430223563133437479 + ] + } + ], + "PaillierPKs": [ + { + "N": 26862170591381186117144639121800907711621441110694985906073099493104224258631997616337459884349048315436649598594766212786190249139720542986841637789367089751895746802368064104115662988051298443105665522549043623368088781757399812306242052676963161647378421463432813771675598887217547787422261194939872523185392600641669797286300834348740665304662829760721139573070204170902129262797162145018079946053388917283347495995703735479819366865064178966988962612678607190805087224162314010583832802161588455461100682306289046720947974174001828045869589748392310605782826097558345479795972515955139600004112610785604729710757 + }, + { + "N": 28569426937909813160816852590974326182398707183206563780157489308279811863376093908221211903705518704565348072663191903836343635499091979154072341420741676813730020871016039693403607409462919125031372066954550208350129974140220983698064393340951930706962427015297577648437601064168848334164842111410896962654571826800302294766234904003147622246551178854009373086133349568572584906962173774282191211244583738166117722131851467394725949126097483624199330170392292115956857647929895014719727669500452359666570376448590229755339126098108084513655351630004806845329610086536348250655270492083872210115099541350980087869489 + }, + { + "N": 24206147216197161168800749713794253097360175090858672931928135053300720098263302199858364218289609440982336278990382306871237304598903324389321581163067390799950591531027240968685694116269131503639449889176152844762069948482523881916749982047987022468266212702666839762407435492828573898843940379718086699114362935636941751781265771147161683942488081675636897258681038605775448214108367751993197065197897191643383564344845162403884453232776839031251175853763144050201714908798915379664014184087913029794762586324582687266708240565299184055542301695610690632283322864399949456272972805575542427101734659832898527078677 + }, + { + "N": 27422133357851370316963785322815189604726575748114057717984837411771756070272482926958898758576215271907291562151935508777240048370919087691109363558754627052939183040039501310348824807217194423462067796268979252972390229592512803802105741520833681021737552492269574490364955499455488503619050939812934483556240372784852668293634144857453177818024665828049715609921864852313661181061967825839048394234894185931968992541576874445544364635775263264674967563604397356712492758200667296917972566268326712277912968541425534456091226445588857731271210711997226828598037017820056231841183710665446107873358077925757871906777 + }, + { + "N": 21505960474634451313164479453847246698949068816168543450757887402781638444470085463014709362627652554915905319404707097558936051290374460876928738652082570278593089424429424860613076608894979923762290356343173648507348492292368062802168911752824853129719568062188174453668131066706292448200533705323966142811976260936406546600112652090553738417255733994944221554428167638466246670287061019896463881779810197390238307556892485807795138448959345532929528137209046373349550262355661974463926686395148775662060236988349400478971416621513539908477667503550115870803074998306032371456267566517610267867391193312424397935929 + } + ], + "ECDSAPub": { + "Curve": "secp256k1", + "Coords": [ + 76266489189895419469020567248501927603989841769205411177925179985114092514949, + 17959638069442050620236663888410692330316152082152911789514411031446499229348 + ] + } +} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_1.json b/test/_ecdsa_fixtures/keygen_data_1.json index 03911657..3e12a3bf 100644 --- a/test/_ecdsa_fixtures/keygen_data_1.json +++ b/test/_ecdsa_fixtures/keygen_data_1.json @@ -1 +1,107 @@ -{"PaillierSK":{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773,"LambdaN":11965116643641949635885932206652711228069478890355636946335037095857824204792751516547542172691695770762312645774020870995278782091927700853021146858776011618719516091318509819897959624727826767835307287665868805142431572047422950357248817998327200650108462382285105270975278668120496503591654716531547113688656751738100540554882657085156055277574738768917123952100316530725550908644747452231188839176032305030675216428579800880622045367926074519576691554576481478819003213525881378532266888732131750479170727259561318783487243810779611492259253171062407221253763092683460860198262672146170687159308412065832323010774,"PhiN":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377313503476201081109765314170312110555149477537834247904200633061451101817289494904462377678352064610061350432857159601761244090735852149039153383109152962957638006427051762757064533777464263500958341454519122637566974487621559222984518506342124814442507526185366921720396525344292341374318616824131664646021548},"NTildei":19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,"H1i":5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,"H2i":3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,"Alpha":11421071720691985233805931440613725920647192840657306004580627664269869560827359450311849288274035445082830308979661706753108048712766307196692431931830063360703978457192789078600088154454453923447528766525917272869231453811378073992003872441820913146901968708891167890273179426508931612939315210420141536662858066164555270207634588140969207306567894980319084359328176222470944215148990545719044600126162705080135986981147555994772657029718950668109976569450187736404100221957582390492136834255108985799466784705512624569497708820941678094557313288115000789823971847930771259280468016904034040650165223964465502742163,"Beta":4227530880403545440038476922105110261199537465641999998158148101603915605231937688109728431992553740717999358378275263490543703125096499417543757592701897468657628484096430689758261242530422788974112689990440998814106644208884422045041519433217236005763161899441271328933810953174242937025629868477234469201962721397475711644378280986530924591451805074246910811173744333178474233373419231266135117437995644802581087590961012020226698544189434580409698374958610263938482416302069628007660903039729910120878609160294838371096166505152238228269549996232209744466071160336256098002053827877135524242668985610586518309037,"P":69148727022965490791371353344188179096380205628223578363347845412422456543356557096766868185510445198293123561559310892475561895225747211013646582990901153064187509486206820830686069751777027208039340667218028595066917519852526144012481411056284833957995414832693297161887219241384165301228065443379819309633,"Q":70359316491054176535495692674347777118526215106212851796111499381496549337314923687504495752117695325055665155415615099586640262752041948937762394634356663125386298530536960357064450956605539549770693624698845882927874489981293210912747793431816752540230899424105324436139249872533904838907087453451890367169,"Xi":108436151147340935451391561657404920031102047337332505756523480128367229972730,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719075,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file +{ + "PaillierSK": { + "N": 28569426937909813160816852590974326182398707183206563780157489308279811863376093908221211903705518704565348072663191903836343635499091979154072341420741676813730020871016039693403607409462919125031372066954550208350129974140220983698064393340951930706962427015297577648437601064168848334164842111410896962654571826800302294766234904003147622246551178854009373086133349568572584906962173774282191211244583738166117722131851467394725949126097483624199330170392292115956857647929895014719727669500452359666570376448590229755339126098108084513655351630004806845329610086536348250655270492083872210115099541350980087869489, + "LambdaN": 14284713468954906580408426295487163091199353591603281890078744654139905931688046954110605951852759352282674036331595951918171817749545989577036170710370838406865010435508019846701803704731459562515686033477275104175064987070110491849032196670475965353481213507648788824218800532084424167082421055705448481327116571621783280156627266306673613557770132415067791761025356248059645897264585788635046339329639753214021614915782754214179908727166288405568041736300150892127323291788850009844614304509270438683742045888904656839139941936906942558425724970581335889893630058987401037228149733076112847409338010564314966102162, + "PhiN": 28569426937909813160816852590974326182398707183206563780157489308279811863376093908221211903705518704565348072663191903836343635499091979154072341420741676813730020871016039693403607409462919125031372066954550208350129974140220983698064393340951930706962427015297577648437601064168848334164842111410896962654233143243566560313254532613347227115540264830135583522050712496119291794529171577270092678659279506428043229831565508428359817454332576811136083472600301784254646583577700019689228609018540877367484091777809313678279883873813885116851449941162671779787260117974802074456299466152225694818676021128629932204324, + "P": 179696051055123023215556819548680549334277719811328399025475104641756939359631189702474530421876600335876842000086226772970952145746397968678244929383831619212881928505998388309390501861374874325811635591096208662594788934951680613702506047691842619635942634194229436037649059736143528223527514655893104450263, + "Q": 158987505680611429764814570251714581676636304062461165057161967811536173073371007309624002163427631402197650300199732193395179526018508844385001768408158712489329135846196606721108558620536607973274649079684707414464453289342518783101395641150292445906407334367316740161321966195502987072896005566457051214903 + }, + "NTildei": 25347321253130040165669198464747637594561084543160875890419030859255281770152898118930416834987900972848102624649324216864737441361174703716495863609322476087408028387965233238285802668149470294745292681572931725456001393301305606431470624857854001369500295623909754190673037775702216922020351830224578270444039819022050738946522292544390839130641700344286132805509002888252787493089063466842186838763536749516490621525613122365080892293964923531037888659136998882617232588657938236946761539565880695421135081565601958037809654399412376843665230604400657963765839300124472222517361299084266084873325229770349534163801, + "H1i": 3880611998802971481733631912608098494196262778323132826239497201888814778206565779038508295122457059564658474446013387570155222804192995563846151508944721213706421845709980882611956739258515443677158361364276786837940404625680574358803765552923094221476122072037719326145018613827892918963555625064867923347247217043400958580189757825375746004023039968242295816205605839011845166061436412284630990719600784460170159747697580968014664501419463157750169639809058771175198577548493272625218114926414363501638734650889306046401503137104184980837461670247903219705017626260602184962369771097797399062562513353217770565531, + "H2i": 15969079226966183502382475788401338523488393107499291032002044296474627394217596503568693748659928310923714663501210832583018731196547300812154979725769686288361401778491755680431944887852103221593745623856378860738388368922715577130878948380171217565406616753411777571011139446871620361320986832525400727639941640937364793530207582464684574638726091525574744197708378588020682070096454926012197394347212926657909811288708691651092564968341401161265195710381753419063864921935963903871011102644256286369641306466313805437318014970058871604639507243703932226939038829663830985880788590281053591951619664726739953671018, + "Alpha": 21491373657758085577916665593069897304698302824435532374383303720077841245117963656613269831569915553635905663061595834031898972929677249621933525501357436617324598304991585720687960909120658023342943471479838820960047997726786932001492921886802008375343827315954282235777792289696889802892898512843614362177443840425280198612137376280284849353811498082367792976318845774884618722716252884964293120442367038395033342390295633797972152438214316402685935216333012823407451764996594240864085421336823764988704967767076102572703398147213022890269868975034087372976874667029882482262817244173861823337136055042053399964749, + "Beta": 3320311752963954234697711283997815118439358938488190680929864725275034450096946665982937070819528081639621271613538490046386233130458063404579138646139919818379405279730584606243356048610802153043772324355846574025657091426070974316058004074522798849624673902006611228323918313017476418442921878743271314304960386902920541720359376856180397105402483065699785280311003389761147901974764578633793149569955286297534816723552552275416622730320317061458505375678230006930629535752265013560395587064530027550698558348295866795214521021305541919346582881078518616476349467229447131285652277977502561612452907061432958990114, + "P": 70809288826622369725825379006387741309025014873650261751266229233883897190933864780171874016638684817324204969639453339585607590221341667270589678303972956528804192252650177939435179917755571202115955733042695654662128941468586251562467087477332554065966906744871985875266426991185100611501333353651522226181, + "Q": 89491511894694159453747430128734210348570662135726367595285167836164539619537914844620100362327593655844333914098578866199805574792984175111800205197419163387659137071854218603937967776465225847192887789659618586209585295171442059952399265568911468803824806178632700690337945305729670474997622116792123325013, + "Xi": 76948082823091852504553670832408291290543297863564249603348941514219073751559, + "ShareID": 59857031556462284717113645237935722663924232558699039874171440941840562677324, + "Ks": [ + 59857031556462284717113645237935722663924232558699039874171440941840562677323, + 59857031556462284717113645237935722663924232558699039874171440941840562677324, + 59857031556462284717113645237935722663924232558699039874171440941840562677325, + 59857031556462284717113645237935722663924232558699039874171440941840562677326, + 59857031556462284717113645237935722663924232558699039874171440941840562677327 + ], + "NTildej": [ + 25107490776052945575790163886980744121852075793230702092031092910315419013111724585107741342302647097816029689069156500419649067226989207335403141846585589456214707140363806918024254341805807847344462552372749802373561411623464018306841140152736878126807643286464707464144491205717529334857128642937311664356950670200785184493082292988908234459722618881044613550904554507333793627844968327344517418351075665978629614435510466378211576459017353838583039397930178040557511540818370302033808216608330168909665648805527673068950251148153088673193641290377199021831923470431364077200419352774733381328839199321622201645277, + 25347321253130040165669198464747637594561084543160875890419030859255281770152898118930416834987900972848102624649324216864737441361174703716495863609322476087408028387965233238285802668149470294745292681572931725456001393301305606431470624857854001369500295623909754190673037775702216922020351830224578270444039819022050738946522292544390839130641700344286132805509002888252787493089063466842186838763536749516490621525613122365080892293964923531037888659136998882617232588657938236946761539565880695421135081565601958037809654399412376843665230604400657963765839300124472222517361299084266084873325229770349534163801, + 21292308023632581181198289513256444712308177801737936647775817904740223548406904422170044682275257431431315028868812996459652895591102638516259762883465973519952131280804384814232387700680465986308431924126707276653911414520068641511680988816011871501850341616042836704357314055609697319128691732749390230733118584785117859207288385865822542643892497962395263780902218346962474333143560514409678469862250207440675303576178809488957082804485944446225032956319749038833642485681946267959990181650810435723731755627693490958402541015772649403218387116342415453965710612578891122860080475980560084488514089712934013739781, + 30862742439593241585708940738147962226366718050501165321237842572436669411737554224118298772517486812375362296405238805912443683584456437953738131350045938787466841040220797401584428446174730486886913719857484102733725336155131475996004306581440515141136345274453183481082707684162136893963291137234740111704738897973555849945611157507740799100242851006495725457213328987753002399448999330977114104566617308036743409045315165685308303262653843118404666538923863063081603256452671995759383632696290823794779551389200638930288120410329395673124242908818519519330118489440718827371013019585524024323106350150372893461689, + 22979378405138893589556133897521754683725883868866200124855036635451629318130978502381364148180090802113404290988890710862982965215323041776178270890557477521858892737028622171038670089616608354902721183960978083779850093600290031995183687729693685221986115197995396115379213021683786733329612441286209467155931087319154615773299643384467163395079212511182788668809520330816917834693871112365384301753056859879036141250397887546537837356226101620007886380291232478721279115321079877121757818532329118011682430897866452653899829996834157870634757693124417404439069108796004756126487268680259509658734527559041787231993 + ], + "H1j": [ + 947268510305326446073634507724913447936734171636912400557401318775427643035322780043344044871778218536295489345747992085537349997385753459769909944243608187249295932620582767525243046024431872134558350124222211815956076009495579000118546531817489783543950708796804986346442485595844139040615169351977594594085460608932273701244091036215057114383266995365365226626217411088112095883376367775475107954293975266374705057036496941779873360807750450088301028537780564210964889218799820623451941121168857520561736570209171665676631521362739174866629364755585577716299287494251706261472512421959632149833106509542229972234, + 3880611998802971481733631912608098494196262778323132826239497201888814778206565779038508295122457059564658474446013387570155222804192995563846151508944721213706421845709980882611956739258515443677158361364276786837940404625680574358803765552923094221476122072037719326145018613827892918963555625064867923347247217043400958580189757825375746004023039968242295816205605839011845166061436412284630990719600784460170159747697580968014664501419463157750169639809058771175198577548493272625218114926414363501638734650889306046401503137104184980837461670247903219705017626260602184962369771097797399062562513353217770565531, + 10831225843690707396172531846155417775408096606230693395561759792282094678514600816663347869748948927505461627250570771469119140533266318664691242702922064589002187370016461932692821183944924214028723777910582605988927471997349297521445102656640882914313554019001846714781268540993241638422699989309757114468372538565383360692272346876551928106077801669528247179220120217249637229522616724754257258083101113512544707361337883525289735840725085893321825199206160881032044949147621462286088226618153585859120352649591156109044603116965314576319186213041333237791389005373191075396808136402252420638572954706343475908070, + 7379047495513012741768052948709028575585555485999633742902872635999567523931496397934138722681164927896829567152505037328183413349521525062101059035871423959216606865846805649228889409341121623645276995775466833580910793875325853108618331288089921648034916011339650914136927737993536151052450142994995957064434847339676185441357826456108823451579572271337009853306909251138234707237745952438799718674765118984490163866366131359672038740868456547662412411582409607895270049993194846640187000629665900662666631953358892682510778724505052220510687061629914270273761091793976303803161711621832014373503323366016634630406, + 11181628178709225486839172762330742659423724114653226835819397085381257304105257566937592702765853135360490266257083192830870077666275960663723976086310235934350572650480643691450656438652769853018111519504498965737440967647717818784480763727200258889702626069322469743838822112397983393755250519010298110374742466783922925487057158527359106287066137656141433380846258646250390469229071336860949790965072334352962521185854509550842351266605524163986806331802767702307634084162000820507840777885400805512071448246749124225768822589052733208381949931869152348048701648349767479285228581634453249080578720203097097514457 + ], + "H2j": [ + 369382535766024782757053511943484023707590301248858510505619543451105355366349475321600848828578055383112252081262740450957242693258711711573898608872557215737850380375149487180022863563616178163440683814662347260503803753150609907077552201623376131096249150783552367189222999632342102603491398593162398739317344334427947844029843540621897547082716967267285286086227255034044222917612280937408214149645699005643727644027239999997789724357422423935120674874708262799420509411969660535187315093553065000790565517535769427338692918882249946664488170641583406635227373502217028982923125561321182147198392699754510926843, + 15969079226966183502382475788401338523488393107499291032002044296474627394217596503568693748659928310923714663501210832583018731196547300812154979725769686288361401778491755680431944887852103221593745623856378860738388368922715577130878948380171217565406616753411777571011139446871620361320986832525400727639941640937364793530207582464684574638726091525574744197708378588020682070096454926012197394347212926657909811288708691651092564968341401161265195710381753419063864921935963903871011102644256286369641306466313805437318014970058871604639507243703932226939038829663830985880788590281053591951619664726739953671018, + 4991965837400033768069871541004261063135140339060316531025599789490182217840042887067892359235887756385798984623237629620830856274859128458536333773291056510054624668039972342087961925191332459597054733496082441434562377800869508105363637144128472861641912914050632826421706717769073047295100882343425757237060029497292934794235607113222710491355298594636899811931946648047811854321545995037508110462735244536402582555614331492107887985617810756386029525697146027973237905139754077084275404126435090136074550061845235250362605148173730041087342012184590101575852114035899339078096801167678750962125251280492197772961, + 23064781826724373162059309790268929175652024853806919970585039362565178134882146726172590403276064143405780341854075186376431326467367967581674319153076910116152907650926195389275015857432169732825486479963071595528043281158690951801576413614814760292960443710324174730418861380180819802157714395735784311928236401433597447641321165573011917942945482934111736905171027083754748263370419119297225245442731766002872688005764140266867116940180286239156118891196076208004108028110204585118322786319227036687507415330523815192275901354672284703528348057050369197376684323825935099945673108591425248965307506340817771591441, + 11624783050789373146135145081851167787144912685550655481254753886486876945039110175782945406523699017594888407389014880101840909734903251718897005090801524812985842948051908677768943122267838594824514706829210878634123695856103833890298708489700110861686115821849284312876390414092087922712380944749991516509300532655840012200292315982914838173353675847647411050340787544373391445319951232858137394531780600427092367231102522845204917484802409447548360146964783744378214393625590646132406343132441415352603518333034984771651345199420810327304168670235976704426708270671344968176457707557409261114405916868900751036145 + ], + "BigXj": [ + { + "Curve": "secp256k1", + "Coords": [ + 95225479287625109140551300097635441933915975782583911515343531112654602880814, + 113745830257261593369068705146261698861441809650110061237310141136031506190085 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 19909020077923456087962021369246692987785610885502332606764981730113023110067, + 60076350170225224442893367050676875983156697199114782416705437692213004111433 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15656029217860558075932288367874977299995954233140419375302609508233656030817, + 88293512119423239639079954683198441748713533855873639211876694257553830935691 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15825259379483050804368543653451724857970141958098760943464945060863314262898, + 46510254063758718632499733093297318465018983961512441577134679077369278627011 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 101163968142129288084264305494084191253074413300747651525777392366080313581620, + 19458713537429380315587854195885123660811710862685360770347430223563133437479 + ] + } + ], + "PaillierPKs": [ + { + "N": 26862170591381186117144639121800907711621441110694985906073099493104224258631997616337459884349048315436649598594766212786190249139720542986841637789367089751895746802368064104115662988051298443105665522549043623368088781757399812306242052676963161647378421463432813771675598887217547787422261194939872523185392600641669797286300834348740665304662829760721139573070204170902129262797162145018079946053388917283347495995703735479819366865064178966988962612678607190805087224162314010583832802161588455461100682306289046720947974174001828045869589748392310605782826097558345479795972515955139600004112610785604729710757 + }, + { + "N": 28569426937909813160816852590974326182398707183206563780157489308279811863376093908221211903705518704565348072663191903836343635499091979154072341420741676813730020871016039693403607409462919125031372066954550208350129974140220983698064393340951930706962427015297577648437601064168848334164842111410896962654571826800302294766234904003147622246551178854009373086133349568572584906962173774282191211244583738166117722131851467394725949126097483624199330170392292115956857647929895014719727669500452359666570376448590229755339126098108084513655351630004806845329610086536348250655270492083872210115099541350980087869489 + }, + { + "N": 24206147216197161168800749713794253097360175090858672931928135053300720098263302199858364218289609440982336278990382306871237304598903324389321581163067390799950591531027240968685694116269131503639449889176152844762069948482523881916749982047987022468266212702666839762407435492828573898843940379718086699114362935636941751781265771147161683942488081675636897258681038605775448214108367751993197065197897191643383564344845162403884453232776839031251175853763144050201714908798915379664014184087913029794762586324582687266708240565299184055542301695610690632283322864399949456272972805575542427101734659832898527078677 + }, + { + "N": 27422133357851370316963785322815189604726575748114057717984837411771756070272482926958898758576215271907291562151935508777240048370919087691109363558754627052939183040039501310348824807217194423462067796268979252972390229592512803802105741520833681021737552492269574490364955499455488503619050939812934483556240372784852668293634144857453177818024665828049715609921864852313661181061967825839048394234894185931968992541576874445544364635775263264674967563604397356712492758200667296917972566268326712277912968541425534456091226445588857731271210711997226828598037017820056231841183710665446107873358077925757871906777 + }, + { + "N": 21505960474634451313164479453847246698949068816168543450757887402781638444470085463014709362627652554915905319404707097558936051290374460876928738652082570278593089424429424860613076608894979923762290356343173648507348492292368062802168911752824853129719568062188174453668131066706292448200533705323966142811976260936406546600112652090553738417255733994944221554428167638466246670287061019896463881779810197390238307556892485807795138448959345532929528137209046373349550262355661974463926686395148775662060236988349400478971416621513539908477667503550115870803074998306032371456267566517610267867391193312424397935929 + } + ], + "ECDSAPub": { + "Curve": "secp256k1", + "Coords": [ + 76266489189895419469020567248501927603989841769205411177925179985114092514949, + 17959638069442050620236663888410692330316152082152911789514411031446499229348 + ] + } +} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_10.json b/test/_ecdsa_fixtures/keygen_data_10.json deleted file mode 100644 index 8802b4d8..00000000 --- a/test/_ecdsa_fixtures/keygen_data_10.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269,"LambdaN":12937346295638194970454918410966664317170193845880105859928712423956355343601327604449568075921132974447501127186859362352104860972148571531224089536229752013468020736712382740319737636095418633286489368631224990383191991256810799290330670979067573785561256815545745988095831557669731865312118971050488824562167648765850781612044921350806690323251805325507860684969277622397191154699981466619445268588090978301166006871082532919789287203722593737752225116735709772101587881307265347866706139907323366118945239783154641985307607291011166175443772324952238743175616676430861961178747162388784578332883651525950064134622,"PhiN":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124335297531701563224089842701613380646503610651015721369938555244794382309399962933238890537176181956602332013742165065839578574407445187475504450233471419544203175762614530695733412279814646732237890479566309283970615214582022332350887544649904477486351233352861723922357494324777569156665767303051900128269244},"NTildei":31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,"H1i":20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,"H2i":11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,"Alpha":21037127350648374388265281801088652029507674521677932668096972451285996231583372560390764495469914786126011413858799924924632993629660624940171061024112299251424189717568873729271177196160837682095329312245312789791663239525186602963462814228741719981597884110393167183666436021997307470961622021308761789526984374862534269454240710028273269824919578312303738857215548062403749020848762321378134737482162867932557874194960936213444699033810544340776505472623923769317907668875486466780709709456578963447347288923313760688176855605033192292787928419913044571652157610603001644061045928905603168705318778522852235459520,"Beta":2620784159511461367171886970842804838285449450280528796198270706554768448066983426458938477218428089112699048655178753945042334912939431087154532665300910895985793015988556656392640752110694280023897672499804763851086549400515230420838385444401894283066443786614210233997085283270868429129152763086524741054653926783660179150394690273847200276291402219580006125344865836783236819192404514394880954109676925225775777662427087047027019348137937514179396480469125560039235921390200371699649598384379124973381552258204847346718889984433878301828063295658205048621272653158564538825996157040581954613120918284132726091877,"P":89475622537762675728974568335049172002891517866786195098747840534379383230181724060087158574801781737829720406781235075837537443923155550248596886945492296155799677292965893054114630397300932796636262282815163811177779224502417221555195284229849744490375693969163252199165060227179874651089638745637572151841,"Q":87576527499111845581088108234976855206250186847569142434666752945723582872666665689978488331743553189055342597852077583988889171934553793305799774613693851396402205385570653429086994140252313844417891005401224274265208415308267321557541823702935867617565116486094315681130794016272990743791558000742337398209,"Xi":108446049354585009563599188857823197198796742426858964353445534150139132351308,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719084,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_11.json b/test/_ecdsa_fixtures/keygen_data_11.json deleted file mode 100644 index be6fe093..00000000 --- a/test/_ecdsa_fixtures/keygen_data_11.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417,"LambdaN":10546507513815870011202221807048124261388116621758325722248518435587864479390441534429380490962292716096493137831435064321970963632762119299451530649897571964680197855510105384912382192359461449489659353367831281819429656012058882043588408464550019418412582998872587929075695873776386458179298223958290618068487947087686161356286780272673269607170463788545586380498167745667921237901923843905603453938275954325943507348616895095334722096529329250818632967769497658026768061409834060482043020648307963179655242846091146043826120000900264976850914652110038411771683359426600949891088091169486185937559313164661188325858,"PhiN":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236136975894175372322712573560545346539214340927577091172760996335491335842475803847687811206907876551908651887014697233790190669444193058658501637265935538995316053536122819668120964086041296615926359310485692182292087652240001800529953701829304220076823543366718853201899782176182338972371875118626329322376651716},"NTildei":21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,"H1i":1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,"H2i":12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,"Alpha":8982739081272854541934523319427253588467492827803161357301963917513000963502541842905105681681074542212337044580953037002586978836568075556108242392397727337702591496849327297819763419676407138897055307945621109340979072527552512127881185272498952674704564803472098350415094428678177669943457961835371283365249952737803750391108969157864485803552872413708303131501743419305692945470398669424157929027704215436132973083623854777821569504259872417560946709889391407336129154527987375049059947728682930824038229884743173021842124239197256298870158837715736105256108408298704883376201253985919862556649612508469115138487,"Beta":4088067740459137808811076309364308166144143936592138527814322587742015626072756647472779645603989449536339941168905657232708393541004126425578035477732974993408835682636005934904957054707702135364364310109988068420346827745201341038707055112794259658052409869594879856192168933378436341095162370493973117777172241093243186871721439379872753248966788944214638701318228541853354496547849080235214498578470404216601362453859923551674357004020753791695416051418222625969167051843946636012205349176289659853283079365536526161184566585874828283563472963538858158945643893545504662663563024628528370244945396455207554015913,"P":77114081314434698284625001706804956216657525881888645263812565688822549770219689367039998651251855343829818986309253679847986215016450796878063018578875906149162023270434324323737706329378616917536663482134382721880273717336865671785268763258506235192131065212101453446219297424869591612900260786389512977349,"Q":68591517486487907148795855375453344498707797847620287596642332488177490859641238415144040182112248279567876226849127462552972460451311974882696902105331891067224402823346011141231030998934071096834303026588137694424227553002771316695401258297529683480822977446161175655722910205858180225173139797949568476393,"Xi":102417801318300522827543028380237405039470935189878693372793819835767512967730,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719085,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_12.json b/test/_ecdsa_fixtures/keygen_data_12.json deleted file mode 100644 index 00cee022..00000000 --- a/test/_ecdsa_fixtures/keygen_data_12.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809,"LambdaN":12649114648698023623207581714516273068569857863779922195592008953473652425116070617022661604703735736857072926318462134208433137241301877070707804796110853362542703529985819061004956747982271683059661708609417319456940543716300051132236894264268547834389206215688928033556849364957378572076887917893156651435477228293403914365215264741429649347268060372525691649430330377699798361888525573305233625250157761053388278937429245829461566805614221380333617774378553229078900524678009284535438133006016674765429769683682079900938097920139703510704176847513334862176642889026299348491375632102840877200669005958046697790202,"PhiN":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302870954456586807828730430529482859298694536120745051383298860660755399596723777051146610467250500315522106776557874858491658923133611228442760667235548757106458157801049356018569070876266012033349530859539367364159801876195840279407021408353695026669724353285778052598696982751264205681754401338011916093395580404},"NTildei":20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,"H1i":5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,"H2i":9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,"Alpha":10928104431684700417733708045912718965477943234179479443491190731544809809548419404610396468679317867934062508085119860257843555533387677855365089368513379664989312324252611915835847145756060080535374821786589878766218087778904579033462046562486236127051269526081610695928619559821958782154372239474927531246325953701149934936548137645974193148212555504579690737345202947507671469837555832941181067968832079002227290222942702339045018469021215049494336486662845896636796067178685969877024691461733107137831899861413698716405688483348579257680342148569869697506810096068917919901564290302880777240405235663393765269533,"Beta":1039277948865102195475539899126141492740216541424684503873954153083419358650544971410492796860198762992289579618709558914193861671747449586172085358360673538599436374468520530289360591209565194471715225795411394515219778646132112107790103299234421930080366080710312735560185886428716772261820540535067369856191132935335186343852015010793177174753371077193401117675783730891727725391088790884639347301233244772442440837288266965280260057843087943863825869843941645123848639618967273908660256558573601337500018789717965291574233171006199140960984549962037285035967151599674984262223123992140632826586419159821344506405,"P":70324225353872584915029067519484692578937467637617265785257105453146632527867665892779438234869979809458857178536106434306891723841620774429231578751306065484106286169799381617311738439259972671005517221188286647570979731216930705347454132046885393640921962237344473096303381845086112714244503031607702221919,"Q":74195880159397447403194619178745707891408299716844504567730537822187743527511868400500694547539646648063355579205522028136081462413688292178457841155413518279159317526040104802934439812496669926481648941851098394176177726278009206432599498118277852440356015364639423273805562934637090452276793752050597938721,"Xi":89972818073747572860817289983108159172128213945325342322372458837180490108592,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719086,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_13.json b/test/_ecdsa_fixtures/keygen_data_13.json deleted file mode 100644 index aacc18a2..00000000 --- a/test/_ecdsa_fixtures/keygen_data_13.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661,"LambdaN":13571101219316393581063299746454254391846382607874278755157507067004522371187746006211197952896147182100688221129008660504134678206660079403966081432850020478872078723088081223695149499660223031248418364551057026166479307957653596858108143518499103662206671168954023951044047191446702792671415230358167948916837711268075399053418040154829891214592552482885426306147784257234812670913343010080956986015284574250103949739312308203104041491807999523209740028700196831425887086905374613986057808037393077464321231155847945427967888532892807462968077262055976032314700802512107916338082446812567874049405612592804337006462,"PhiN":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897833675422536150798106836080309659782429185104965770852612295568514469625341826686020161913972030569148500207899478624616406208082983615999046419480057400393662851774173810749227972115616074786154928642462311695890855935777065785614925936154524111952064629401605024215832676164893625135748098811225185608674012924},"NTildei":27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,"H1i":6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,"H2i":509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,"Alpha":20623704766878122337549007574908090088690796615889949450705841268663171711097312565174398770505203248025026977276335309665015720639235703441275952467455766517692617308081829097800698675051522381711572029274302741637483073280130802773420001374626178642984195132958144725140910950079169212216091746923707621973039781859327148198118700478560299411644530914773213693444305785482088269512946803092614958209239401164203334728489935413949155720869394777918340330538096788082961781569183323103824018628603865974398525353826007343679941330737025154856165843997482552258490422646753286256746834333785399847650909908666810949513,"Beta":2134438644469295824023682300371082913938294077901293508338627609104542199043804994160824731329846339134097803622375661080060513585927556847874002589903510525409599636634800005276716106788143807934181942901372095744370506968849866207024684468862669886900409322684859243657041093786703911389553257415617138088528360801815368494147340023428918896787940104079769091345127621422199790413675540449321224966551818980957591788741707745513983816458179559105461626376316735442238898874272884779136871401688685817539439220607389800148141968029429865431783570210684593414957734884702257151394521913144505009385547867626485341410,"P":84434062632249294866734127047501674467460960025048034848722769415334290495803905529887430668283924565274108296030958074723716196932312813896152481940807646783104585034717436098857469895620897116476778269498701747487363611879379401812359899149307546301442230716012471742728381716929375375626022251884697815199,"Q":81105123182565561609142942463971374111421431815164342763025058855414230533849902869970658572183514263008560797169745491591820281032685399517330323151334322395143398991637422537102347994291725039438558158768007590121731955245313796180992192578388209147751434009364595965945480269472574389432282352757292403989,"Xi":53517375537227730227711555866101191647372612878766179831710016528404264411014,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719087,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_14.json b/test/_ecdsa_fixtures/keygen_data_14.json deleted file mode 100644 index 20527681..00000000 --- a/test/_ecdsa_fixtures/keygen_data_14.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269,"LambdaN":12253450205082539716456939643369121490778899723852138854566281876140534442959382122298551948967125966812722062487226765011846883461064358792014276377564025593909794705012352080517392679117767663847620092296508916134686814531248662325673293460839985537392726457477262226965960012508616936883247666275717651348116372663842872863071832157833017121406200602755596549883695545850585173588836706281696405599929322690930495753338108619016797459695078085093649077056581424010240839957311466361536916872369469960213820910516459546594419637157627541316838401120186633576676342910133635121764304703234642739813331891407564274622,"PhiN":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696232745327685745726143664315666034242812401205511193099767391091701170347177673412563392811199858645381860991506676217238033594919390156170187298154113162848020481679914622932723073833744738939920427641821032919093188839274315255082633676802240373267153352685820267270243528609406469285479626663782815128549244},"NTildei":27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,"H1i":12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,"H2i":3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,"Alpha":23592449100932472913723742857452632270074531594269873475876154898487607002707603455504298722801842557097352502808278793443423870350856827240066919245273882363940309350232850332471995617344108979166853773685930462634214146253119633340947819898062529672245167160007268807138144539624180025351670801118198531075204255247126308345795449823534271262263486614207344172646432428907704236949823864748420366967169158874291878685404852674422091768851856991748813614092635463873330741080858300846337619241392230072459103124144808794746215977581754667719797852899975255315570203083936612691054442685481590296903588735876168214337,"Beta":2241260463476365839799568863666806611085184463149875551694969806791484248426385509615622877972270524882083779034880701964004245980843840913039001559808539054807539033805465324977629613640178362051877243479317231422411219692563527891036005110964929794350620568938051017549882939734747426110215780783480223307968812509738017942378325388449227137122385546108645155648901724542330171120635368566693290199736319993839533775178088480549463950008022592669071451322223420675273208102441434165424242724009171778973745680055455801448977048396262723203188999014970800174920188313009388787571643967281891946193327205659520514382,"P":76573618811417536581498533881386067081370381450988661304747025978923675694295668315347780852870082142254844336383743963518818028779549875555142979756125647789638962006183819544756411626025408413124762547524016076213547804003255419222199325882205261142348250025157127773558052680528691993151930812783976282683,"Q":89555837608755003647760630147777125411798552272806968602298714793561494014623739633416383797634098670165195686564612242910539060062849784326916854368948229131084118661050489924174972179572972370836221641544008587880717670092246987229172759902690548295573807879793881597002868986721060792913966296571951151403,"Xi":37752810869620181018808138792926654291600871231745367034846034481142697077018,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719088,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_15.json b/test/_ecdsa_fixtures/keygen_data_15.json deleted file mode 100644 index ba70a16e..00000000 --- a/test/_ecdsa_fixtures/keygen_data_15.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253,"LambdaN":13347483383993920234974669432672273558741670181415825113607741287682703006318387010734324492487496011371574712781743396453795834125960367550699611855608623912018236257065307696868702575066704653163305456086040608108165756853546482244497474825921391171352209106481886295143189005040612626769122610370122103300913159964354332532076205041435111992248854623743090567577178988121521966429506436140036516128278726572472816788919853719327761052915837349393803367833315234616518036340131068259192000526319025941766887722302969983197958080668860232818533576805109686414181286841540121441545479894659798883919229345108597362094,"PhiN":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206601826319928708665064152410082870223984497709247486181135154357976243043932859012872280073032256557453144945633577839707438655522105831674698787606735666630469233036072680262136518384001052638051883533775444605939966395916161337720465637067153610219372828362573683080242883090959789319597767838458690217194724188},"NTildei":20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,"H1i":4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,"H2i":12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,"Alpha":1023094435758033828727853673503518021788995151117737839037946070482365553864568465644315553393944688902963836968988384394990225294732257746530227564851881567553360209237306936432805791479779939304173051885020337541848026131672756742835407070706738162837318162979809969804628526579807595224118894371555509059772618621915045040549576607268863097614025818155830682848815990351043703431037783534811652002775425789483463041920452457651727985999937388511129338606740425246707572000967994243010989135808378609628036864009180461112437457377955189851791308263759606402600493174816118790436037518160153786790429203708552207093,"Beta":1860061131643694695817560344647590137360314027299488290887477742620381398776184472673255174639087684086481255685046578654083161365235402325565620144261318703584722323023279097551178396140925876285390518555598774688241269768356890112772806657331277312045251521880326066666351129892396108778847150820144149152581979364487255301593614160060327670391933043996471452232518577991688163211300227104423654122341733610655802524691112957537427486265418815936109424732639273876045951477526099773842942727702599387335732909803482290416333522979671661580524857328538363407357006870364034759819132607071996003954232200419270251203,"P":69330825418177372200222501502021581383611555195597384888520537040371359962817847135110190227945281924750380675981609250217403420263772123412474082924390976121156608329083507069278289516288582401929390037149828203662253264387384968411058821157111958322833218693407365450213686462015463793043191757673407907211,"Q":75574524472414293284572575597782417204738057617991087888531426455007056011933812159174025765510359900845763821183521196183207302435565494366137598970419939852878609118141337998253014974665219517909225688756187523927503161680277043161036726224130445885897426288202048387873662662867749009811137847897584430653,"Xi":97621681963721318725701239838569490337028252181680696064833518340698211458725,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719089,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_16.json b/test/_ecdsa_fixtures/keygen_data_16.json deleted file mode 100644 index 0c03a687..00000000 --- a/test/_ecdsa_fixtures/keygen_data_16.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493,"LambdaN":14080703391719144888391270757775116117109669366091131764338627840431409285697269918546205639954170297928205809280176048353977889056920793287744763055879254972345503433577571804837110325396908749209586489914514301023124798573753810649576834881020212122170777128308188608559781762957925859504660843153381803836232469296870102057294666795757897601277281745859883643025151511641434597782651694343303915206991451606118037904082808616659478582872784574162747857512040132373201458220965841931887934622687101910213013013190197073241641749317854299275685784608327734046731585020591921982128402275131977763464148783476243911014,"PhiN":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672464938593740204114589333591515795202554563491719767286050303023282869195565303388686607830413982903212236075808165617233318957165745569148325495715024080264746402916441931683863775869245374203820426026026380394146483283498635708598551371569216655468093463170041183843964256804550263955526928297566952487822028},"NTildei":25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,"H1i":11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,"H2i":18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,"Alpha":12729480434100385003486120189380464464368914506160717533174707708617896058043344216966394691352291664569500338910373884037086128584678764290991925435550499609003366477386555553049776980226661137498138880756510617706047001754557828271987958958342142409911533882761286989941285853701281385885169468795224028180911945711795276858161393201491682151613970864387850422254506979296056127468117602960367952008505437010561049504850468875927041206890681393059841619838892354583268372414244977397363327554305250016785856276640338300846319618208893872132387304435477623731519418849395786293412229336645854492560288840609924926560,"Beta":213758724258113430587300239375765875956150774792096370623768552073219166434415898049008983237456158246691701253149821252901679120750611161643859605294384924617276641086693179173360601241232277346377159133788463466861133860298262491327077160872999488538657610007146106749274402454646846609334357669015152422129125679414061724554085866727823044277425831742891162019067536270251765887696263369693188014821742696220119813495432501404041965621224801957717262003637993194207132268230875181246965343044578212374721267639878520008485750276782452824321568644297245839660628437795902643071549499285523328658194098609756867251,"P":88081646641529665507273547243017384197410890121994817563429185762123708014685096063175630716484581957404591914071282207755726851742891373666926865496425437005171452685397811318352540089453959928369498492499298909424673583043428849994278631386845184001542491526482042860659502780672409276965945102930379736733,"Q":72867650622054582559320982224864873498303856390840003936080663086240388836473979685393705493347490406743779809077125800580452339652458373453407196657156144776119356303968376896662530622723911556256463787815161839602213866438056090442125836706122799161726702093210767923379893230379028861129954259057328860233,"Xi":17061564512938100789423169251557695332295154798378275138106520071484680978865,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719090,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_17.json b/test/_ecdsa_fixtures/keygen_data_17.json deleted file mode 100644 index ba5d1c33..00000000 --- a/test/_ecdsa_fixtures/keygen_data_17.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761,"LambdaN":15145192765861853331597077861701241172582000664017010643955080741244031714946175792458138695554947147223400916510037343944681326069213045730112150901974044845057843352841213096879625591055273773389627137209890541925584974637543916093769084407874753961444635193312547293844179408821026857706100229019370654679878349820290933110361855350608276526124596370838251880351927731306924732866862588333307861088277231120891078817881039010971305939264790150183265366692417445051589264902223453487096384802620587977255001176542077853212695915053684789569312211242510073220493754223378348737864980457018411051106172326775534325426,"PhiN":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309359756699640581866220723710701216553052249192741676503760703855462613849465733725176666615722176554462241782157635762078021942611878529580300366530733384834890103178529804446906974192769605241175954510002353084155706425391830107369579138624422485020146440987508446756697475729960914036822102212344653551068650852},"NTildei":27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,"H1i":14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,"H2i":12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,"Alpha":8597386238940188057388170802507419845742256940460403244206110298391557557588315931604524201094756268802523119003598855229262681357926640853773268534129416120642324436454247405984816562974026247960510453871657027751279470562164293927977157675979137396427805006897360543153428540363917907902712813552387106305648530097484737905683266460904528988959568529769154321201207844846214208869772622550302971018172809103144738069350667751451934798553912933200139655754200044440835253643507470297845377705765313505536932381622466043608134116685410245673526099377975134772900963862625066084794372663888690648189084183335317206997,"Beta":2372900827440562300088717940529337038535894574305728265502187194512938642786845227163670408284170414606957596167749891568868679374644865763773083462867510108361526676307032045219595950598482829128747379265327484626156322423714305595801588227374718701382407808955361661145916468687694843771374596347137939112137226064254094345184527465242631630857847437805528358353373693348039280559743740294758411567965900018830934413286157836346242133729838775063310274661205302192960501542969122124445984036446986171668913086861148246493536182462724393062222158825801924288905860122957562188839139636599744959108476732447169771558,"P":88154769546285876769842405156738193840385190981742311060853282808131249873020586583239327227413562268487908961397495668871787945326544074731070567167998111074502898664577463482624250005653736162140645197003478260267854213808058478799901064184787129486192007748662135329532160830701255809209756500611722555571,"Q":76746928359805630797034117376065293217324346339297616412696275985513168039468913071239349334453939851037770587545865615341779367181949178994535049948656518923123036090706244771434708405526330116847159542342070833647638697628305890940571317894174529795165098914049863682132728454697188201847350644515367322933,"Xi":67239578809990443096928340986103661629396163806652730984840847978375421238200,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719091,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_18.json b/test/_ecdsa_fixtures/keygen_data_18.json deleted file mode 100644 index b32dcd5c..00000000 --- a/test/_ecdsa_fixtures/keygen_data_18.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689,"LambdaN":10945881420219298030208017465022421223468879186808854117644281214751157695822823522469689107517838732787091842978761410657727014988785864375302994164940923784656901274559045989263157566863185316642607211573969132209157431608902829938280592362859367795651668951474233791483099661902057494115981653541758590328372561362152685521767302904317907616236945181605915033352505786234153338852614746443923963531878099335783755300345859575733544795562889515367597141671427383903058884230205160853964018777194675886923970694842743642202953334428976686306368783665524035023797170820634457915032917016537520637995417310013202752378,"PhiN":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180656745122724305371043534605808635815232473890363211830066705011572468306677705229492887847927063756198671567510600691719151467089591125779030735194283342854767806117768460410321707928037554389351773847941389685487284405906668857953372612737567331048070047594341641268915830065834033075041275990834620026405504756},"NTildei":26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,"H1i":6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,"H2i":4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,"Alpha":4444019369404276421238041254632474553085238662928259086789078542992298567545781498051703294838970466449267650380574275913665718919756928336605485269857423068493659299437161194399763568650812553373010300233657188225569533698124377866160602316037919780440062132689862703725950872830925417061455578545111645625207207337417670925707543829688344589638732079810868013756303487783302299670241572257565007886618770126185738890684585077010491543310790345040705143023181452920207962285595852646091065193586490313162094856085519457980851806210967575810672197763135778267454419280774976321957529484908484216702382125298782440301,"Beta":5658253787786953134283325468784183961301963265857726971821062750069771534639440297114244967514197810389971330966768871947778622815352552642030313191468621023113723877157609486362984459693990471806440595068919485722355164724416717318214465402043037816472451277128244554611899855222525824075860199210334115974550715867089255354565931895942017689425962198535216326360377031214413073867230634760172798213570673763490327134822393681432615928857053367331003947402583239354074969865017219673497430632314252175974413189200147860495945751324951452356547627380952821931363130201997270279108205118571681709622024987430385684672,"P":89194222291410539565067212225809625562504476211560640508139359193159376230186216534720025900524282907197886020001409078626448639742549409882830100227506288246425438115838596520950348577499839733982171915242765034102237408093957155583970801162356152333928634741213265719731355103285731507231411533686494239903,"Q":73158878296307602040471228303881561292899977962989573705225889651829805826268179466601243365603012850767523233312562487054074214107500964468941569777026781026720238125159059972854000697236243198601253617329909585069757470073947555088319522286201661874937577823616672040844412855855762762034485193994108906649,"Xi":109680149625859489173071759471383900488345899774799234651830191016079849871052,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719092,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_19.json b/test/_ecdsa_fixtures/keygen_data_19.json deleted file mode 100644 index 9b88b542..00000000 --- a/test/_ecdsa_fixtures/keygen_data_19.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481,"LambdaN":12680467167708357397499656995528948764461859116183326669853247088412819453347344945873272943457982098291331229344267641661143544198926932854546856199242876958081531888650692995953860390679316132663435258173344746064221141887300051894912804785147461740101379523428557568963857490423658480304888486168514394581432871029883243824735053370396662544346871089541175527507206836289408264417977841664519289897496092387186852283662600673751384327281203124195873086806739914491843440053996852064006435815657612058155053057664862115464638620710114694187780447494149294549071582862509142930474884616484380287227610352866300035626,"PhiN":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789162865742059766487649470106740793325088693742179082351055014413672578816528835955683329038579794992184774373704567325201347502768654562406248391746173613479828983686880107993704128012871631315224116310106115329724230929277241420229388375560894988298589098143165725018285860949769232968760574455220705732600071252},"NTildei":22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693,"H1i":14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350,"H2i":5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606,"Alpha":16380244965896008801919408645936993550924957700721479161673630281850361062503261680599689707823676777310077481906382879606119604165047930373013280115012493752844970579878517066443230309042042441572875966190351578677880444163051314226325635339575873633557739362846928410342828296897755012941497353554734471719499538529755855913754690487421231886060384680021711276147823122089629967058794841918329868513135059249177398876169190137660936525931868726446930727579693236881785320959200907132001805960652371305197116002022574810436630089855452678943496431222390051700491644213773826180538455211527397162384759501040652373520,"Beta":5409579759921405496172851100695764176115240640942343102082680030422623318242231542603797699900375975623051590552296981744220537972849971610413837294126572702069481792906841293756866931654296911855979763846655401892922304903925323594082253834083894084982069615207172506207598042594682752787900534890303259733200145578418152237259219628361487642223954511392398278461000889097500877720476887760547323947438306561036244840349379398021445297623344466586628982630703971743416680901079572948478711850482102325675696204661959115646550951222005961358095642498470440397454176534637474359381203874990642759155756376039458281787,"P":71142622732823092771600232991887405608420439069488707234322802311395775960369720791090798551056037392644423655209711227449759711339590752246402642043161303328834147730525092601565362018860913373554097711171347910977871993801024409572687764722273417089937930301881129106343959481581469499716794042933844538383,"Q":78847255568597063210353773482737495188025890214257169939115963003125176821588317019734659735792865548486459315958687046377971655293341833596822386807038200913408069815845894019290816469279074780543511918691259124375994723766610947141935133106757808745250975676835609615344299234348125165237192022527421628189,"Xi":101234860413981333785777616997801195521027200114102541777592727366717615158215,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719093,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_2.json b/test/_ecdsa_fixtures/keygen_data_2.json index 55cb6e90..6f204be5 100644 --- a/test/_ecdsa_fixtures/keygen_data_2.json +++ b/test/_ecdsa_fixtures/keygen_data_2.json @@ -1 +1,107 @@ -{"PaillierSK":{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569,"LambdaN":11902062570026038844928064149176278541839326237222692682614055226863340618930399989922805778085447093988327139291288182044516698109337113273434404825676524978337961297770844771288397339031247669711102492382709694634162641841256000497610875206052103697220719333025847237975024887047448145053215318108447372167737702441251565075594802542407391503289364676930046848592889764444473208311524176750345361303715776188892120559308145482690640380386008098215824607516345906020591797099324696931930539129840295608183302807198936106271490859318518243627618367482381944500401418308985572354562059638591289588383179774841227539522,"PhiN":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335475404882503130151189605084814783006578729353860093697185779528888946416623048353500690722607431552377784241118616290965381280760772016196431649215032691812041183594198649393863861078259680591216366605614397872212542981718637036487255236734964763889000802836617971144709124119277182579176766359549682455079044},"NTildei":23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,"H1i":14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,"H2i":2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,"Alpha":99930612749194478118600296908042506926692739692582613847838885872895917361241984244333640602599304371167273758960563944657238964168847145890094008171141820109486094906362559078696139635411309492242182207416966460371128892064206746882387386758007030887894419440391740224416422066158827171353996674486071321206545809261340407889645960240945172487811751333275882478086448570781023042237458085693984643299076063991520418457060933571240987187072863856077205628245912721319981126278018820722990414471130623469536651100186034442507467323080021000888531326106364386993840733872502601891369558638525326664561154017828847672,"Beta":1472506745866574115259626864190224692004809117918934787166846528825105924609688841466108295556523488652122781674292297444292995560548157322502731129456683958121540244723666433763823118509403125487290004612301144261032505590317683722074031806725573843523098435377672727847103988767892621104751882955851738010346666992587376833949626244593568297587354693893573786831021202044714442955117877945963339672065587195524871759098746680962314094004915895821503042815585664974984481266334250938197696203435802781999374052416565642364570792202973860776695581419631252848636379297475201116274866616952484297948956399638888073235,"P":83104757259097189186950079721727937164047733672638603586459353944286466420114424207639146426104476267980570400699074675491296408383804082762803049161909665127121238239604267151066446049707844668847402565424593554013870425931673959230798027449894404276925930305256920765401340481960562820469278891866471990029,"Q":71642128110699780750818062148317314680771514115102777629050114614166804537355399484072749627185009816049031339010525295431775519909278950430775769096405423548701628777704430192232627139339020595673609882501846596139297041913744680629890377085537497999944390724942020172896518996334279151212334736977022165629,"Xi":57247727253443308067353212155912907169143973469345000079270234591786686254614,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719076,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file +{ + "PaillierSK": { + "N": 24206147216197161168800749713794253097360175090858672931928135053300720098263302199858364218289609440982336278990382306871237304598903324389321581163067390799950591531027240968685694116269131503639449889176152844762069948482523881916749982047987022468266212702666839762407435492828573898843940379718086699114362935636941751781265771147161683942488081675636897258681038605775448214108367751993197065197897191643383564344845162403884453232776839031251175853763144050201714908798915379664014184087913029794762586324582687266708240565299184055542301695610690632283322864399949456272972805575542427101734659832898527078677, + "LambdaN": 12103073608098580584400374856897126548680087545429336465964067526650360049131651099929182109144804720491168139495191153435618652299451662194660790581533695399975295765513620484342847058134565751819724944588076422381034974241261940958374991023993511234133106351333419881203717746414286949421970189859043349557024310086219410477072748318487742739042777792072287595135146879759069811629897245323954026052320936771957200007617646395169281432170783039473463063929011840852856768971615621594157956524540453364109564204089902134439307707012750590999769391124192112406139571469549041961432228411468903953868707176804446220918, + "PhiN": 24206147216197161168800749713794253097360175090858672931928135053300720098263302199858364218289609440982336278990382306871237304598903324389321581163067390799950591531027240968685694116269131503639449889176152844762069948482523881916749982047987022468266212702666839762407435492828573898843940379718086699114048620172438820954145496636975485478085555584144575190270293759518139623259794490647908052104641873543914400015235292790338562864341566078946926127858023681705713537943231243188315913049080906728219128408179804268878615414025501181999538782248384224812279142939098083922864456822937807907737414353608892441836, + "P": 179347946090591232979004413467496114724106046225268285989836604667382648146344194469177416555876441903499128428642839375190430980577227664241391921790897322284182306801422645287586317496796904441090376224911593079648968209876923078326921963018765802933604070645734447691803536882758254809782260398835871487663, + "Q": 134967518412339594141270096718702349678420045267053782420908241589925942702229066876111596537378876195970035900967030238355459387858045288062857804114223046211819064054261491188111953542035218625453081691491289918180656941396759795215840950343540604537439650815116924658304811869846364384214985080453763149179 + }, + "NTildei": 21292308023632581181198289513256444712308177801737936647775817904740223548406904422170044682275257431431315028868812996459652895591102638516259762883465973519952131280804384814232387700680465986308431924126707276653911414520068641511680988816011871501850341616042836704357314055609697319128691732749390230733118584785117859207288385865822542643892497962395263780902218346962474333143560514409678469862250207440675303576178809488957082804485944446225032956319749038833642485681946267959990181650810435723731755627693490958402541015772649403218387116342415453965710612578891122860080475980560084488514089712934013739781, + "H1i": 10831225843690707396172531846155417775408096606230693395561759792282094678514600816663347869748948927505461627250570771469119140533266318664691242702922064589002187370016461932692821183944924214028723777910582605988927471997349297521445102656640882914313554019001846714781268540993241638422699989309757114468372538565383360692272346876551928106077801669528247179220120217249637229522616724754257258083101113512544707361337883525289735840725085893321825199206160881032044949147621462286088226618153585859120352649591156109044603116965314576319186213041333237791389005373191075396808136402252420638572954706343475908070, + "H2i": 4991965837400033768069871541004261063135140339060316531025599789490182217840042887067892359235887756385798984623237629620830856274859128458536333773291056510054624668039972342087961925191332459597054733496082441434562377800869508105363637144128472861641912914050632826421706717769073047295100882343425757237060029497292934794235607113222710491355298594636899811931946648047811854321545995037508110462735244536402582555614331492107887985617810756386029525697146027973237905139754077084275404126435090136074550061845235250362605148173730041087342012184590101575852114035899339078096801167678750962125251280492197772961, + "Alpha": 12467492105857811088598302265413624870073963876683904115549792420718244667761381421662233615179766169159301747248171001794324121204205514721429411527556422474730559769416341734269127480499195450639280845254825411204958752546880935506192531533720763834591807162931020700005834118949784903275082231197821697666438147146351494072123177022074937176886845914902073137041551203992966070392159928400957103356072574222408552466272801416682546062655619490834257111523501863902732635107221589080095740033399178826436203367881462984740273038927833790029236756977691739321073706751435418243818216736984796273413201551593241377745, + "Beta": 3092900433075562857730870820153450098596803035900780910921649947445993103830332321974327778125342409105586526032316509076255129195987441893584663089182631340709377726700826265326534446647512383669109999128575227820698317763796087420267115770338098171394186245601090936193819697220860084235631876618972161796183290283437286083205410206306343632327839214997496752240852724669373936278550652726231441900252091569385961205860343319878986257063348059860099745005755756686589281908205169093609472515987160341040392705054879831617033293887998222621876114828567467692369732362792302927316059137471591649253327901378732843111, + "P": 74729784971772398429529650577831893381748271883890759436992442977820668409070982447343050413507330989104807520612734716141235130908592245155908358608877871002264282164414418683122667727977065469038707348970011499327641988120347830292987877895400315533431826053732774970762953513006237872470250023861544322019, + "Q": 71230995886296547844286770147735054870849465379812954762983713904489759233350383164729814676282726841672841443277930887612560071405593846902336747858766127875795287445507639632096218873801296532878661675646715168843741383193429019420970355899846985062779107421621481264788608899327914283807067035047912995689, + "Xi": 9402118216258077893650330587582519725761707076837026476585485684614098285800, + "ShareID": 59857031556462284717113645237935722663924232558699039874171440941840562677325, + "Ks": [ + 59857031556462284717113645237935722663924232558699039874171440941840562677323, + 59857031556462284717113645237935722663924232558699039874171440941840562677324, + 59857031556462284717113645237935722663924232558699039874171440941840562677325, + 59857031556462284717113645237935722663924232558699039874171440941840562677326, + 59857031556462284717113645237935722663924232558699039874171440941840562677327 + ], + "NTildej": [ + 25107490776052945575790163886980744121852075793230702092031092910315419013111724585107741342302647097816029689069156500419649067226989207335403141846585589456214707140363806918024254341805807847344462552372749802373561411623464018306841140152736878126807643286464707464144491205717529334857128642937311664356950670200785184493082292988908234459722618881044613550904554507333793627844968327344517418351075665978629614435510466378211576459017353838583039397930178040557511540818370302033808216608330168909665648805527673068950251148153088673193641290377199021831923470431364077200419352774733381328839199321622201645277, + 25347321253130040165669198464747637594561084543160875890419030859255281770152898118930416834987900972848102624649324216864737441361174703716495863609322476087408028387965233238285802668149470294745292681572931725456001393301305606431470624857854001369500295623909754190673037775702216922020351830224578270444039819022050738946522292544390839130641700344286132805509002888252787493089063466842186838763536749516490621525613122365080892293964923531037888659136998882617232588657938236946761539565880695421135081565601958037809654399412376843665230604400657963765839300124472222517361299084266084873325229770349534163801, + 21292308023632581181198289513256444712308177801737936647775817904740223548406904422170044682275257431431315028868812996459652895591102638516259762883465973519952131280804384814232387700680465986308431924126707276653911414520068641511680988816011871501850341616042836704357314055609697319128691732749390230733118584785117859207288385865822542643892497962395263780902218346962474333143560514409678469862250207440675303576178809488957082804485944446225032956319749038833642485681946267959990181650810435723731755627693490958402541015772649403218387116342415453965710612578891122860080475980560084488514089712934013739781, + 30862742439593241585708940738147962226366718050501165321237842572436669411737554224118298772517486812375362296405238805912443683584456437953738131350045938787466841040220797401584428446174730486886913719857484102733725336155131475996004306581440515141136345274453183481082707684162136893963291137234740111704738897973555849945611157507740799100242851006495725457213328987753002399448999330977114104566617308036743409045315165685308303262653843118404666538923863063081603256452671995759383632696290823794779551389200638930288120410329395673124242908818519519330118489440718827371013019585524024323106350150372893461689, + 22979378405138893589556133897521754683725883868866200124855036635451629318130978502381364148180090802113404290988890710862982965215323041776178270890557477521858892737028622171038670089616608354902721183960978083779850093600290031995183687729693685221986115197995396115379213021683786733329612441286209467155931087319154615773299643384467163395079212511182788668809520330816917834693871112365384301753056859879036141250397887546537837356226101620007886380291232478721279115321079877121757818532329118011682430897866452653899829996834157870634757693124417404439069108796004756126487268680259509658734527559041787231993 + ], + "H1j": [ + 947268510305326446073634507724913447936734171636912400557401318775427643035322780043344044871778218536295489345747992085537349997385753459769909944243608187249295932620582767525243046024431872134558350124222211815956076009495579000118546531817489783543950708796804986346442485595844139040615169351977594594085460608932273701244091036215057114383266995365365226626217411088112095883376367775475107954293975266374705057036496941779873360807750450088301028537780564210964889218799820623451941121168857520561736570209171665676631521362739174866629364755585577716299287494251706261472512421959632149833106509542229972234, + 3880611998802971481733631912608098494196262778323132826239497201888814778206565779038508295122457059564658474446013387570155222804192995563846151508944721213706421845709980882611956739258515443677158361364276786837940404625680574358803765552923094221476122072037719326145018613827892918963555625064867923347247217043400958580189757825375746004023039968242295816205605839011845166061436412284630990719600784460170159747697580968014664501419463157750169639809058771175198577548493272625218114926414363501638734650889306046401503137104184980837461670247903219705017626260602184962369771097797399062562513353217770565531, + 10831225843690707396172531846155417775408096606230693395561759792282094678514600816663347869748948927505461627250570771469119140533266318664691242702922064589002187370016461932692821183944924214028723777910582605988927471997349297521445102656640882914313554019001846714781268540993241638422699989309757114468372538565383360692272346876551928106077801669528247179220120217249637229522616724754257258083101113512544707361337883525289735840725085893321825199206160881032044949147621462286088226618153585859120352649591156109044603116965314576319186213041333237791389005373191075396808136402252420638572954706343475908070, + 7379047495513012741768052948709028575585555485999633742902872635999567523931496397934138722681164927896829567152505037328183413349521525062101059035871423959216606865846805649228889409341121623645276995775466833580910793875325853108618331288089921648034916011339650914136927737993536151052450142994995957064434847339676185441357826456108823451579572271337009853306909251138234707237745952438799718674765118984490163866366131359672038740868456547662412411582409607895270049993194846640187000629665900662666631953358892682510778724505052220510687061629914270273761091793976303803161711621832014373503323366016634630406, + 11181628178709225486839172762330742659423724114653226835819397085381257304105257566937592702765853135360490266257083192830870077666275960663723976086310235934350572650480643691450656438652769853018111519504498965737440967647717818784480763727200258889702626069322469743838822112397983393755250519010298110374742466783922925487057158527359106287066137656141433380846258646250390469229071336860949790965072334352962521185854509550842351266605524163986806331802767702307634084162000820507840777885400805512071448246749124225768822589052733208381949931869152348048701648349767479285228581634453249080578720203097097514457 + ], + "H2j": [ + 369382535766024782757053511943484023707590301248858510505619543451105355366349475321600848828578055383112252081262740450957242693258711711573898608872557215737850380375149487180022863563616178163440683814662347260503803753150609907077552201623376131096249150783552367189222999632342102603491398593162398739317344334427947844029843540621897547082716967267285286086227255034044222917612280937408214149645699005643727644027239999997789724357422423935120674874708262799420509411969660535187315093553065000790565517535769427338692918882249946664488170641583406635227373502217028982923125561321182147198392699754510926843, + 15969079226966183502382475788401338523488393107499291032002044296474627394217596503568693748659928310923714663501210832583018731196547300812154979725769686288361401778491755680431944887852103221593745623856378860738388368922715577130878948380171217565406616753411777571011139446871620361320986832525400727639941640937364793530207582464684574638726091525574744197708378588020682070096454926012197394347212926657909811288708691651092564968341401161265195710381753419063864921935963903871011102644256286369641306466313805437318014970058871604639507243703932226939038829663830985880788590281053591951619664726739953671018, + 4991965837400033768069871541004261063135140339060316531025599789490182217840042887067892359235887756385798984623237629620830856274859128458536333773291056510054624668039972342087961925191332459597054733496082441434562377800869508105363637144128472861641912914050632826421706717769073047295100882343425757237060029497292934794235607113222710491355298594636899811931946648047811854321545995037508110462735244536402582555614331492107887985617810756386029525697146027973237905139754077084275404126435090136074550061845235250362605148173730041087342012184590101575852114035899339078096801167678750962125251280492197772961, + 23064781826724373162059309790268929175652024853806919970585039362565178134882146726172590403276064143405780341854075186376431326467367967581674319153076910116152907650926195389275015857432169732825486479963071595528043281158690951801576413614814760292960443710324174730418861380180819802157714395735784311928236401433597447641321165573011917942945482934111736905171027083754748263370419119297225245442731766002872688005764140266867116940180286239156118891196076208004108028110204585118322786319227036687507415330523815192275901354672284703528348057050369197376684323825935099945673108591425248965307506340817771591441, + 11624783050789373146135145081851167787144912685550655481254753886486876945039110175782945406523699017594888407389014880101840909734903251718897005090801524812985842948051908677768943122267838594824514706829210878634123695856103833890298708489700110861686115821849284312876390414092087922712380944749991516509300532655840012200292315982914838173353675847647411050340787544373391445319951232858137394531780600427092367231102522845204917484802409447548360146964783744378214393625590646132406343132441415352603518333034984771651345199420810327304168670235976704426708270671344968176457707557409261114405916868900751036145 + ], + "BigXj": [ + { + "Curve": "secp256k1", + "Coords": [ + 95225479287625109140551300097635441933915975782583911515343531112654602880814, + 113745830257261593369068705146261698861441809650110061237310141136031506190085 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 19909020077923456087962021369246692987785610885502332606764981730113023110067, + 60076350170225224442893367050676875983156697199114782416705437692213004111433 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15656029217860558075932288367874977299995954233140419375302609508233656030817, + 88293512119423239639079954683198441748713533855873639211876694257553830935691 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15825259379483050804368543653451724857970141958098760943464945060863314262898, + 46510254063758718632499733093297318465018983961512441577134679077369278627011 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 101163968142129288084264305494084191253074413300747651525777392366080313581620, + 19458713537429380315587854195885123660811710862685360770347430223563133437479 + ] + } + ], + "PaillierPKs": [ + { + "N": 26862170591381186117144639121800907711621441110694985906073099493104224258631997616337459884349048315436649598594766212786190249139720542986841637789367089751895746802368064104115662988051298443105665522549043623368088781757399812306242052676963161647378421463432813771675598887217547787422261194939872523185392600641669797286300834348740665304662829760721139573070204170902129262797162145018079946053388917283347495995703735479819366865064178966988962612678607190805087224162314010583832802161588455461100682306289046720947974174001828045869589748392310605782826097558345479795972515955139600004112610785604729710757 + }, + { + "N": 28569426937909813160816852590974326182398707183206563780157489308279811863376093908221211903705518704565348072663191903836343635499091979154072341420741676813730020871016039693403607409462919125031372066954550208350129974140220983698064393340951930706962427015297577648437601064168848334164842111410896962654571826800302294766234904003147622246551178854009373086133349568572584906962173774282191211244583738166117722131851467394725949126097483624199330170392292115956857647929895014719727669500452359666570376448590229755339126098108084513655351630004806845329610086536348250655270492083872210115099541350980087869489 + }, + { + "N": 24206147216197161168800749713794253097360175090858672931928135053300720098263302199858364218289609440982336278990382306871237304598903324389321581163067390799950591531027240968685694116269131503639449889176152844762069948482523881916749982047987022468266212702666839762407435492828573898843940379718086699114362935636941751781265771147161683942488081675636897258681038605775448214108367751993197065197897191643383564344845162403884453232776839031251175853763144050201714908798915379664014184087913029794762586324582687266708240565299184055542301695610690632283322864399949456272972805575542427101734659832898527078677 + }, + { + "N": 27422133357851370316963785322815189604726575748114057717984837411771756070272482926958898758576215271907291562151935508777240048370919087691109363558754627052939183040039501310348824807217194423462067796268979252972390229592512803802105741520833681021737552492269574490364955499455488503619050939812934483556240372784852668293634144857453177818024665828049715609921864852313661181061967825839048394234894185931968992541576874445544364635775263264674967563604397356712492758200667296917972566268326712277912968541425534456091226445588857731271210711997226828598037017820056231841183710665446107873358077925757871906777 + }, + { + "N": 21505960474634451313164479453847246698949068816168543450757887402781638444470085463014709362627652554915905319404707097558936051290374460876928738652082570278593089424429424860613076608894979923762290356343173648507348492292368062802168911752824853129719568062188174453668131066706292448200533705323966142811976260936406546600112652090553738417255733994944221554428167638466246670287061019896463881779810197390238307556892485807795138448959345532929528137209046373349550262355661974463926686395148775662060236988349400478971416621513539908477667503550115870803074998306032371456267566517610267867391193312424397935929 + } + ], + "ECDSAPub": { + "Curve": "secp256k1", + "Coords": [ + 76266489189895419469020567248501927603989841769205411177925179985114092514949, + 17959638069442050620236663888410692330316152082152911789514411031446499229348 + ] + } +} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_3.json b/test/_ecdsa_fixtures/keygen_data_3.json index cd8fe554..377f5f7a 100644 --- a/test/_ecdsa_fixtures/keygen_data_3.json +++ b/test/_ecdsa_fixtures/keygen_data_3.json @@ -1 +1,107 @@ -{"PaillierSK":{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349,"LambdaN":13866365722621035815830978828856350205683545145897620685885982716070085990943607919945371867781258122669079383720451062322653113763377917295105120105646460192896535034578096042984479533579063882755825712769568008499872962214030698896510972560995218769445199328416309208857712752294542045047619557401730393599351526895838129021995828306264113931285665639810550996751849336536369220230334644988197182132217392077082888430078638910587745037069537664633968914245639632251817165736099949016578370074940133473856068360289160760758835353903162485416803625719298598240338989797716643027176992878755094238898258658201806127982,"PhiN":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787198703053791676258043991656612528227862571331279621101993503698673072738440460669289976394364264434784154165776860157277821175490074139075329267937828491279264503634331472199898033156740149880266947712136720578321521517670707806324970833607251438597196480677979595433286054353985757510188477796517316403612255964},"NTildei":24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,"H1i":21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,"H2i":22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,"Alpha":18526143758755369654106004944117140756173404582491413553141906338793937130524429529927169152026444966863960884197222097674004658763716535759273611605298510839738335359649171259646561748939901963163965571336517233109522826419453692460046507823385679524530100549577353456703682809978350127899180153885180143821809197146059616865930644937024137034322332233524948244416174785799809449392860246631338364691758740681112478508455990027323505216075815869169341414099572577475668799641080744140493732262714576392617224767131812852417840964212974189205932920542989859289007273281887501506896551155940933379052070595308620177616,"Beta":4731470290802421560212636103952042539433663549200665236082307313214601244574209799275630018152365209115556197950372624999358026995427562538488519042769102607395628687988097069439128970424052948450621007354538223241224392414975894880034831439683172722692711214925905463896801591681069567282484512214752510071804587514420309333473070421553803904079730643871540565603236719312785744337374009915441330459737757330855026189792632353457931492753910769714143223873036315514405040244554597356157884354816211986413844944488365802645987131340954377249627968022763963213210588212237590211244723310568706439857628751183618122215,"P":69803197718612198264157207254293499773421466364819033956674416388981053103828413035941080975905948484473512919447989015121472545666110666930410253727012477148248334857519354362893776057831930558490745820250709195184343181665912214670119883938386822416925928664899583761362499811671582064808163573575599312533,"Q":87859022977498083668476810321491256567921418564280059746410083524518486948291455613021059571374256246821564668912657244037103710010080289353592799140931056809183616803501060129264708679331459239770837629213603567399461719778338594208464467502528060541257502283111358345097270772235294547132430720419737581213,"Xi":10024048826107425726828580752086990883370190085488838266547983045060632911185,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719077,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file +{ + "PaillierSK": { + "N": 27422133357851370316963785322815189604726575748114057717984837411771756070272482926958898758576215271907291562151935508777240048370919087691109363558754627052939183040039501310348824807217194423462067796268979252972390229592512803802105741520833681021737552492269574490364955499455488503619050939812934483556240372784852668293634144857453177818024665828049715609921864852313661181061967825839048394234894185931968992541576874445544364635775263264674967563604397356712492758200667296917972566268326712277912968541425534456091226445588857731271210711997226828598037017820056231841183710665446107873358077925757871906777, + "LambdaN": 13711066678925685158481892661407594802363287874057028858992418705885878035136241463479449379288107635953645781075967754388620024185459543845554681779377313526469591520019750655174412403608597211731033898134489626486195114796256401901052870760416840510868776246134787245182477749727744251809525469906467241777954213500922962598207900244610615470932048383158628700567162631631189503587620334276701648788930166782916153827195929574382625322547232728203845276358810162861271567739888395670907555222537982867559801824374155710793133779866475562224398329799259589595882004342841775151121290158152012860933070519454708809498, + "PhiN": 27422133357851370316963785322815189604726575748114057717984837411771756070272482926958898758576215271907291562151935508777240048370919087691109363558754627052939183040039501310348824807217194423462067796268979252972390229592512803802105741520833681021737552492269574490364955499455488503619050939812934483555908427001845925196415800489221230941864096766317257401134325263262379007175240668553403297577860333565832307654391859148765250645094465456407690552717620325722543135479776791341815110445075965735119603648748311421586267559732951124448796659598519179191764008685683550302242580316304025721866141038909417618996, + "P": 177147297802525579102993050062131223090295228216279191453242872804814556506749685154258555822845767694821633091957303084556832484826430719319109868163685560366598818468952708376164311637165401295038149681028640001543182713340547770949859961750808928993661379228653713884473377336021514701747429842270320596239, + "Q": 154798485204217518115351318169815653070273833516179017334296716246467617379977472131386540834188084671315051795227712212222281505854367088948167142723091470623350804251937797199993144186085345247755215211648583032961776172515358835872554090647898720412611629905718967654467753013120567449744507044578133691543 + }, + "NTildei": 30862742439593241585708940738147962226366718050501165321237842572436669411737554224118298772517486812375362296405238805912443683584456437953738131350045938787466841040220797401584428446174730486886913719857484102733725336155131475996004306581440515141136345274453183481082707684162136893963291137234740111704738897973555849945611157507740799100242851006495725457213328987753002399448999330977114104566617308036743409045315165685308303262653843118404666538923863063081603256452671995759383632696290823794779551389200638930288120410329395673124242908818519519330118489440718827371013019585524024323106350150372893461689, + "H1i": 7379047495513012741768052948709028575585555485999633742902872635999567523931496397934138722681164927896829567152505037328183413349521525062101059035871423959216606865846805649228889409341121623645276995775466833580910793875325853108618331288089921648034916011339650914136927737993536151052450142994995957064434847339676185441357826456108823451579572271337009853306909251138234707237745952438799718674765118984490163866366131359672038740868456547662412411582409607895270049993194846640187000629665900662666631953358892682510778724505052220510687061629914270273761091793976303803161711621832014373503323366016634630406, + "H2i": 23064781826724373162059309790268929175652024853806919970585039362565178134882146726172590403276064143405780341854075186376431326467367967581674319153076910116152907650926195389275015857432169732825486479963071595528043281158690951801576413614814760292960443710324174730418861380180819802157714395735784311928236401433597447641321165573011917942945482934111736905171027083754748263370419119297225245442731766002872688005764140266867116940180286239156118891196076208004108028110204585118322786319227036687507415330523815192275901354672284703528348057050369197376684323825935099945673108591425248965307506340817771591441, + "Alpha": 4648622922365995691950852472307693991496748717650755886041472758966649772223577185560503709377403263490257440740160039880829025875460382743719657106043215046874887472104366457266719570185588106832548763709423754442528268880550658756292061197437488907821505351342887275050423812794709440946117410292944992197499521419994551410803216027766619098594614692274903134932000727788522050861446364496906190349211518548008043980245101419488037879799945724570352667459813306016191262247735401344569214934207946586389966378909900863650262061552284378821161631397536341267121590001946593992670005380822124185382452984619192964296, + "Beta": 7283035794852630027597719507311988400352157227741064867320944375271311410043321457567543258900687773840402210832336699099355652336427138303463630478259640028368969060077262761882674943258400609728464897259824878619654205445207266962415152720307340810440440488319215406143967306140587488336460685951455315996674081010575049283159077953679770530039740316932302759499007229971328506788005448873223090633785198376902652454598099861304289786086831409011204427476269302086833451326645185421061429645318495124264857467498648034188324619279322211616547377743903673008882675216867616790252156678523580698939063094811432804106, + "P": 88946853524429644157279692699940537205256244584836191357676563352646399437711907359597600783173787788473495644611336583533678480415103123545022822524172251070286490589683779917058542223015781748214551278028480200408190616872417308222241413563336739390358317830977287500459962096931426244013093349893192168943, + "Q": 86744896577810517384645824130564891628128716346237962081502021347048770344272448219940628925379372197310560098081816109684647116457382634604974690735098205059906140134063148657379351812283596597272202732430603458302975974954397686666228707698307455286780720136391242400469746586788331488821897115156771081523, + "Xi": 40862812087778895933409199889429465759884835742974119277932406627299270252737, + "ShareID": 59857031556462284717113645237935722663924232558699039874171440941840562677326, + "Ks": [ + 59857031556462284717113645237935722663924232558699039874171440941840562677323, + 59857031556462284717113645237935722663924232558699039874171440941840562677324, + 59857031556462284717113645237935722663924232558699039874171440941840562677325, + 59857031556462284717113645237935722663924232558699039874171440941840562677326, + 59857031556462284717113645237935722663924232558699039874171440941840562677327 + ], + "NTildej": [ + 25107490776052945575790163886980744121852075793230702092031092910315419013111724585107741342302647097816029689069156500419649067226989207335403141846585589456214707140363806918024254341805807847344462552372749802373561411623464018306841140152736878126807643286464707464144491205717529334857128642937311664356950670200785184493082292988908234459722618881044613550904554507333793627844968327344517418351075665978629614435510466378211576459017353838583039397930178040557511540818370302033808216608330168909665648805527673068950251148153088673193641290377199021831923470431364077200419352774733381328839199321622201645277, + 25347321253130040165669198464747637594561084543160875890419030859255281770152898118930416834987900972848102624649324216864737441361174703716495863609322476087408028387965233238285802668149470294745292681572931725456001393301305606431470624857854001369500295623909754190673037775702216922020351830224578270444039819022050738946522292544390839130641700344286132805509002888252787493089063466842186838763536749516490621525613122365080892293964923531037888659136998882617232588657938236946761539565880695421135081565601958037809654399412376843665230604400657963765839300124472222517361299084266084873325229770349534163801, + 21292308023632581181198289513256444712308177801737936647775817904740223548406904422170044682275257431431315028868812996459652895591102638516259762883465973519952131280804384814232387700680465986308431924126707276653911414520068641511680988816011871501850341616042836704357314055609697319128691732749390230733118584785117859207288385865822542643892497962395263780902218346962474333143560514409678469862250207440675303576178809488957082804485944446225032956319749038833642485681946267959990181650810435723731755627693490958402541015772649403218387116342415453965710612578891122860080475980560084488514089712934013739781, + 30862742439593241585708940738147962226366718050501165321237842572436669411737554224118298772517486812375362296405238805912443683584456437953738131350045938787466841040220797401584428446174730486886913719857484102733725336155131475996004306581440515141136345274453183481082707684162136893963291137234740111704738897973555849945611157507740799100242851006495725457213328987753002399448999330977114104566617308036743409045315165685308303262653843118404666538923863063081603256452671995759383632696290823794779551389200638930288120410329395673124242908818519519330118489440718827371013019585524024323106350150372893461689, + 22979378405138893589556133897521754683725883868866200124855036635451629318130978502381364148180090802113404290988890710862982965215323041776178270890557477521858892737028622171038670089616608354902721183960978083779850093600290031995183687729693685221986115197995396115379213021683786733329612441286209467155931087319154615773299643384467163395079212511182788668809520330816917834693871112365384301753056859879036141250397887546537837356226101620007886380291232478721279115321079877121757818532329118011682430897866452653899829996834157870634757693124417404439069108796004756126487268680259509658734527559041787231993 + ], + "H1j": [ + 947268510305326446073634507724913447936734171636912400557401318775427643035322780043344044871778218536295489345747992085537349997385753459769909944243608187249295932620582767525243046024431872134558350124222211815956076009495579000118546531817489783543950708796804986346442485595844139040615169351977594594085460608932273701244091036215057114383266995365365226626217411088112095883376367775475107954293975266374705057036496941779873360807750450088301028537780564210964889218799820623451941121168857520561736570209171665676631521362739174866629364755585577716299287494251706261472512421959632149833106509542229972234, + 3880611998802971481733631912608098494196262778323132826239497201888814778206565779038508295122457059564658474446013387570155222804192995563846151508944721213706421845709980882611956739258515443677158361364276786837940404625680574358803765552923094221476122072037719326145018613827892918963555625064867923347247217043400958580189757825375746004023039968242295816205605839011845166061436412284630990719600784460170159747697580968014664501419463157750169639809058771175198577548493272625218114926414363501638734650889306046401503137104184980837461670247903219705017626260602184962369771097797399062562513353217770565531, + 10831225843690707396172531846155417775408096606230693395561759792282094678514600816663347869748948927505461627250570771469119140533266318664691242702922064589002187370016461932692821183944924214028723777910582605988927471997349297521445102656640882914313554019001846714781268540993241638422699989309757114468372538565383360692272346876551928106077801669528247179220120217249637229522616724754257258083101113512544707361337883525289735840725085893321825199206160881032044949147621462286088226618153585859120352649591156109044603116965314576319186213041333237791389005373191075396808136402252420638572954706343475908070, + 7379047495513012741768052948709028575585555485999633742902872635999567523931496397934138722681164927896829567152505037328183413349521525062101059035871423959216606865846805649228889409341121623645276995775466833580910793875325853108618331288089921648034916011339650914136927737993536151052450142994995957064434847339676185441357826456108823451579572271337009853306909251138234707237745952438799718674765118984490163866366131359672038740868456547662412411582409607895270049993194846640187000629665900662666631953358892682510778724505052220510687061629914270273761091793976303803161711621832014373503323366016634630406, + 11181628178709225486839172762330742659423724114653226835819397085381257304105257566937592702765853135360490266257083192830870077666275960663723976086310235934350572650480643691450656438652769853018111519504498965737440967647717818784480763727200258889702626069322469743838822112397983393755250519010298110374742466783922925487057158527359106287066137656141433380846258646250390469229071336860949790965072334352962521185854509550842351266605524163986806331802767702307634084162000820507840777885400805512071448246749124225768822589052733208381949931869152348048701648349767479285228581634453249080578720203097097514457 + ], + "H2j": [ + 369382535766024782757053511943484023707590301248858510505619543451105355366349475321600848828578055383112252081262740450957242693258711711573898608872557215737850380375149487180022863563616178163440683814662347260503803753150609907077552201623376131096249150783552367189222999632342102603491398593162398739317344334427947844029843540621897547082716967267285286086227255034044222917612280937408214149645699005643727644027239999997789724357422423935120674874708262799420509411969660535187315093553065000790565517535769427338692918882249946664488170641583406635227373502217028982923125561321182147198392699754510926843, + 15969079226966183502382475788401338523488393107499291032002044296474627394217596503568693748659928310923714663501210832583018731196547300812154979725769686288361401778491755680431944887852103221593745623856378860738388368922715577130878948380171217565406616753411777571011139446871620361320986832525400727639941640937364793530207582464684574638726091525574744197708378588020682070096454926012197394347212926657909811288708691651092564968341401161265195710381753419063864921935963903871011102644256286369641306466313805437318014970058871604639507243703932226939038829663830985880788590281053591951619664726739953671018, + 4991965837400033768069871541004261063135140339060316531025599789490182217840042887067892359235887756385798984623237629620830856274859128458536333773291056510054624668039972342087961925191332459597054733496082441434562377800869508105363637144128472861641912914050632826421706717769073047295100882343425757237060029497292934794235607113222710491355298594636899811931946648047811854321545995037508110462735244536402582555614331492107887985617810756386029525697146027973237905139754077084275404126435090136074550061845235250362605148173730041087342012184590101575852114035899339078096801167678750962125251280492197772961, + 23064781826724373162059309790268929175652024853806919970585039362565178134882146726172590403276064143405780341854075186376431326467367967581674319153076910116152907650926195389275015857432169732825486479963071595528043281158690951801576413614814760292960443710324174730418861380180819802157714395735784311928236401433597447641321165573011917942945482934111736905171027083754748263370419119297225245442731766002872688005764140266867116940180286239156118891196076208004108028110204585118322786319227036687507415330523815192275901354672284703528348057050369197376684323825935099945673108591425248965307506340817771591441, + 11624783050789373146135145081851167787144912685550655481254753886486876945039110175782945406523699017594888407389014880101840909734903251718897005090801524812985842948051908677768943122267838594824514706829210878634123695856103833890298708489700110861686115821849284312876390414092087922712380944749991516509300532655840012200292315982914838173353675847647411050340787544373391445319951232858137394531780600427092367231102522845204917484802409447548360146964783744378214393625590646132406343132441415352603518333034984771651345199420810327304168670235976704426708270671344968176457707557409261114405916868900751036145 + ], + "BigXj": [ + { + "Curve": "secp256k1", + "Coords": [ + 95225479287625109140551300097635441933915975782583911515343531112654602880814, + 113745830257261593369068705146261698861441809650110061237310141136031506190085 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 19909020077923456087962021369246692987785610885502332606764981730113023110067, + 60076350170225224442893367050676875983156697199114782416705437692213004111433 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15656029217860558075932288367874977299995954233140419375302609508233656030817, + 88293512119423239639079954683198441748713533855873639211876694257553830935691 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15825259379483050804368543653451724857970141958098760943464945060863314262898, + 46510254063758718632499733093297318465018983961512441577134679077369278627011 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 101163968142129288084264305494084191253074413300747651525777392366080313581620, + 19458713537429380315587854195885123660811710862685360770347430223563133437479 + ] + } + ], + "PaillierPKs": [ + { + "N": 26862170591381186117144639121800907711621441110694985906073099493104224258631997616337459884349048315436649598594766212786190249139720542986841637789367089751895746802368064104115662988051298443105665522549043623368088781757399812306242052676963161647378421463432813771675598887217547787422261194939872523185392600641669797286300834348740665304662829760721139573070204170902129262797162145018079946053388917283347495995703735479819366865064178966988962612678607190805087224162314010583832802161588455461100682306289046720947974174001828045869589748392310605782826097558345479795972515955139600004112610785604729710757 + }, + { + "N": 28569426937909813160816852590974326182398707183206563780157489308279811863376093908221211903705518704565348072663191903836343635499091979154072341420741676813730020871016039693403607409462919125031372066954550208350129974140220983698064393340951930706962427015297577648437601064168848334164842111410896962654571826800302294766234904003147622246551178854009373086133349568572584906962173774282191211244583738166117722131851467394725949126097483624199330170392292115956857647929895014719727669500452359666570376448590229755339126098108084513655351630004806845329610086536348250655270492083872210115099541350980087869489 + }, + { + "N": 24206147216197161168800749713794253097360175090858672931928135053300720098263302199858364218289609440982336278990382306871237304598903324389321581163067390799950591531027240968685694116269131503639449889176152844762069948482523881916749982047987022468266212702666839762407435492828573898843940379718086699114362935636941751781265771147161683942488081675636897258681038605775448214108367751993197065197897191643383564344845162403884453232776839031251175853763144050201714908798915379664014184087913029794762586324582687266708240565299184055542301695610690632283322864399949456272972805575542427101734659832898527078677 + }, + { + "N": 27422133357851370316963785322815189604726575748114057717984837411771756070272482926958898758576215271907291562151935508777240048370919087691109363558754627052939183040039501310348824807217194423462067796268979252972390229592512803802105741520833681021737552492269574490364955499455488503619050939812934483556240372784852668293634144857453177818024665828049715609921864852313661181061967825839048394234894185931968992541576874445544364635775263264674967563604397356712492758200667296917972566268326712277912968541425534456091226445588857731271210711997226828598037017820056231841183710665446107873358077925757871906777 + }, + { + "N": 21505960474634451313164479453847246698949068816168543450757887402781638444470085463014709362627652554915905319404707097558936051290374460876928738652082570278593089424429424860613076608894979923762290356343173648507348492292368062802168911752824853129719568062188174453668131066706292448200533705323966142811976260936406546600112652090553738417255733994944221554428167638466246670287061019896463881779810197390238307556892485807795138448959345532929528137209046373349550262355661974463926686395148775662060236988349400478971416621513539908477667503550115870803074998306032371456267566517610267867391193312424397935929 + } + ], + "ECDSAPub": { + "Curve": "secp256k1", + "Coords": [ + 76266489189895419469020567248501927603989841769205411177925179985114092514949, + 17959638069442050620236663888410692330316152082152911789514411031446499229348 + ] + } +} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_4.json b/test/_ecdsa_fixtures/keygen_data_4.json index 7623f2d7..aad49b67 100644 --- a/test/_ecdsa_fixtures/keygen_data_4.json +++ b/test/_ecdsa_fixtures/keygen_data_4.json @@ -1 +1,107 @@ -{"PaillierSK":{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881,"LambdaN":12270039061247131416559958965045936069869564969808803343061142274578893432639146483043969154727400082540547237449528762376286003115421979998920760768137118307755793875019916007489666269962269957903930111483554615149369385185935531879917148097029953515630162298676856721142235565280402973061247647403711729041660487333510920011122937138574954295806136375271986473451560751967173002498099332960160067642190786329302505034220530875414114500474464171877940919124625268867456393511212477810352115245672146396225371617642682949920776731955871257621476098833431787059363859298141429611805737309058585348332633893848627404146,"PhiN":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083320974667021840022245874277149908591612272750543972946903121503934346004996198665920320135284381572658605010068441061750828229000948928343755881838249250537734912787022424955620704230491344292792450743235285365899841553463911742515242952197666863574118727718596282859223611474618117170696665267787697254808292},"NTildei":25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,"H1i":9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,"H2i":5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,"Alpha":15553917961117102863676622551531289560084855047762272692775058375794858968435477244856972351727662993252233062887528702551625303595398297915454269909060216596711434630410422703967984787734216929321981570200061039937219279219996085921172218075303113989100809835448861759784494103341646597219980059277088391535338059233422474404758159670761258918472688870006689407334381420384686973366192496011702197932868892149768986292338141008346690447928487891667816269500457764222628941582894506747852728349890861925472678740764191912186515923847698106645094987931545558782795260631685707402904859949599042490295689971318053317524,"Beta":5300215401554114126340713245275511359803164738740883876962092164270783541870618854228616375513259971026220524758932637224535502726935203219593011063182934603663701536326003525641975622857624282645053399202732486652945295240746713707370134418750723684787473736704601627019331638153983397659862743745648199641046822283412470659884198102682459256467817751927203251042156003005266586077814974215056393213523271943996096523916603095060555782674372732166050709693780281920209441673083190499518917688048052108246904932524198763890040317740003492219035177668512651427529359848132736026690115507904938694301964837222102369669,"P":73926498690420544290875271400974501376764572835851916821314578294294117604000701207663263162107805421202145827238195413581847153072916010510148836497401433703056221673812106903182907893192399819036893037671576982478969807531180479833969262517208480805782533985411491434275158605087736249755012432398736902011,"Q":86186778737779334729328800923059591415471914838683569103398456405672125576738213950455470818136676348403842917237681735366578304411836934388255254290574135205246114731740521708583708001774452381738499221355721660610396997890135162543659592435359058426149085265061322506154734127269406330027862640769141752309,"Xi":111068086741162624685360206449663768121170745601702933105998113749732981474103,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719078,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file +{ + "PaillierSK": { + "N": 21505960474634451313164479453847246698949068816168543450757887402781638444470085463014709362627652554915905319404707097558936051290374460876928738652082570278593089424429424860613076608894979923762290356343173648507348492292368062802168911752824853129719568062188174453668131066706292448200533705323966142811976260936406546600112652090553738417255733994944221554428167638466246670287061019896463881779810197390238307556892485807795138448959345532929528137209046373349550262355661974463926686395148775662060236988349400478971416621513539908477667503550115870803074998306032371456267566517610267867391193312424397935929, + "LambdaN": 10752980237317225656582239726923623349474534408084271725378943701390819222235042731507354681313826277457952659702353548779468025645187230438464369326041285139296544712214712430306538304447489961881145178171586824253674246146184031401084455876412426564859784031094087226834065533353146224100266852661983071405841009806066377556363073246749711470669165019696231902877884780913836332354683627070599850615352747373967268175605638682997172469714109771448131783193870242315301315250229103155846998372468463602427490952881430803570477256250706776089292559939188573801844886050618595015608293574001360336821185472476925563642, + "PhiN": 21505960474634451313164479453847246698949068816168543450757887402781638444470085463014709362627652554915905319404707097558936051290374460876928738652082570278593089424429424860613076608894979923762290356343173648507348492292368062802168911752824853129719568062188174453668131066706292448200533705323966142811682019612132755112726146493499422941338330039392463805755769561827672664709367254141199701230705494747934536351211277365994344939428219542896263566387740484630602630500458206311693996744936927204854981905762861607140954512501413552178585119878377147603689772101237190031216587148002720673642370944953851127284, + "P": 135350838307960257887337158821773449178953711379177117359015513540391289755315134832276760618216543327963109761712067613269505433440747687880030354506739527233631716724697521173335989032180031336807107200570956811703022411478868437314661062648778515879021174080716096058754325767045869446778292179625314996503, + "Q": 158890485965831229499168438232542026738450244172580631313382563098182715822378630922987419930888159314340661443969140828531288076090378302153234216314566361485315915130506246978896700618031817120398147882015582060127439697533257918984421321022960207320364052124079085366296653602561677746970530187845231812143 + }, + "NTildei": 22979378405138893589556133897521754683725883868866200124855036635451629318130978502381364148180090802113404290988890710862982965215323041776178270890557477521858892737028622171038670089616608354902721183960978083779850093600290031995183687729693685221986115197995396115379213021683786733329612441286209467155931087319154615773299643384467163395079212511182788668809520330816917834693871112365384301753056859879036141250397887546537837356226101620007886380291232478721279115321079877121757818532329118011682430897866452653899829996834157870634757693124417404439069108796004756126487268680259509658734527559041787231993, + "H1i": 11181628178709225486839172762330742659423724114653226835819397085381257304105257566937592702765853135360490266257083192830870077666275960663723976086310235934350572650480643691450656438652769853018111519504498965737440967647717818784480763727200258889702626069322469743838822112397983393755250519010298110374742466783922925487057158527359106287066137656141433380846258646250390469229071336860949790965072334352962521185854509550842351266605524163986806331802767702307634084162000820507840777885400805512071448246749124225768822589052733208381949931869152348048701648349767479285228581634453249080578720203097097514457, + "H2i": 11624783050789373146135145081851167787144912685550655481254753886486876945039110175782945406523699017594888407389014880101840909734903251718897005090801524812985842948051908677768943122267838594824514706829210878634123695856103833890298708489700110861686115821849284312876390414092087922712380944749991516509300532655840012200292315982914838173353675847647411050340787544373391445319951232858137394531780600427092367231102522845204917484802409447548360146964783744378214393625590646132406343132441415352603518333034984771651345199420810327304168670235976704426708270671344968176457707557409261114405916868900751036145, + "Alpha": 16240540962261166004211970670812971351480203151037237582769828801814689525653208090910663340159713344814790831486977215754908287497313853309804006226093506601752934119941709910453812455423784202324364228489440854102131033285288331999985864329846570322740304539785450985749381916050412115349790862491262399788251446971690344814332203163069600100340564179945886153017458386787068823782780403673848142124799383400779585915079517483545276218709468874820194872973213460799414555908836840291102289352318644049681699355227143818533468279900814783675013067347821048414318605018045347020498434873018402652391925998151906681941, + "Beta": 1723486697459218047345604944772577398595639174446372449733469017724037824646478073064036284409738447924923034349448915684865600027347429475331153769234544742762414746360506319339234569983871611652069442411059465102055257649507600765942646810180088097484550429298851479894694459800203980598253964419400048854156356200276777683732373765075415376989469613023233067835757787743964029401819512542611693471394988936548362080624781089282229422881682692850815018172571782677656491615083411197752197777949430384797246039266880644209517450862071108122536325302378370382044491103427488921489419539584033950495975894166924830598, + "P": 69497403900123055294512695371047987091100944784074526174548213609978119582884267995733221177643872461269822394244331609122728065030878548482603080986500743257678469453891586349369737631257188634428830962126742079718576995795162060648624476811816692784132596469903818449790670542178059258561916780466601681803, + "Q": 82662722330474726002641887846339461045747814112775706988763403904216639639472599582628541320325221413967353610050290850627993655720017622068669883265061738024090693419531380792968916424065879550143820413896195191562138594863014885149637306127518260357308690216048155754633897361170932639172413877671942265399, + "Xi": 55538075200338111200259293729261221540075119582900623624784541200756428158033, + "ShareID": 59857031556462284717113645237935722663924232558699039874171440941840562677327, + "Ks": [ + 59857031556462284717113645237935722663924232558699039874171440941840562677323, + 59857031556462284717113645237935722663924232558699039874171440941840562677324, + 59857031556462284717113645237935722663924232558699039874171440941840562677325, + 59857031556462284717113645237935722663924232558699039874171440941840562677326, + 59857031556462284717113645237935722663924232558699039874171440941840562677327 + ], + "NTildej": [ + 25107490776052945575790163886980744121852075793230702092031092910315419013111724585107741342302647097816029689069156500419649067226989207335403141846585589456214707140363806918024254341805807847344462552372749802373561411623464018306841140152736878126807643286464707464144491205717529334857128642937311664356950670200785184493082292988908234459722618881044613550904554507333793627844968327344517418351075665978629614435510466378211576459017353838583039397930178040557511540818370302033808216608330168909665648805527673068950251148153088673193641290377199021831923470431364077200419352774733381328839199321622201645277, + 25347321253130040165669198464747637594561084543160875890419030859255281770152898118930416834987900972848102624649324216864737441361174703716495863609322476087408028387965233238285802668149470294745292681572931725456001393301305606431470624857854001369500295623909754190673037775702216922020351830224578270444039819022050738946522292544390839130641700344286132805509002888252787493089063466842186838763536749516490621525613122365080892293964923531037888659136998882617232588657938236946761539565880695421135081565601958037809654399412376843665230604400657963765839300124472222517361299084266084873325229770349534163801, + 21292308023632581181198289513256444712308177801737936647775817904740223548406904422170044682275257431431315028868812996459652895591102638516259762883465973519952131280804384814232387700680465986308431924126707276653911414520068641511680988816011871501850341616042836704357314055609697319128691732749390230733118584785117859207288385865822542643892497962395263780902218346962474333143560514409678469862250207440675303576178809488957082804485944446225032956319749038833642485681946267959990181650810435723731755627693490958402541015772649403218387116342415453965710612578891122860080475980560084488514089712934013739781, + 30862742439593241585708940738147962226366718050501165321237842572436669411737554224118298772517486812375362296405238805912443683584456437953738131350045938787466841040220797401584428446174730486886913719857484102733725336155131475996004306581440515141136345274453183481082707684162136893963291137234740111704738897973555849945611157507740799100242851006495725457213328987753002399448999330977114104566617308036743409045315165685308303262653843118404666538923863063081603256452671995759383632696290823794779551389200638930288120410329395673124242908818519519330118489440718827371013019585524024323106350150372893461689, + 22979378405138893589556133897521754683725883868866200124855036635451629318130978502381364148180090802113404290988890710862982965215323041776178270890557477521858892737028622171038670089616608354902721183960978083779850093600290031995183687729693685221986115197995396115379213021683786733329612441286209467155931087319154615773299643384467163395079212511182788668809520330816917834693871112365384301753056859879036141250397887546537837356226101620007886380291232478721279115321079877121757818532329118011682430897866452653899829996834157870634757693124417404439069108796004756126487268680259509658734527559041787231993 + ], + "H1j": [ + 947268510305326446073634507724913447936734171636912400557401318775427643035322780043344044871778218536295489345747992085537349997385753459769909944243608187249295932620582767525243046024431872134558350124222211815956076009495579000118546531817489783543950708796804986346442485595844139040615169351977594594085460608932273701244091036215057114383266995365365226626217411088112095883376367775475107954293975266374705057036496941779873360807750450088301028537780564210964889218799820623451941121168857520561736570209171665676631521362739174866629364755585577716299287494251706261472512421959632149833106509542229972234, + 3880611998802971481733631912608098494196262778323132826239497201888814778206565779038508295122457059564658474446013387570155222804192995563846151508944721213706421845709980882611956739258515443677158361364276786837940404625680574358803765552923094221476122072037719326145018613827892918963555625064867923347247217043400958580189757825375746004023039968242295816205605839011845166061436412284630990719600784460170159747697580968014664501419463157750169639809058771175198577548493272625218114926414363501638734650889306046401503137104184980837461670247903219705017626260602184962369771097797399062562513353217770565531, + 10831225843690707396172531846155417775408096606230693395561759792282094678514600816663347869748948927505461627250570771469119140533266318664691242702922064589002187370016461932692821183944924214028723777910582605988927471997349297521445102656640882914313554019001846714781268540993241638422699989309757114468372538565383360692272346876551928106077801669528247179220120217249637229522616724754257258083101113512544707361337883525289735840725085893321825199206160881032044949147621462286088226618153585859120352649591156109044603116965314576319186213041333237791389005373191075396808136402252420638572954706343475908070, + 7379047495513012741768052948709028575585555485999633742902872635999567523931496397934138722681164927896829567152505037328183413349521525062101059035871423959216606865846805649228889409341121623645276995775466833580910793875325853108618331288089921648034916011339650914136927737993536151052450142994995957064434847339676185441357826456108823451579572271337009853306909251138234707237745952438799718674765118984490163866366131359672038740868456547662412411582409607895270049993194846640187000629665900662666631953358892682510778724505052220510687061629914270273761091793976303803161711621832014373503323366016634630406, + 11181628178709225486839172762330742659423724114653226835819397085381257304105257566937592702765853135360490266257083192830870077666275960663723976086310235934350572650480643691450656438652769853018111519504498965737440967647717818784480763727200258889702626069322469743838822112397983393755250519010298110374742466783922925487057158527359106287066137656141433380846258646250390469229071336860949790965072334352962521185854509550842351266605524163986806331802767702307634084162000820507840777885400805512071448246749124225768822589052733208381949931869152348048701648349767479285228581634453249080578720203097097514457 + ], + "H2j": [ + 369382535766024782757053511943484023707590301248858510505619543451105355366349475321600848828578055383112252081262740450957242693258711711573898608872557215737850380375149487180022863563616178163440683814662347260503803753150609907077552201623376131096249150783552367189222999632342102603491398593162398739317344334427947844029843540621897547082716967267285286086227255034044222917612280937408214149645699005643727644027239999997789724357422423935120674874708262799420509411969660535187315093553065000790565517535769427338692918882249946664488170641583406635227373502217028982923125561321182147198392699754510926843, + 15969079226966183502382475788401338523488393107499291032002044296474627394217596503568693748659928310923714663501210832583018731196547300812154979725769686288361401778491755680431944887852103221593745623856378860738388368922715577130878948380171217565406616753411777571011139446871620361320986832525400727639941640937364793530207582464684574638726091525574744197708378588020682070096454926012197394347212926657909811288708691651092564968341401161265195710381753419063864921935963903871011102644256286369641306466313805437318014970058871604639507243703932226939038829663830985880788590281053591951619664726739953671018, + 4991965837400033768069871541004261063135140339060316531025599789490182217840042887067892359235887756385798984623237629620830856274859128458536333773291056510054624668039972342087961925191332459597054733496082441434562377800869508105363637144128472861641912914050632826421706717769073047295100882343425757237060029497292934794235607113222710491355298594636899811931946648047811854321545995037508110462735244536402582555614331492107887985617810756386029525697146027973237905139754077084275404126435090136074550061845235250362605148173730041087342012184590101575852114035899339078096801167678750962125251280492197772961, + 23064781826724373162059309790268929175652024853806919970585039362565178134882146726172590403276064143405780341854075186376431326467367967581674319153076910116152907650926195389275015857432169732825486479963071595528043281158690951801576413614814760292960443710324174730418861380180819802157714395735784311928236401433597447641321165573011917942945482934111736905171027083754748263370419119297225245442731766002872688005764140266867116940180286239156118891196076208004108028110204585118322786319227036687507415330523815192275901354672284703528348057050369197376684323825935099945673108591425248965307506340817771591441, + 11624783050789373146135145081851167787144912685550655481254753886486876945039110175782945406523699017594888407389014880101840909734903251718897005090801524812985842948051908677768943122267838594824514706829210878634123695856103833890298708489700110861686115821849284312876390414092087922712380944749991516509300532655840012200292315982914838173353675847647411050340787544373391445319951232858137394531780600427092367231102522845204917484802409447548360146964783744378214393625590646132406343132441415352603518333034984771651345199420810327304168670235976704426708270671344968176457707557409261114405916868900751036145 + ], + "BigXj": [ + { + "Curve": "secp256k1", + "Coords": [ + 95225479287625109140551300097635441933915975782583911515343531112654602880814, + 113745830257261593369068705146261698861441809650110061237310141136031506190085 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 19909020077923456087962021369246692987785610885502332606764981730113023110067, + 60076350170225224442893367050676875983156697199114782416705437692213004111433 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15656029217860558075932288367874977299995954233140419375302609508233656030817, + 88293512119423239639079954683198441748713533855873639211876694257553830935691 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 15825259379483050804368543653451724857970141958098760943464945060863314262898, + 46510254063758718632499733093297318465018983961512441577134679077369278627011 + ] + }, + { + "Curve": "secp256k1", + "Coords": [ + 101163968142129288084264305494084191253074413300747651525777392366080313581620, + 19458713537429380315587854195885123660811710862685360770347430223563133437479 + ] + } + ], + "PaillierPKs": [ + { + "N": 26862170591381186117144639121800907711621441110694985906073099493104224258631997616337459884349048315436649598594766212786190249139720542986841637789367089751895746802368064104115662988051298443105665522549043623368088781757399812306242052676963161647378421463432813771675598887217547787422261194939872523185392600641669797286300834348740665304662829760721139573070204170902129262797162145018079946053388917283347495995703735479819366865064178966988962612678607190805087224162314010583832802161588455461100682306289046720947974174001828045869589748392310605782826097558345479795972515955139600004112610785604729710757 + }, + { + "N": 28569426937909813160816852590974326182398707183206563780157489308279811863376093908221211903705518704565348072663191903836343635499091979154072341420741676813730020871016039693403607409462919125031372066954550208350129974140220983698064393340951930706962427015297577648437601064168848334164842111410896962654571826800302294766234904003147622246551178854009373086133349568572584906962173774282191211244583738166117722131851467394725949126097483624199330170392292115956857647929895014719727669500452359666570376448590229755339126098108084513655351630004806845329610086536348250655270492083872210115099541350980087869489 + }, + { + "N": 24206147216197161168800749713794253097360175090858672931928135053300720098263302199858364218289609440982336278990382306871237304598903324389321581163067390799950591531027240968685694116269131503639449889176152844762069948482523881916749982047987022468266212702666839762407435492828573898843940379718086699114362935636941751781265771147161683942488081675636897258681038605775448214108367751993197065197897191643383564344845162403884453232776839031251175853763144050201714908798915379664014184087913029794762586324582687266708240565299184055542301695610690632283322864399949456272972805575542427101734659832898527078677 + }, + { + "N": 27422133357851370316963785322815189604726575748114057717984837411771756070272482926958898758576215271907291562151935508777240048370919087691109363558754627052939183040039501310348824807217194423462067796268979252972390229592512803802105741520833681021737552492269574490364955499455488503619050939812934483556240372784852668293634144857453177818024665828049715609921864852313661181061967825839048394234894185931968992541576874445544364635775263264674967563604397356712492758200667296917972566268326712277912968541425534456091226445588857731271210711997226828598037017820056231841183710665446107873358077925757871906777 + }, + { + "N": 21505960474634451313164479453847246698949068816168543450757887402781638444470085463014709362627652554915905319404707097558936051290374460876928738652082570278593089424429424860613076608894979923762290356343173648507348492292368062802168911752824853129719568062188174453668131066706292448200533705323966142811976260936406546600112652090553738417255733994944221554428167638466246670287061019896463881779810197390238307556892485807795138448959345532929528137209046373349550262355661974463926686395148775662060236988349400478971416621513539908477667503550115870803074998306032371456267566517610267867391193312424397935929 + } + ], + "ECDSAPub": { + "Curve": "secp256k1", + "Coords": [ + 76266489189895419469020567248501927603989841769205411177925179985114092514949, + 17959638069442050620236663888410692330316152082152911789514411031446499229348 + ] + } +} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_5.json b/test/_ecdsa_fixtures/keygen_data_5.json deleted file mode 100644 index f3ecdc4f..00000000 --- a/test/_ecdsa_fixtures/keygen_data_5.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209,"LambdaN":11534203936948093660305204329018496380161560118538140769569900571764828246515045634195477463808059866152605288239811339762373940123040128851469549564497359763947219861414263058680824118456911513757272431023356199125867033263848838118674362232579446799780236600175765112122520798170110481841714940670276604204697151869382735570552820579835395283964102199032476503538765073172015650060629749226002955153120263250843933907764124879552530874840806371473709116497502303777591340217043096272459474944971840602950076359133854200513187196627663793233167258557701869825818767213561097870555894995154444443750540962718804648658,"PhiN":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409394303738765471141105641159670790567928204398064953007077530146344031300121259498452005910306240526501687867815528249759105061749681612742947418232995004607555182680434086192544918949889943681205900152718267708401026374393255327586466334517115403739651637534427122195741111789990308888887501081925437609297316},"NTildei":28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,"H1i":15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,"H2i":18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,"Alpha":25321451791082117370957642753428856679273874534391129334456552657790295241220745840844990937621926874374144142399115218701302877482344401197350151339193346802206012492734158852969546457794797815690901365737231691320716749796151363753204970683351425087113164759724166095438777488668770250410465329038843160638758751846043614971775437777068585779120226210564509530015508789096887302190791107994499351486000271426865537623359808912420068591261832767559990362012725669800619015068064232762908635067579903001785352859085438200459881379147015423245296739225790159862254500604675356985341607527988333646735369486778480858294,"Beta":1642279507758358695089756481689280580915033367783537896906092609807945832852189624568989080919415996296657949168369180170283170245713779437220742571258640858305258924679229197112236815087650130340758166251099280241141778755935610934735728543356902025357596436753245435712172104262255198347484438409785742744065160142806354086508758060542086736287956492314964404783960906562040039932769473768538792465878047761264243285788679405803521366137550309658962175150851787881798787404552541627187632851886050035718923798071947975663226157686199422073880068626836847425339284771390650031255115869768185498406964663286594453409,"P":80696636441110830688876604524502555339853149384871961757691474198762516488968559695300470111304915486607883882287644840179160328307474799700466382661197581343723044679184082580216854795238647915485871868952000276665798387321618278023898796399414000331917384866705080129861769976043917976091785630715867856763,"Q":89617118003122781963037583900598375324740864877539287365699704690540831880022519250798601638503816117401159854902729086535851853617756616603418711642684447394635907764133031184583735921967540926415486614318384825918631335057800382805526328354726200892860000097786702550711083538276656746009204636307268407639,"Xi":108556728850186019944014252751384901580084993386694428765647602630064702483126,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719079,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_6.json b/test/_ecdsa_fixtures/keygen_data_6.json deleted file mode 100644 index a86d668c..00000000 --- a/test/_ecdsa_fixtures/keygen_data_6.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537,"LambdaN":11680362442838099261761089660575097237133760013354258628882222331512559519819232328579362312251331779480351234994035338207830399212958138286145308718601418875429369446070059181963345260478093901048724610692641806101880103975300097833997488200246811784965045499510798056276578838742780649534995607603761383936593190818157982452076529742691118033799484007424558221472823057019845576524338529326547140758041331375784960911858045829892681057131776224775263048933735211845835188420860399804620296626962593900330492026087917324199650747884714573980661612198850328772513448352383690816471940619112747453199426196130352875258,"PhiN":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873186381636315964904153059485382236067598968014849116442945646114039691153048677058653094281516082662751569921823716091659785362114263552449550526097867470423691670376841720799609240593253925187800660984052175834648399301495769429147961323224397700657545026896704767381632943881238225494906398852392260705750516},"NTildei":23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,"H1i":12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,"H2i":1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,"Alpha":7446220909797273290857150847333764536679598070225924716910774299756208317947998879432542801905463849757911597767722495612156003593978336290179062849873029966472284981435931304013850941144395359311489975566464439085768729975092900767515753496103115717088967253387575315478981967678199167191948564011048159897032493110367397028621798306461472892757405835493359586405884130444881332776034465561429634462805629246766393198911334536417835805309780163982324869262816782545201261844871093610011507559900703810864342820765917368208956912152445847323706809990721868811205414041849831882112558026072012989084512689129465921411,"Beta":5346263327591718094088423449782021926787014175503689358308103800510758452128714312941624263580805297208738369474537064901031379866968997881824698656752612151059925677854451700764116674916628837175914050639286686545859877454230005575838929910300364930554855780041771784030325524185728953427361972558858648736080021261444724470252816953059537976643601153774828465746097209982613848224233140222746739440734520686767700866477822624635416589720777086875309397880063760092799247901346867640460150571760510924874016990922721385057795661265598182707005477895661092688530710287578537652002753598851257705749306156981234932718,"P":75311135858552947916191137633615424729334407230991272646269649846253228979784769804293944292509615590520550723117687722048649457741502890852449867332806062605168599709950666207396557953101675204451990866231913411620595409954257775188613666469726296017142248561251831500694230683147618791860203482937012290561,"Q":78126293761789954753594370895486775664316889137447723729988571263098955742550025066495248629116793418349030676288588005904108738841336508868139794180176711441039146447660644066140867425740329089811214518780980923643397502550444365364815765303689528201070645857701801005156537864534227573518685152201520557311,"Xi":70749897752759946297594631123139412350685110426681961365043902108247798533170,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719080,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_7.json b/test/_ecdsa_fixtures/keygen_data_7.json deleted file mode 100644 index d958f9c8..00000000 --- a/test/_ecdsa_fixtures/keygen_data_7.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657,"LambdaN":12786238019074991921912379313871886646078771007834577772949369568216179613833792617809573206704406352637867562738614440862443557090329406114844739892541525541534714073035494365259337680640248938107900624679368182938003766307383173916881358312764690822764383751188079807372331849015147642060294506246379701491738143924473027740122249019043589630043396897878768824422067831857346441504927813877267780058237012953782829365205269828188416196427570620770341117847591638769623160642714517842460276874995138740189058422420613555196453469443907496157642226375611585351188282484097791699303549487636524244740519380040363272938,"PhiN":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983476287848946055480244498038087179260086793795757537648844135663714692883009855627754535560116474025907565658730410539656376832392855141241540682235695183277539246321285429035684920553749990277480378116844841227110392906938887814992315284452751223170702376564968195583398607098975273048489481038760080726545876},"NTildei":25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,"H1i":22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,"H2i":19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,"Alpha":19990755244023618635359232671314515302506079693185096651731569410973204874491827193856467717709419338172125286866696898627307522111042558109380148255898612903034654076713654186041453991604749559116203811769248672222165745208404899171692998844805734183173596540808564246825998236327814446843152451361513008383423371646765783505227931768158584378973679402282127223963434329164056129060406253233013156426181516654008495828203244179996906507910485672451928812246949419064281693541934053426107021924212860837108349659008449893699610033896736249708018638428568565627063149829549396362917442151208518848297126628839593040445,"Beta":3511535883172441184987926846321269810532810542368257939265286065824562708782941730720365326738878333102314401656473602575798301203654068014249094319075236083348324166791683577480859365553322390565875654903883931225455936020716829033812894086539685899573062839651057185199280182143760904335730479451871484812691303904049557078767317552508152119366348733398290067084953743785960049718457691475878053081612442454253047012031859225699130444972899303218263568363597220780521466879941809518181288336843036945476848983838619816125800706213034593140656093842894511672431898197326485005888673413720998370193083093916830940453,"P":88500673141758600301101053564792151983941891395335883013448958580541566116451410232232212135214603160279116820486177593815958316010526475303942994969289896668210083030943595771124098917651546791981517891133698656648477328939990365313345133565022211747343306215599034934549459961566228427201910921660228883063,"Q":73306740293646112965252355560544677852933474563387983272747043021021013323293011584916048433480330104808732540738619911216677249013082043705569103187060823181814149658181446121326050877106684589000215415738707343392293682933173632051890982334038049707320943355797575532900492439350146183937621658767991960641,"Xi":2911165431543908290076240550563675429370484787424635775683044819436537722410,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719081,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_8.json b/test/_ecdsa_fixtures/keygen_data_8.json deleted file mode 100644 index 7a0ae4f1..00000000 --- a/test/_ecdsa_fixtures/keygen_data_8.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541,"LambdaN":11339745749838463282624529375634850957185082688162942745353089297118217793687226196836459933628945086073249616296081781739374822411774202103553604591879761525301798524770602228514473737499392565109822091101504044438772152999885939568981119652129185578615587236745898745557138991542405861882040041425877138496002923285573044134019257678380216629083610786555525642023686985067617167071631984666055727033937216003595524182134935922658674724596271159211427080317371979225430101192248732426131380961739735025604596604769061814219664559039810896021971225581431521596329081368850828952382805684407903258178735113010263626726,"PhiN":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992005846571146088268038515356760433258167221573111051284047373970135234334143263969332111454067874432007191048364269871845317349449192542318422854160634743958450860202384497464852262761923479470051209193209538123628439329118079621792043942451162863043192658162737701657904765611368815806516357470226020527253452},"NTildei":18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,"H1i":2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,"H2i":16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,"Alpha":700288022223251613957148754416847927713859956440949799042517070837395494977874763069678215606343857517978071047211800299615857408404521804040142178463411841676954406290632508416581821716752066978183292738056599988555316232392914124044505869215229024062582757658640317765338779668426077387169029692496049188658705496409837088735779080791945342008953315430165918567440162054403325897948950356690074037053525589329913737022229233862669049173334548878398737300298559494748940199431093764755404891947609040300345749138369777405176216842207649457668546254960882835824822351331398780110578384417463978439538210639100746913,"Beta":783329482850997623099772578182907149966545249837661819541503930773254250094291320313109140596434376167405012599707684581496032438592402563794155693551061613565335785944865357881259172456389617222676989409797857560266207821822873987513532339869586280767013527917374123772513950578289353228173675550010268424612514772461565456864728127361311789547881860386300048077575741810518071655034741107924089064700766805381411225433903419094693995680437826069415557205263562730272115025589887419181062414986240741107620797594089841150840131462862886795874560544399010664153676322458374635718075236495916651306514940504036065278,"P":68640913873492537606010844650423790995456997952325643501462871867447978353159672600481720803886728424366525568151339756638871841019614115933567125451993971197491204637554422366149546161902718104978806315511201974286960292451000602532012907963646898647849115963432234100455557429301666956759717263611823270361,"Q":68061878698854114890649965831646189067484987421843828643167844827917030467519007958578395513720534420811865873913294464047994413945575272600949688561468036841769089430425613243913085447550089847106771116749747999890379133168390146077630186323144780282816348863924522029190759428486390153997594974250009921773,"Xi":52562288542671895401551182194176758753438280033195126762279991176573522042313,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719082,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_ecdsa_fixtures/keygen_data_9.json b/test/_ecdsa_fixtures/keygen_data_9.json deleted file mode 100644 index a8de286f..00000000 --- a/test/_ecdsa_fixtures/keygen_data_9.json +++ /dev/null @@ -1 +0,0 @@ -{"PaillierSK":{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497,"LambdaN":11778475593628356866019652986619468815810192540395402124514629639736463322624078086224343058662870777190768515536371103743683306496059929634842914103659757833051436055773309803568976487330042490255842476297439671293256098762704899675212123596446006081884892295771273313161792489102096949780536078883928167244014398007880035418924512439802919522545971162429488284495511123589735898176411967314615560951167680498762245290107103247665264239021538896936535776503008936989564197311594676749958794652286693837906328405347303453168324582933421354119370153620792868127399582238307388290845826084982273715238320371789512667658,"PhiN":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488028796015760070837849024879605839045091942324858976568991022247179471796352823934629231121902335360997524490580214206495330528478043077793873071553006017873979128394623189353499917589304573387675812656810694606906336649165866842708238740307241585736254799164476614776581691652169964547430476640743579025335316},"NTildei":23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,"H1i":21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,"H2i":6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,"Alpha":13574006706417957056077957500546002859237886772123475083552490240183213265102942914561427555788089019740187557758523104148034093111134195572774988376545664259084085493579018375214368878394201292639124248663231036094266354045993253702454761322127283368164561322962291121915673320665176164698579733568427228712449528118218042801194849040004092094340041689965299238305003310389116160166322192742218480522811124319226732581978381043085494425787904868158646107577314620360468133910219026945266559424739018925800183669743020510686872787161359673680078424856879330316946038977975156187758657754916647195952759119489080078084,"Beta":3368572885227830120577337369914133457954673170789924014299810953126882375252061941063409538429477737161503355044422594289166726553421108273444628835207076905388998481525199177460052135355807150845974368964396209956052339025117603882433811910204008553689431193960900045497939995049985843980240798455794760461540605060885176073044704876095455728570054989601677144272877477653942017661058880946527227797707703466851280934789334578626166056255605882682371213075797882607195980076645623963544077163777455726367735193799471012661175632079566079639704823191783190997105393776729447873825100310388513305477070743221351214500,"P":68535364942704240790896977388939863675374525979478818946218933509914983623778924130863062343561916329516036364051478791409031018462450613142104561714563338834772052464988198675987982381110405046539869083073036988987955489628700300428925031060067314661013879749182869023790642000950206163631534989100861038081,"Q":84522362496095820454029546944829542873119792124696293174698175104500348308511179350900115192847900137100128758809379248607332881150168139052170628266136189327661812445796352134730686565157540839761099643758192538218750630548317611238227003594490892837688233398841113625299439247332438192261642865661897448091,"Xi":97305501735984994614163987963736012825588521267518905518720331423068815692775,"ShareID":99910913777216787121500121711080713911605201308487494263101624819470958719083,"Ks":[99910913777216787121500121711080713911605201308487494263101624819470958719074,99910913777216787121500121711080713911605201308487494263101624819470958719075,99910913777216787121500121711080713911605201308487494263101624819470958719076,99910913777216787121500121711080713911605201308487494263101624819470958719077,99910913777216787121500121711080713911605201308487494263101624819470958719078,99910913777216787121500121711080713911605201308487494263101624819470958719079,99910913777216787121500121711080713911605201308487494263101624819470958719080,99910913777216787121500121711080713911605201308487494263101624819470958719081,99910913777216787121500121711080713911605201308487494263101624819470958719082,99910913777216787121500121711080713911605201308487494263101624819470958719083,99910913777216787121500121711080713911605201308487494263101624819470958719084,99910913777216787121500121711080713911605201308487494263101624819470958719085,99910913777216787121500121711080713911605201308487494263101624819470958719086,99910913777216787121500121711080713911605201308487494263101624819470958719087,99910913777216787121500121711080713911605201308487494263101624819470958719088,99910913777216787121500121711080713911605201308487494263101624819470958719089,99910913777216787121500121711080713911605201308487494263101624819470958719090,99910913777216787121500121711080713911605201308487494263101624819470958719091,99910913777216787121500121711080713911605201308487494263101624819470958719092,99910913777216787121500121711080713911605201308487494263101624819470958719093],"NTildej":[20539613942852364097890357541124859329931817468396278432713468646303963073659662742703665137736867247354367523800071318544570641421320510992705137876681425752810096966415479528824625129989063402576946505816887222102561441464103605308386975248012283762854115939987945603503283072741824666735245204091384515192454349252950007899626081034649919068642018312817079235168086885705851677572363277983076857313399016624874649811334825694862350059490166759704819411086564625186038339099281295128259092469609539775245598320922394808913338827772001777479207381548603315272620456484970681705115865233047669675602308688791376160589,19461028678249357721701139019984545699598216253588699892259672060166427273458875608319855785678884811755179389274380053495578644060470229307987007292965327985966772681212738091909180148035785695413643708212165777295662698493311553457174395686873169155288384255670661532430410131045712913078128214239252258473814281283319061613409102410606683119900924722782015902970301519339718368508022893331969649513655635811522767629123667744907556474126774472529158147258343482417188228144974952598132795041139358631852141986745214674779692377899411672630850213748161088638857089501019216868292821676374914063004957409393293909513,23815206664659393600414832732918591362081086959256855451108811883313935088830793690110550688160373127903180149093000695761674277348327575728255258492470452704258920461298225437641154249481888087192237143947805411796310656512191138629555279666557122333244803756577286887501632314162770617970064401783626962319950524158923845138939649762251756759762119774585338772559055859463599094869423262313306255644927649977403492926253217608523813644206820059309357940964633363130901166057002430269910921882664166860038861390305316020579398429144038386189480114288127704265879389663380565983482028227028306457603727009698486364281,24531363009049563762536664273685630249930678743601473345646756718446749360580428942513295608401046098557387011967587876621178423418085640157221932880387840241062539585907115950101921176093340357598786734576629107604766098059509560466283874031181440387973563913507733219768477775440248994272649062713092103053254889978195382189063452107439308150731662099755008823588080977928436274879799764825887538020606485093127463680041134931480024720440536560752357773730443722294290727915022250638670491342013254556128005158924861347226548459626859027825687870031912255326425000561908947972742109607669897905187712585858898757609,25485947141960036800495601740358196336268148055632283852581334267632567089581351729697672659186150817483946028874699734841543360085445274610946793774678284845142698994270979141586640525566502581978495871744643885460820923876472270768798335817566781711314773489485670479771252073613546268231833675772584402239718946768734191504723089294480532048176604551680713541748910822012363078082926628834536634899606309021451196325472880525430322895659546741570135136047631868000597393506058143850364801619503318165686086392731222189995494225633540472226098357551602534472541794408218767265775850366289511546336446350346021282237,28927199961592509462716713052933904239681693743133323458100757563361525410670677174848159248824087482997906403441479071298957717300803186875289912194352025314864665854179681659546207985006650252942140268140510157106320849846175665072784539119695315757729095462689260495430463870222739869312073694346079553731438032339737072477343055235278557275309616493517920166164080693605271556685355062728635594753076381152709174590915306592547837200121302421882042327338955791916538647734045471143845013412592155994390976714634271247514800401724247381959070976404354024140134277339724455784411154537706347451440209596089260579033,23535119694477523772171748044630208131923028017288499693412795663706886468394056769073862998142660508474676105711590469240299300182072142961838102383606369450702330959729879893242049940029310408964084662077585876233411878169942718467081776763994846585950049650660912827541883992039288017630464390592382481783566823924532043610685633953209522603678841504652207254189077646669746333277037092923165111872444873598439940966325805716105630151638779643981500665152639984434504817034412086671254173379166038071662889121653550757613052820175939040916661555723756176613161036717523938816196299007092417098079561970714605061629,25950783447263038071689830748627856944354421735888733670277679971199180982562433131778324823115329151828330351648021612294094370722267669972986008148650808031918722892417970047773133521052009921040352676366121022268583455702531977371124075420219730460605780729481918672698487964603151661149289116143779941433746038933525309985350586367303720987487112290090195247099032317451409521767630753382551078895196505751734814139673689437231496521554705226938471456297964527299627857211400740652357956604961830754401147898467475649318148547949522809325493238323065337997986089837089904293908389128632840557033917922339991780941,18687318215344566555182740902454336428592486945614858718824661784376438207943593936740995084200358460316665071770681463630810552799361606949595415859491617650913620153502889285378972038135570359724693463761135116433672709408902151793979112715679738392883186006369274528906256519536716049908878346476950103274343269649895419042195937774381514132210454482820166758270346958078142742840173830940449171621914508101385104081796180941351697633772994457709351610367195330318869580666697900958479010130985251846923421963647318437209519428820003347978947799013079168765159404172743072632243706939700207639779907975142224264481,23171083837957860801722218699383337900446240030786871268841926233540016534306722256418697981846104677203759841627977766724259030420015851980511088229043403050763668171722648141766116654882525867416891436685059276174192868946692072206824573955678962077288068058032958478942750338128252470165933443869447212456023356245726416751721989152798706366691818486325734110680894776063318626260722657549472271184224308146689662638536101291469177898475337027531732897213355102104990685266062044811809193138366772764276162181116512200063463469172637189164324496242489479899844513951546392297220122152709400797483802836017803985829,31343857270714098359641269819793471247744609345771779520849062499842222751853736635128030263011267623933026775894009843057499037409921342064326054830123558338476304900840753732976691522721379417037190976719048367738172877422341695489954487825668390415147795382659776979019893183466662138357984500601883268994989224933833342232607751640920642550766835871191739404896219865225614116435580799461951708239551693029017567595268404121330207564314786956323833427106966279493560190075571199071036639702485305576334075428484139050116713328535867597124971991546934922511844853709001583656359284723717084806850145785405536911177,21157487427733991932564510362138492162446873104287756897983482468142107066461483198236006898398559574298806811271053872211924774119515269456039458266616445024300383802406544466004007569246261860103312006457776588799344222340569710165666518367783547810282003032927364478322210948885423703591814633243286070072754280297773344097615910071723846039979528910869815670975142743376293197136856592859188733532786144697373533341877747464753616005694543102759948736736802569257325101204596297349394258616025918915521692968786299735438817719576226325356937526633071323693338940757362235570825853130085312301448111119042363796113,20871071186633559430638470998115518791893553646420368867902204568431630269565952322291766136370093127894084798814242475456617969102595313205728405129168253735048454253508700456761223106599134617920774227174015124829476988377890165462875183814841087993485125686632410376362585538078467534668954228084080919739417042353928509644795709201564083148094079836306167650314513450129297783489119015593642581024870311297891618816623633162063381775243950740681581620150958717466968747843706102214690157071025611480716612116918336154774385432247274600064909320680551901771492165221773721500541614228617829117370166464409020423677,27392140202372139560911530190722295626016991167776777076251374167016701252229100335980281077736021393527993281083564981442696373714433732500818431355034758384480955155409564373832745499649881975977124862697809360957420580753883129965594447943274206109113518479198329538838000642865155652137973709624008263285324174285285129803357738290385065522262059795474318914719823768887144641758090777562619592046692917101170170722723905514971631800061092086777420826999668590868568525034863406950714560799453233548147404988580929389926995856613912328981176466707497680180241272497358147647189027922268738449537259460751070153621,27430458285560064975603737623690566617914765114564307656159371148918349993794669623672608540855772729568670170546349850367039352526804750358257162362490778729908291097260480430890476823722553654389178498566668573496227008913481934125881578164602723285712928871252207939941804689355173665470036039114037118963971589320342018774107583274314158608546842149328506685304690959566263296291871998398637364399822435359987280203416832697098234360106966146607816540746285266790106830402077656904149244001383199485864465648143588026246539864484902228828598281873311925831114015086450712030764672165915248196209070047454495085169,20958576649034914977467969756965874238364659071947031154211972997487243461262394795340258789930977809611131615831278870909123144191655991893039673506539165135637011485008482874021240555941833074286915507794874804218274011487390148860550531668300157069443584231888571925159473970195937554740938933226402208131160317818926784959057391389980505131685522579677264162724011263439981256344785140426649255485125637348357522582511064347878764724812085894898146080695383734063354384186594813474135513405234523117338489484424618032520881618202129068318264606277435174234229102947510033247339629069254901430086639327996737230861,25673210614761004254141737312053451635018146154378993341101985326929566270344015265597835170941666913606119762699769929117810862190840467973932188558749547474174367822508601158829928161219529997833862214002106486508027112865708012732033692783629855485545330232068552007350877531730729790772847199443436084419382562932662568511421420283558235026303217907581598166628555941188586096538364407553738314729036218493332920854764055946289816665260688813327844579390598566768671973314358968068459214729157676432241630688442073088681756498136814491310636028421098965714509622937097403466307515165856202257786336739101389349089,27062431131775909264962122516003720577621307700606752850978674545503762322327045712593154396229756047740198870458644425173406714147601486563284216353367017457813364860861671576291918230182938220436949095109018225648486931358793025228571750572403143070647269508389021099989559676856968002395615757641794675119572488971947338527037552287756390904188517823120698354616567162661395526975254448758091053074808436661809101512025437321837959528689272191238705432334775200965152419124620293521962173467865862080429867958898040527206234108561471429991355210673373595922083144022410446012714221026174220695995286555692560595981,26101397013404440939950108603288565551073409553356897393691328641679505760230621741096317929709636865532238670826796537369580597665138924272200816037026280780915781305836081579178356868109017075793286763556497902869947712856535743263321959264839901002581734771178344662509473227839268090064000382806059250315977679226653239225555007655990623485545590336008766750972486014525144801720879444739045959169483687885427725508164188831961197284042818573448808100923870021600896976125650269597381009562192855793477760166114366163011349461311146903814241124631772470784181050979028948750586113514587005436500903242591757553293,22437602225740742482465534898349205983133213895660550238212001804732032977697798637757435728694311659299624886491819969612531644822478331097020027346346025174540910579800256280214031292073085792970245723432769912206355626120327772649905875827091190500315669126429992547075064736037570537735332469814000462556933603719315364923773085086614780916637137068518726889173784282955430621992569759561719528189938429235007732504425905045067985337249988673084527372002559031400047880307427208848753891291386460253720313523072063965808016289774609282102972264056704286287440985034888143293816594327214769326166521224390393446693],"H1j":[16370062914568124684409954423220013634799944354368183091925443712820668316759795091290952642141219645055533606292548565759917746455430426634828957426644826424037530474618159463204943752577732484149675671820306363344833458247384057865310742915406677379586789735200748327711872632191061145184949312294612467345847214916930759229195852858849386686352293049987465485866498220082468131280135383612600619493426252446949294373638968518891137429993551161437309269629260378927918725566711632082553316166822070110359114229533322390061282040482480263995079579444943917107997110057038662405191417861817663789094790962966996587522,5792666313208572350705907594949414590804636531753541567087068453778543363077542142305947911768781865374122070750607847515026168979710170113788718287465368491981654823945993941924700096393523941715256095048825025361038086570514643251828085846380954791657627403414038681940866434304045104130214177360598208974353162505514170835103706979081795485247158115653501838694614859268884296606546104394637012764653804556264770973741677326601115655746125293204398034469241183574629519235451142797709676366285591723984602961129858687877266469708766607187000988412118886394000517917001485137799190522482532376333362935442751367745,14510201356793997359892744405553071944121896518459738320470368478827891282273167297002903311912769777071155241288755372185351193850631471716718530488323104261827697027757019895835360274243188719367049075501436153398857359555924247334095665350350441220453460409146684994664351725204034521761578947269005519140498383255606322844603919000682223940913285551513356600061526959181206093504072618536296265435830192715190515397064435874311583709516596584871136822289753837472532490128304199643440789002058080030111113389709287097531544417461853059085059819958060220257218705882557929843952675556987949500595639655528439052202,21994027187251658420706956116678134303619268245311594874227984400819404446053485122189884678892175444688722527594580466254690437593853064923544979570444911946308283663229116693350631331935027065689358169246815279257122823014594309629197723508317910829246255814111959552337648906237682616732913305786178221005434606679461852547394872592127050442856550471832240167936976142756988960345619830477159914332536955389792251800932867389016006568741180137556936582683389834385412181167798283357296952856933963222988284608097870458140102834156304710781157917296313315513842893014212063887070100364867105131178923785373561146050,9913834538682656788610829579771569556624609911472542281771864528920206652057360227595914694025069327892774241543292898072673087864732558768588752951687639831868499912733997907550450742144719953844448973554109420086839278177283587750852958353526057789017170152122423018814264172807655239353760715885145548388992476483731471865364270428702324445078126354834888878640191523880163270112743069852403951565444480363239177556818094412397417215136415082364220806171351930690164376890892251369372868624028034980680685551131786332553623705883769998271596791035214982761974622986462384695349153129828098712177799482890430520965,15464554656029222110560140639422624868539470020281691165975400448606613120973644407534365935510334228227263162749065335291017684520353168923100727746351715681760916446206803485743114757577242723665933043744987644589191843035807511863595701170012104449542518101585729174897996392297770818633483533801844500665798250501473521227123975005972911918718226524366806206633841675388137041998857549215313632375036761617534744890091542919972307048750757690677067439820416806817051344016166652866968067639055986253789416713411110543055264622333767216550525033482750914452894139691102713436731472281130988207399023815239852528906,12865788614422531768878171769038267076266208200249164027644212721909963715015912538682157638127903293282023380796412378159235431043017021949518573892381565899437599164703723050587964116914107635838030249942901605297513982608974593500166572552953195544515492725593747884602852061628830280449190167844572097543184555448060083835007200101317266753106995526429573085540857281097156159258319440414895242242967023265742835942344738184941128584859242462621792495405423196954908356769683815889035326257091875874458718611430785903143039161526479973858541524126951528796262613552089943663340076548393182371918642954593889432834,22194516202811321146792934079465991238594712937226367504517257988113211333368349800836879103947252405610400726941861867633710543721876626238467090611506859331575128297406631557631820626534381998686705168632059305910804423292984195597625141279765512951234238593649775486094326905655122386938572411401132183960062730500896105597665702000968846572795357957098192758080717128908256523579293163137417423771381528097786100281383788052729825837521137512379280310081930804124457815661946839040621474089357381345723789618079958299474682840114875558952249988571746058484000722421698440994062460208554903525444210802321182968014,2022329329707369117437055740094404969047484980501833952214571687130852032499620508208708908589247080600189902502365407836277381678968110704345539053376355432754797822267575827372488857681103447936055038802753292113151984972961755143427625893918328299356797405969999266508287378495280713821635381697950988327467894890827305051792226857027384943282520470216088404776455333696749084292781033264737672933515625823807581567568754027253581653106384383593181057349330506068884659072076739226363616897242406137010778123983315619151551375977509919335513557274798510437948502408760645678633359245877721858614575061700591393721,21638702445456858422878500352234793329413106731788942261751796025224145517964611169394617788434763506002565806620170893339110273126875286455095506459298086020278318872581385674653253080383128797980439557511752718258375238388481802546638936192461482797150514683008473213407715728694302414916863995043974867827876036585791719812271742103323384468954527534596036617313432433874380308883492321501736879178345427074046787174556058119038049586737477628511165980047288251497278209275581664775606335268904384984155864116270266473616061700061527150495070719210903471680082400487754898061609554671248760480063619759950744280907,20932768206097680299943959313782719928339866139959731166252002876096405653871733170637914957728294590217455322823662941811142831487382716004980657707514358763150029924714520812685697751484102120909926147024006189544048800446501267477163792293393919588659127430522309503845365000611784195390022621092266420671288509706282186373855655358090019051530324622779193478505342408854462043136412488215465955955421082850282626458587043647758494935495915329050933653468179762936320308005669155322055934931071589853638981754901315764484414249149121368560265856082417024956730272011998498550756243974623835494966366962683389714964,1365816667585940330490355905311774458514715320376130020996515573937571923987574784307504874484515899610747050162880466334946062918938639620242137371098595406424267003818882220942016240927776918797542668204898851284066695289242978919397682088055368818116198595348273129318762376760634794532531433638073562846988038755248023571028829475051882101071203979111269507596248527906600986677728810751499828436067766182628039345309355341295172437424660504415028913205507139100147921515616240146193076677157859750716375066201587358526136840334151066553547201088947345861316322897488659331106732575557394540428972305438213375814,5703448175361065536885380258834894924349694750000788978424055908887487214267289314410654116737467233333514153490994654420800717947051017245903088635547080581089891657444714373263301759995815635072257679749046151543038146531810310826817366207696928190231298874979984114964348460891792295427444943206125809938612729939665048974349693961742238426880015130297226114935093282566300228257419316454068258492582819117310017835605391570376283517758701794125467889060184214275911038527696714000045849219024045243597506828846590195831908281658454892131533791810760325400211405258812142759529523572815227489710851557846638137542,6412242406353564485058502679404605624009190790593030266854505291800626778702270387175472290319448965303250433574173375628339895100997329474893279692868549940279796264731093585208695625011062617868491258157215447275957107991387222489580499373804335870682739788296835432969262878909434810429803264643527538555130662379672012787064972208117475596665593916782896686056579449802576468324812730306559649834202797329883549294599723290402017221639617907711497472325019619452322282704828796586508386419927496666562295856731151167316262475184222145101211618002798513055006067228431048839763646095282531119806559583105533794495,12506213831497706601305625665856619892819919408470741644330076368184175310515183251146177621238406207206410185643656979107225155831507800032694528257147716038515158570256044209419514879851010106278924359714862316802415670557334433034976750101928783991744583819411313589306343712690219032368416678985323530251239318661396466801994308940886752046080901718450406046375904389766893043894196541576969928137946704159382893563356338387889137855413730990126192021766856444171515497507122402917749807424621383187173538906785892654668489198127757882153223185090960714890345630801099413698632285321494907662894187137142803150791,4340320683992731212484211057800765907410470847269768304639037529290512671362801376775768288042129836088810539204858832843247178308000345604701431226310915807542068901686097542648829915466491213307097734259829414895234796525272600474326857346693882386640793824277606043756669695477090601330450743232413209505539149906338741119182508496705355703793044044384724643256986023764031438551900073624644692938223394706241422593949897781383635695299729171084301185179708550600098470031089086344919627503113655735768701217637285566867914251954499504690075652022468818725559007318841314414541437592229352428286215595483845053638,11992304082547451264970842283976418853821301172975086658682116387543359417074268643442593212371361490968819128789238354995117145993279593426471336648259583293294202599078859260437992548184464009386152763827946804967424362206055435693041324410893236957405711025923054702040161696386453571055246924713260145964584750230359074777621444549946362450468684233332414284037283955916761049858000878784786268023500095161975906495439332741618288811384519280375489794382891880648564800750663555801045203854227681083222146920912455217541211811955477767635787030014152643158711960638325867606918508708678622347924499914937535267162,14695333877946105505101457937623624377562698430478247685331048607650568913937201633971254630714736577175024535322415669442798271475956496536083972430246897654017678266490639701809689918981250971730052435032797344400248226649579239038593902835536123498617918666329121083751772876090103853533035181736615043011673643017303605152279678650202512062770466963460251942403425462061196179491356440328364636048438335959347603428717042954470887883300891927932651483741068303515425618933688194621659816079976510221005329843899476003615861655015952079393164902282608831513778303062716347528913475870793908798463564832083549613643,6361624891550612817090909815430156259585522002511378700573226127309539860650523892977168943678195716824260472829831132024282728135758912178943090813161584286046605117495775878170654691942858452263763077967647297167266507685944611403131069163214134338169098006751105941940463654618427873599267528041887836331948305951890335742121311832653316741398094161561749334956600724220433324620401615490879450816097431926849306846384679126203940987154375373597650036103822699248044107851648286585837187416880739896147553285981829664828869063480707437325000260106329487862878699057790666160151383639198420965781777521408308842299,14948927140088320458060089936345715166494298631495857212773926944790409869483957673185876995292328343640197788589621807184518806705821872810447516194927678801617268846361533345460325613772855110322242304569109406957894646727384216069315325052819333705539766154972989576988248927288284161530384846682668538198851543196833452065614949748530253693700328342501577900059842225778082026779632761099626760985225309957646536118173500439351182747667021029407125807666947346322131872894915154624415940708414296769044070685030466034270063053482191494419465005898644603408406165778424189251953592599788015054586521957253320449350],"H2j":[9653640790649475435050720061635061544335995170813227062007808546473167610366804040613054457009646767723479128021709179513573358845884462519136809844401815066012655857973373223748942767836422506840658738556503260986697250346171921063441485400421533124068250604530993514803166454504801884882297625678932746326066096923436475087338628767636689481829832307623108408425959669915171224014581673426602770656342925462023157550194457295116217893440581116140543598050947318929500123378985275492765280831578803707538206440354119287576298034238031692982504012470196898579719660373199491817717767711160029710911173725338539566802,3578111860663702772408903345930659472256129868015762875031051677614699117364424442270785915866444756532836287879751640816575659073006676007210405202315496945346450727441553016187592354415793891110773645408147683476571812485850037389853330648238106038729525075512542830213816094853869971661719959033499816133612736102442725651388405183329714325258711655979055386253406319598230253658818466953001815116530962213661362799968355793928849708876651937113231862631691372187008559216884922263381652908899796744393080985272287681952842592674663712445064149288160957033524932550150413325097150870149209345404214256294282382085,2562656890570835296352376205216590519360952576353253013086344012422175466058176642832419040937235521572328705583208834436813588375562745525224328564354560731400723267162764903064018742843839822445601315505274421672289602485557719646504320106522113645676636456687468751723898215955665240524139836668877382766583475339565598073690853848639545227831264115164596396262772422415214665834769274554577301336288865874066248890243346947740610544045667761548206600923673948174739356732295677551749947395385332556227074205668024351973201205328576603362256016900712683688241615565934460363012498930253514800348031700419220337084,22298685304249156715841839507145325522077048988910268345524279200863227356693376151033928569980263444962701165900514081299580440300365488019578288962534096517468902687907593109404000193096117803450936780948162440311950526862133749440555125530434273281017640257175046682563772712146188162909037424635371282116160809281350332585723737917537784267577381007869736550494661878733387948458251550312048040279754696568539248453484809390032249968377837207868808482658171733689439009562188880777607125039187467565549644537971596666666932158369857160883674108786200103009448463903055431989786220430290067137368612432640074310237,5879475324785385886080118453628099122983640585548725925692818787221734315336181255707999432375105366554548265736590343628955580077952532008988837072008731794155978542038914506112861039350525606157951017828660604272526605818549217659336563240062224484914310161520768881507503977620229908361541865095980430141394883457555144123820008061398004875781145432780438239985999952863196781468403423593755390719871396312035325131303835880979744451815683310530516197085535308856850866798018523735074120787646575912319226234213646284739550604897450763442470406797690674949855848424274918433854009972115369882751833585035329242761,18385446607341413929216752317617998458160849115285197433981133872531647462267817752048089105851349541660795002685652456000086108157981979426453705134803682299691630928200421847304354380350114763235863451959398215394354125874494984531309790405988904217354164073819568789120760731377280912128364362051769093741704293517942028826498663326655241508795914202031051398724638536523567800437872676476082333745719105291491676453403521845621182329449421075607837301738332926110019535833222421409565228043580701032497151738816862657210572819375918881851411438625526045192015060739626198734346744421593858157488507552447503219157,1543023308301318791291636723263661645234407352972693347930324541592073282303070472660827743672362126204249434834670307886593868303926045601951702434485524524299146190187978789568968092026789881246345813079894138764374868096047892517784410005345559357208978859029831295378789933334638460830863012154730679683049737545160281582305039520027158141403805442275432519516975114987511502563484403828987844187725357101956491714139410763551382100998178318863295224089354110436171289236674317711473441156004575613857935802947903186710273135122934512388821226072049093290647716152026391828419205457729234939199662889356527012444,19612969155814925927900736991694631498815639143900750081709470615537990112217002271570654324774711607889679093067885009086620212727925361021546388555967618760690930383917718167829905900473725102007606380323545403188303409627969907029774876076466652636827981089598601596821629485556381455948439528301393466043329774616323471054547330305463639720319551756652789237846520745512886328152641158526571443916940675394167134193466655448590323552123565655514390433855054114283235652222186673800138041449545987929749641868001910765212175435331820335256408276886037716378072029444719891008048297796893611911457701948988529229282,16728597479991680407332164223276251930971882378040601546182090035388885277790620642130984559023085396113670088325023048100279567479347085329073035696608554975777409036805727779421519384442869313567486101701856985975948368091166211269762554257345698853374624187196304439193724792774291722910128170261256918581442838390388813651239625403911503915460141004046718650178671549506593787333200145941149923809156438433492770338609398675185696331933468246886804722117355530728325631706711888199439210221397335620762682713255422110226515677047306270190770133307509623731091673964502293431264279055367772707113499782043802219072,6959317283624626561280838810011851848606573383456333866356771642710009365943896928686358713606049305764133589953562485262421030190625379899341516940088176438653144375343629199857524649360799157617467464667207079997090732685762910728717721600193091207478294785009859545546272657408615665578978698966309579302786158306046780048259033960048367018506262121833776982527433736628482989970739839626561164331780819203300647377931749431379962789021848504353274218995997754499900534324222498419599756583548358913120017762065234354717544865856293340540081744252368993926137398125931373959455585431506453093937785431907339954440,11707820384786665143909181917722140695066077204138675859555940823963085499198625584153264077484611920625749300043796981737297557284495008476240804003977980903028035986014301427047695461308987163082644181568819427026377861293089760745032220979974314071873695748444473344481739404234865330820136242966321355292830007655295383627072182012764804101331409332152687101319613845603099019594628684448783718018158413013589965095889558760502141979036830513073469713570347578185733951700672935586145889495063730457422516713768592535269075934288536062686021973569079600458124449475763651523966025703378628943004868525425132768470,12680113365919882057574106113475868522128522384382601197321116786250024227710942753687346378669117549887826210207932325610070970266526443555090342822407043741408930676918514338947859254583933603158241276952467805479024344654828575004834480980171788527657050724406198542408746742354531228386476751247072501617975174749412587537766151828306153888252035411082379552917399551115964687725743020641384211728557413837203373250893065347048255589312756928959773947595990023044227966600250595372063312552514516053386563033360883348059069724261103859193470298590631028566611086928803669676829225666250863192855787196720603673760,9019657743968669607069997647539968262488442864840563257526073127843215521457164945521996034009113740811008633126128201485876365964359243077677187550395794512954090076458031575481109943534530172796807658845833964496790520042423061347000207701119849250007073432625973802817311058171823571086584900654526615124913824393095137876668486739795620319593113487319306758076868523633806281732675535191877729151172494277333403640038019691517232275137009983348569240826245496914996509643617684093222096189728055561573909735610063401084000594789204303691795045753669664876756897469727730211469836756344045393712182476806348262481,509727692658127329234819348282810282823358222955712460979035976368760532139665502509369544837059902335508770138210475703837249689840377266421270410968940058538125244069674567645496962345390684467242600183265156396927471901904730403435725549974213712745153254130090979413745442250230122176329142735628394058559735078808655502950813887104168441824680204081093532561399756958380811786995754253778833219233414597390819387529718886819478101169481249247654168746478268826094117295037052091370216680279456693786586815595643437522530315484348520350527079378100131478937805285900851443697897872168020710497135465069780807687,3842294189873253197555038084451026657880884971357471477404186912118522652991181539287485996470843289095459960588932515934990566949413638625169611068786524327230092661471599333492933504858312443510340452825109814219748343465626968500133039743956522352452046474898271016421645025612565409422475581907506677274527441400119913285024497410632467771786023570373229380492185234340140113773065511943229164821322784643171443642045254567266530741214826934397811463635644370547054062567012016231228876473774669826378368361454200858389911185989849447377758286974943747417740672897265471383352127822433439855380640722238771424561,12605457156020973444763168611522695283402376793806466187139735133742095649198553225011255516233464381926302993187553632508703365300132776800901755737316341235931477791227746456204649162573568121476427289406145613748980339685673661511024577823438911510307584137593479079190723698666793670318162798116104492476114229973922338166221669934104784402698512349426984473431614385866651807327515058966935011035923319124790759086336194395000632944700277782112868323483780168144642250558671981757792078139349701070563555668082796938131863328410412160150471825619049694173807371104601644825755844313657731729068891163705563867555,18221138784555811053296911040444811422299569221370698341523745856400091281377839778678778328149110548534138934160836481393838346908432982920562116626677959686450236292050295531261923474882738697393510842972966810110218027601675376030586402861098487543863740705626110087204717386977952136809165092530095562928623301371629208844732733664526090007002304626939446606391205626126192870615394522174649688440887870385705569710809581575204639778805466412903927058799148697158251622260213645585723159916754663707237605872275846686566820885362722073881904277317597403167380835907876296870877478221646920284310430371934404822311,12694464409184116198175216134705674117698495589897734763290223249700439697747213221960704240817308024376618649511257185410755720163743943692791263666036558979570909072667619923266653682384882259644954119285287063471541002032435823410204495631358202104734018269537402171761572193134509812396214919229814690930600798504895496564687656801956575973479011431776352638782289114699743527186781919502658003154674450714069197242726393985114420810547684173494018605147976810102913734546162705259030658206284298418521349062777115509219489672039075093329236647292016824670535351144784388483525751068225542810044999850751665224074,4201765615355271720665237538919680402664127861292891404309962354268106831635826650331041297039291644925592311983403700464576600435518882156854904159089879201301912105368413055078865795374091914623189759593456721300785707753873135853357294442043908826331857106210726005526370024055346666586491341046296314798619327898858072624823009991437876242325624019938022318176060332738994176297193724805935694309014605422020909137014676945305249645201662101488974241605863532571828450201507584679493905057922784236072997143238879363168245889469038437561181276242698369654938178116001428367837409133015026021079614840533626761027,5693818583095067032554302348404689889827513405370432124730856324552577938645345928545249455102636900381970277642590696482249653647276002965730520652542065397111012479589269283364878130676178205766673654461574816233876555267291293343730094421360715866449358521574582941335437947403997555554148186986038285554629922609604751054748762347310142603219823359220130919495866316927224981350998367935679597793982889611172206443879512553133682522147111994374985808397513270886689704297115982752710085691562031953231724109895260045500479387280386873351701423764105530811712645875225583048344423503433093456461313617037044573606],"BigXj":[{"Coords":[31961961449149592290215619337342545369164998201385135329342844666166714363705,64636392625998908156106021830673034903148364934246785109426074897879798496695]},{"Coords":[13561027879868215202586968035768135752207534764402067848160241312364043370282,31683215740694624076579960720726613640416539517460242899883851320256877874663]},{"Coords":[102970472861055393328233354777448191839076263179087526130927097177204776801806,19849778771794568183958877322544789075545226949228544528619329359950140265115]},{"Coords":[8366486354279759555693815735694831293559828965602250556327317858912116678471,24456250444071880675953816335612932507033433175255559522554349078047625549678]},{"Coords":[93126246885046599201299142306317944158536766260090154798797491446571717586613,101632074177392193573512178573083324222329391048269493231849116848088552218375]},{"Coords":[45944473181199785374833853975473363930687909609574532965286298616052742734642,49106561873713078177518155217967815241790729328033604070651886838013799968339]},{"Coords":[88807289702586806295763026580879412609419986472794654189482668002118698433065,66889255218792877467551818840857264643456782872798377645941824720058728156412]},{"Coords":[45745777770010867130655637386117976632006388263133845103488205463444756286557,58413618959379828248439575493421719547880693819703454359788283537541749522854]},{"Coords":[14931705718614911512649079486924798218629483414127465950786381421646404878840,70853895869521315016717813866703398949051565204254795550601147911581008651495]},{"Coords":[31702825468512650039750289022997764002837389172468049717092331147393818254752,90704921170203464181329063311130512192295590723462840980995045506481351030148]},{"Coords":[108133277897421036808605843118854356978565880360693563552498521263092161957794,33994893650793696043114830343063091347849012751372498052809673503667071259863]},{"Coords":[13603746174106309213882605187834221055267478293724779491981408043396477605150,47502402322605913877968636451206238145707201411072573659819652572960084227380]},{"Coords":[21962637032374642863765173367353663611071785709723940819398260699915154728736,65876190623954751874122457014542214494068664571689464338691288646258987627994]},{"Coords":[8139291295258406047002639746372064115101651961499427493344848502049438028449,13643120656693319356484507306610353728697986968072320539867387334577150577786]},{"Coords":[871083651129542234211830236854985246175496411885064575219875767816674532739,100904963893789549224657775356884044157291453214379932308347421012612568685620]},{"Coords":[98028745019433069815621229762947408124245116227553507407780733119772046992520,60367568163137055112812282822118701471566204774343904929920219271364583776122]},{"Coords":[37332951852807254347441974643993866127041633128152922228434313154811023954744,56046459898819968566785812285970001512876757161864884424831574905585289505077]},{"Coords":[11223798616675111197150792218010453124916879614948521844981845491687409376646,70914747125199464172751182264377339815163078089055967502760766110580370145293]},{"Coords":[62949410140974969962342726366577125978516456835571210444108422984760191628326,55668150354406094271153240357261264601037343235231498038021007487545647055721]},{"Coords":[7611358883569187056502001665501128526153865541559158134839099203014115911991,87617845479447207941483995353359860120852817257735643485765526341493112597509]}],"PaillierPKs":[{"N":25922769748919102678415192880711636156565612427571550685296776086119205445525743826557545692077634738129321690187868055737306626420419536394422682260657759329710259802294458956279773225258250955469954464209933873407784778802101265717840506851919529598154066919091078766953942869622551929743069097967501533345363150709912011028449270819442207860620552088412428865900112120786495620291333470644949767300948329241775121748888220588626655915013364614554467190860190736954650967874940702908395331234632114014125372505065096924932509595285205788545338407476139436404463823043865599023326570565049384032977060875483209339089},{"N":23930233287283899271771864413305422456138957780711273892670074191715648409585503033095084345383391541524625291548041741990557564183855401706042293717552023237439032182637019639795919249455653535670614575331737610284863144094845900714497635996654401300216924764570210541950557336240993007183309433063094227377624710274228010652758134777897718742178998545079447283838099902510469006366469099975469096355736757507201973304413688395278990349533350163833514531655073848517781662614171483003731680841330633223244205178982328422170273570503713081265847261211618499950287557687314846590616484106774575999250148317390509484773},{"N":23804125140052077689856128298352557083678652474445385365228110453726681237860799979845611556170894187976654278582576364089033396218674226546868809651353049956675922595541689542576794678062495339422204984765419389268325283682512000995221750412104207394441438666051694475950049774094896290106430636216894744335784327798634247450687264677393229214665686649911456587168142148024558282134024448427550922487022680890892554782651383972136386958126051377715096556862662265886688077689941967157694195467190297477735450118736949849327358586935699405848605265912107169200547464609552395233560924746135866463084686118233592906569},{"N":27732731445242071631661957657712700411367090291795241371771965432140171981887215839890743735562516245338158767440902124645306227526755834590210240211292920385793070069156192085968959067158127765511651425539136016999745924428061397793021945121990437538890398656832618417715425504589084090095239114803460787199036351739230987513003864153861252195944069425337294669643857426654756086277471320443733998616523518289821541295617435513033264977202437153989318832642208143170451837926277566396048774049270318848738844338850668187024045715008196311523744942555689097435377598835544336914580911633671909176827168167136470690349},{"N":24540078122494262833119917930091872139739129939617606686122284549157786865278292966087938309454800165081094474899057524752572006230843959997841521536274236615511587750039832014979332539924539915807860222967109230298738770371871063759834296194059907031260324597353713442284471130560805946122495294807423458083635025189319558646442212459161798625793784738344309603016513355951936699928410805609866016648244631951643648288242475041729105749202516848107495430809184564037582943457286768883109270231510808158554549441157152513493684930416951758705877335895250913277012541968048511163986915876606316087458297080987346429881},{"N":23068407873896187320610408658036992760323120237076281539139801143529656493030091268390954927616119732305210576479622679524747880246080257702939099128994719527894439722828526117361648236913823027514544862046712398251734066527697676237348724465158893599560473200351530224245041596340220963683429881340553208409699594299261181212989221107530971303522686320513564226387471374456547377291192484997988606654540899634665450162274963086331783789860908282085692296248300574631527561763641974772756130570734735297575564567681595756096492735284720794891113064512997620639494646662790341453069978107064092657029168133504185408209},{"N":23360724885676198523522179321150194474267520026708517257764444663025119039638464657158724624502663558960702469988070676415660798425916276572290617437202837750858738892140118363926690520956187802097449221385283612203760207950600195667994976400493623569930090999021596112553157677485561299069991215207522767873493631366488446241092099654975621689119086509041077742510323711222260189730828492291459421830791540197321337933505867430138627984859014648102694909985043765241359798051875756951108870386862501048751981261038842763679815348130953290890391440850806363449637432840586263665690832227799688631446932015796916844537},{"N":25572476038149983843824758627743773292157542015669155545898739136432359227667585235619146413408812705275735125477228881724887114180658812229689479785083051083069428146070988730518675361280497876215801249358736365876007532614766347833762716625529381645528767502376159614744663698030295284120589012492759402983796882103200388651743368106596836536656368370930363045639317610411594882976032564820311800297421945366798108347221120736308176815503106682839506833524058020959093518528060465861144447540812579976237229589574562145541453749754749768478003306870660214131556451734687719631047077200787163529663274266186702479657},{"N":22679491499676926565249058751269701914370165376325885490706178594236435587374452393672919867257890172146499232592163563478749644823548404207107209183759523050603597049541204457028947474998785130219644182203008088877544305999771879137962239304258371157231174473491797491114277983084811723764080082851754276992307408859865524067180300336894890064430698022388669278921501809909740064260359142339540812296913591956784925745003590749703099702370645409020780887758983568638652737043891478141095930983089074418014910987946825193073588506986312390146214478478314600989393866198945700334073322066709926152728868061176019551541},{"N":23556951187256713732039305973238937631620385080790804249029259279472926645248156172448686117325741554381537031072742207487366612992119859269685828207319515666102872111546619607137952974660084980511684952594879342586512197525409799350424247192892012163769784591542546626323584978204193899561072157767856334488337110957680579926475975853118319141371431419486620931003438350760541975587261961199260033262263106014958269750801811225868080849204705441859105664948039653986722714354940941410686784948916936213417318953574086609821961649007609305029496977916873440356977063491030736996785241653241262171162950673703965399497},{"N":25874692591276389940909836821933328634340387691760211719857424847912710687202655208899136151842265948895002254373718724704209721944297143062448179072459504026936041473424765480639475272190837266572978737262449980766383982513621598580661341958135147571122513631091491976191663115339463730624237942100977649124658328431032849468551008597071378488661492324861414296280692846039598797857140808360770338990664282941023358641770157837364612463858095463039043959476170224596463891235213200808423306885708639894810932553685021558027739945539621344374072593175483199343233185955959027063970833388545231587659014590298587532269},{"N":21093015027631740022404443614096248522776233243516651444497036871175728958780883068858760981924585432192986275662870128643941927265524238598903061299795143929360395711020210769824764384718922898979318706735662563638859312024117764087176816929100038836825165997745175858151391747552772916358596447916581236137266690055236206686429983418915105841208302705945838725058954761546083763560226985859597874827308926656876419352353487645531847757035757295720869824004015071252605178819856102760159009139713396577974830023684477215548955933062314225333947463154019890073099705030557644025494887348484646782031863159015194484417},{"N":25298229297396047246415163429032546137139715727559844391184017906947304850232141234045323209407471473714145852636924268416866274482603754141415609592221706725085407059971638122009913495964543366119323417218834638913881087432600102264473788528537095668778412431377856067113698729914757144153775835786313302871273438949909936263664301138604696985912220658568672102041006541952444982579070062275651333990266954050520365848194152044834016212084441028573044037025009772616765171118784908205140185837844772749992941537017860827787097838183799078426827486346760690086948873222139803967157701952297751113063507286886770253809},{"N":27142202438632787162126599492908508783692765215748557510315014134009044742375492012422395905792294364201376442258017321008269356413320158807932162865700040957744157446176162447390298999320446062496836729102114052332958615915307193716216287036998207324413342337908047902088094382893405585342830460716335897834006040665407645344104524772021574862180664953364488173834491400964015536206179143781066229852877159880337660767454184922616386524557470530917791514588890903382115919687896218697262329973216887300329083882938499296413225108475327673886217363092593458630101782913564451822536507792690041998191978031482893873661},{"N":24506900410165079432913879286738242981557799447704277709132563752281068885918764244597103897934251933625444124974453530023693766922128717584028552755128051187819589410024704161034785358235535327695240184593017832269373629062497324651346586921679971074785452914954524453931920025017233873766495332551435302696547239605953737313669053194482788679487077465271167890491044626060923037626210805459313170671202877996680415217025953459280403666974895608025476083146334864242075064839862857242870450430867849337473211116054259839281123892458791925377357496234454799948092884977174468592367921171996109259120511593665944142269},{"N":26694966767987840469949338865344547117483340362831650227215482575365406012636774021468648984974992022743149425563486792907591668251920735101399223711217247824036472514130615393737405150133409306326610912172081216216331513707092964488994949651842782342704418212963772590286378010081225253538245220740244206602153540135126863052186543426616293649543741875882042173380956119737322204906042367710990417544800462728321639324791151406955584010061660628304199783826293959912579926890912970052339895938137461119473504729752401310289221600181057106776643382986556174592325963163204522372078262520351770361427042538592078722253},{"N":28161406783438289776782541515550232234219338732182263528677255680862818571394539837092411279908340595856411618560352096707955778113841586575489526111758509944691006867155143609674220650793817498419172979829028602046249597147507621299153669762040424244341554256616377217119563525915851719009321686306763607672801085326365691030132510560260181669852932393003570340516931927914922146799899039434467722922041925474101320996856938035131446584298134298675299397155375412990353784006913691603024110559796744887732721945933471868150638226543773483734660294313186275340618342717882057017678734282256333631978096376709630195493},{"N":30290385531723706663194155723402482345164001328034021287910161482488063429892351584916277391109894294446801833020074687889362652138426091460224301803948089690115686705682426193759251182110547546779254274419781083851169949275087832187538168815749507922889270386625094587688358817642053715412200458038741309360104964334706289126542952674791148655002683650712544232003067953586569445443104249283623297733191839471659254940888571771772980381177972566220724293577306168494057111878161156955456998298372496716136324267059071403030493623531599851487444134766104137251811774500492630476212318493040236485031236879687941684761},{"N":21891762840438596060416034930044842446937758373617708235288562429502315391645647044939378215035677465574183685957522821315454029977571728750605988329881847569313802549118091978526315133726370633285214423147938264418314863217805659876561184725718735591303337902948467582966199323804114988231963307083517180657041313131586070203747291724798899561367507615511932716092324516747320587928666160741969956121773346301706809405054989477031949248189136343469258532041255092588255241987397760849320759799542054627513230744643622791455964220513319415609245199516100422991698341556744298439022451385568791478794837569530013904689},{"N":25360934335416714794999313991057897528923718232366653339706494176825638906694689891746545886915964196582662458688535283322287088397853865709093712398485753916163063777301385991907720781358632265326870516346689492128442283774600103789825609570294923480202759046857115137927714980847316960609776972337028789163184648676367675625026306027140091761009104192786329465543720196130052658782412428125321357130192023653185727111578488774341366834046035305712205910649341950409228079277410881842097288924692206421126356254520404943323384573694119449632324221088061482676921038116252201661916622983158849603411299895152156469481}],"ECDSAPub":{"Coords":[92492306118178589821640584737240636977398594678247616965910942704932180187323,27954057508764275913470910100133573369328128015811591924683199269013496685879]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_0.json b/test/_eddsa_fixtures/keygen_data_0.json index feeec143..703f8e28 100644 --- a/test/_eddsa_fixtures/keygen_data_0.json +++ b/test/_eddsa_fixtures/keygen_data_0.json @@ -1 +1,55 @@ -{"Xi":5497684578559545786538821087317191229833609560825198097090867227036693974853,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825450,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file +{ + "Xi": 1123470129231705739242320581717698411230426213735994178302500803173863706807, + "ShareID": 16958127193056753217174896719140242013165049118320995500079788286712215254699, + "Ks": [ + 16958127193056753217174896719140242013165049118320995500079788286712215254699, + 16958127193056753217174896719140242013165049118320995500079788286712215254700, + 16958127193056753217174896719140242013165049118320995500079788286712215254701, + 16958127193056753217174896719140242013165049118320995500079788286712215254702, + 16958127193056753217174896719140242013165049118320995500079788286712215254703 + ], + "BigXj": [ + { + "Curve": "ed25519", + "Coords": [ + 41224335615271381075769974113451208932038734166865770941868367954786737139552, + 13774707131169701307648645647869595844247752878418531713786329629764156867703 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 38390971515160903572427165747410954323761087557985235002455470524013018190764, + 54036280419400883391598155053830219960673373258014736801700705697636583040624 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 12180921436081473618738225787865688183676149452311584940003124609135472556146, + 14304976430285015362100019187031338642123069241060250603697165511151643721112 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 57790128021948066185972365523266757727429683682602823455782373884505843188465, + 9891270332903979021097669758548545766346917176662028553322574817894379911936 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 54411122522958760235689100188515303853105235089211507211432555722072080203537, + 25715298592430735257642280657834596913246686725766124466645327443598871256316 + ] + } + ], + "EDDSAPub": { + "Curve": "ed25519", + "Coords": [ + 43831020110083488052426589316462288057335074484814794644797467442316643200400, + 36043537263710696597551045641434817355465270335317244349166572839625087930913 + ] + } +} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_1.json b/test/_eddsa_fixtures/keygen_data_1.json index 4460233d..15970453 100644 --- a/test/_eddsa_fixtures/keygen_data_1.json +++ b/test/_eddsa_fixtures/keygen_data_1.json @@ -1 +1,55 @@ -{"Xi":63217934899982716894047386607270001125515919366615110191441945641589351059,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825451,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file +{ + "Xi": 73499487457616839495672093976859586345810524103245817354308078351272105414, + "ShareID": 16958127193056753217174896719140242013165049118320995500079788286712215254700, + "Ks": [ + 16958127193056753217174896719140242013165049118320995500079788286712215254699, + 16958127193056753217174896719140242013165049118320995500079788286712215254700, + 16958127193056753217174896719140242013165049118320995500079788286712215254701, + 16958127193056753217174896719140242013165049118320995500079788286712215254702, + 16958127193056753217174896719140242013165049118320995500079788286712215254703 + ], + "BigXj": [ + { + "Curve": "ed25519", + "Coords": [ + 41224335615271381075769974113451208932038734166865770941868367954786737139552, + 13774707131169701307648645647869595844247752878418531713786329629764156867703 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 38390971515160903572427165747410954323761087557985235002455470524013018190764, + 54036280419400883391598155053830219960673373258014736801700705697636583040624 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 12180921436081473618738225787865688183676149452311584940003124609135472556146, + 14304976430285015362100019187031338642123069241060250603697165511151643721112 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 57790128021948066185972365523266757727429683682602823455782373884505843188465, + 9891270332903979021097669758548545766346917176662028553322574817894379911936 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 54411122522958760235689100188515303853105235089211507211432555722072080203537, + 25715298592430735257642280657834596913246686725766124466645327443598871256316 + ] + } + ], + "EDDSAPub": { + "Curve": "ed25519", + "Coords": [ + 43831020110083488052426589316462288057335074484814794644797467442316643200400, + 36043537263710696597551045641434817355465270335317244349166572839625087930913 + ] + } +} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_10.json b/test/_eddsa_fixtures/keygen_data_10.json deleted file mode 100644 index 637f110a..00000000 --- a/test/_eddsa_fixtures/keygen_data_10.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":612714003124180468435465629962791203830154005382664864392564657993173015402,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825460,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_11.json b/test/_eddsa_fixtures/keygen_data_11.json deleted file mode 100644 index cfd154ae..00000000 --- a/test/_eddsa_fixtures/keygen_data_11.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":132334330740542508112965228396678173206965797155205085258526075204147842999,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825461,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_12.json b/test/_eddsa_fixtures/keygen_data_12.json deleted file mode 100644 index 5c0b4d6f..00000000 --- a/test/_eddsa_fixtures/keygen_data_12.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":1921343134857809336751206840551659669418844774179637463961986945173823600101,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825462,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_13.json b/test/_eddsa_fixtures/keygen_data_13.json deleted file mode 100644 index bdc867a3..00000000 --- a/test/_eddsa_fixtures/keygen_data_13.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":3558382524044537666501461744703165381727523259984117242394204292910450959450,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825463,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_14.json b/test/_eddsa_fixtures/keygen_data_14.json deleted file mode 100644 index 27d1d8f4..00000000 --- a/test/_eddsa_fixtures/keygen_data_14.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":6412808835118819085492743071719737203105199209455243425461676282885185849942,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825464,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_15.json b/test/_eddsa_fixtures/keygen_data_15.json deleted file mode 100644 index aa6b2347..00000000 --- a/test/_eddsa_fixtures/keygen_data_15.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":2537771294854952247889447558735279964020200059516392797425993769055333209778,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825465,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_16.json b/test/_eddsa_fixtures/keygen_data_16.json deleted file mode 100644 index e30f5e14..00000000 --- a/test/_eddsa_fixtures/keygen_data_16.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":1398337338638325844456898556082803595180685456144685609069723938462608553306,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825466,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_17.json b/test/_eddsa_fixtures/keygen_data_17.json deleted file mode 100644 index 5c87a0c9..00000000 --- a/test/_eddsa_fixtures/keygen_data_17.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":6568342599621759325979947282583347307332087091895502202407344082023314551338,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825467,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_18.json b/test/_eddsa_fixtures/keygen_data_18.json deleted file mode 100644 index 13647fd9..00000000 --- a/test/_eddsa_fixtures/keygen_data_18.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":3049379593686129638313564852122191503689962664104561458255546250747117815135,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825468,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_19.json b/test/_eddsa_fixtures/keygen_data_19.json deleted file mode 100644 index 76e90ec4..00000000 --- a/test/_eddsa_fixtures/keygen_data_19.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":5204698323580644027606815765592885488881961426971733158947112508553271193434,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825469,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_2.json b/test/_eddsa_fixtures/keygen_data_2.json index be22505a..bace4ce5 100644 --- a/test/_eddsa_fixtures/keygen_data_2.json +++ b/test/_eddsa_fixtures/keygen_data_2.json @@ -1 +1,55 @@ -{"Xi":872133822970594263976239542698278517508809712383590934449908956501683125959,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825452,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file +{ + "Xi": 5013950077382759940964921645122801576070364469316285943929610121614322332438, + "ShareID": 16958127193056753217174896719140242013165049118320995500079788286712215254701, + "Ks": [ + 16958127193056753217174896719140242013165049118320995500079788286712215254699, + 16958127193056753217174896719140242013165049118320995500079788286712215254700, + 16958127193056753217174896719140242013165049118320995500079788286712215254701, + 16958127193056753217174896719140242013165049118320995500079788286712215254702, + 16958127193056753217174896719140242013165049118320995500079788286712215254703 + ], + "BigXj": [ + { + "Curve": "ed25519", + "Coords": [ + 41224335615271381075769974113451208932038734166865770941868367954786737139552, + 13774707131169701307648645647869595844247752878418531713786329629764156867703 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 38390971515160903572427165747410954323761087557985235002455470524013018190764, + 54036280419400883391598155053830219960673373258014736801700705697636583040624 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 12180921436081473618738225787865688183676149452311584940003124609135472556146, + 14304976430285015362100019187031338642123069241060250603697165511151643721112 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 57790128021948066185972365523266757727429683682602823455782373884505843188465, + 9891270332903979021097669758548545766346917176662028553322574817894379911936 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 54411122522958760235689100188515303853105235089211507211432555722072080203537, + 25715298592430735257642280657834596913246686725766124466645327443598871256316 + ] + } + ], + "EDDSAPub": { + "Curve": "ed25519", + "Coords": [ + 43831020110083488052426589316462288057335074484814794644797467442316643200400, + 36043537263710696597551045641434817355465270335317244349166572839625087930913 + ] + } +} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_3.json b/test/_eddsa_fixtures/keygen_data_3.json index e1e8037d..bd629255 100644 --- a/test/_eddsa_fixtures/keygen_data_3.json +++ b/test/_eddsa_fixtures/keygen_data_3.json @@ -1 +1,55 @@ -{"Xi":1179836229477984641418482962119419198917316245936841797929041104581714095832,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825453,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file +{ + "Xi": 1470810744342610615703696109069535898689855330615299346024505056392105885901, + "ShareID": 16958127193056753217174896719140242013165049118320995500079788286712215254702, + "Ks": [ + 16958127193056753217174896719140242013165049118320995500079788286712215254699, + 16958127193056753217174896719140242013165049118320995500079788286712215254700, + 16958127193056753217174896719140242013165049118320995500079788286712215254701, + 16958127193056753217174896719140242013165049118320995500079788286712215254702, + 16958127193056753217174896719140242013165049118320995500079788286712215254703 + ], + "BigXj": [ + { + "Curve": "ed25519", + "Coords": [ + 41224335615271381075769974113451208932038734166865770941868367954786737139552, + 13774707131169701307648645647869595844247752878418531713786329629764156867703 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 38390971515160903572427165747410954323761087557985235002455470524013018190764, + 54036280419400883391598155053830219960673373258014736801700705697636583040624 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 12180921436081473618738225787865688183676149452311584940003124609135472556146, + 14304976430285015362100019187031338642123069241060250603697165511151643721112 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 57790128021948066185972365523266757727429683682602823455782373884505843188465, + 9891270332903979021097669758548545766346917176662028553322574817894379911936 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 54411122522958760235689100188515303853105235089211507211432555722072080203537, + 25715298592430735257642280657834596913246686725766124466645327443598871256316 + ] + } + ], + "EDDSAPub": { + "Curve": "ed25519", + "Coords": [ + 43831020110083488052426589316462288057335074484814794644797467442316643200400, + 36043537263710696597551045641434817355465270335317244349166572839625087930913 + ] + } +} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_4.json b/test/_eddsa_fixtures/keygen_data_4.json index e57fb5c2..e8d10589 100644 --- a/test/_eddsa_fixtures/keygen_data_4.json +++ b/test/_eddsa_fixtures/keygen_data_4.json @@ -1 +1,55 @@ -{"Xi":5017669489520337100589122810632646133378593041253350621343210562932715161221,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825454,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file +{ + "Xi": 3918092643001693291658368611903051035918515826760101235642894759255531267781, + "ShareID": 16958127193056753217174896719140242013165049118320995500079788286712215254703, + "Ks": [ + 16958127193056753217174896719140242013165049118320995500079788286712215254699, + 16958127193056753217174896719140242013165049118320995500079788286712215254700, + 16958127193056753217174896719140242013165049118320995500079788286712215254701, + 16958127193056753217174896719140242013165049118320995500079788286712215254702, + 16958127193056753217174896719140242013165049118320995500079788286712215254703 + ], + "BigXj": [ + { + "Curve": "ed25519", + "Coords": [ + 41224335615271381075769974113451208932038734166865770941868367954786737139552, + 13774707131169701307648645647869595844247752878418531713786329629764156867703 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 38390971515160903572427165747410954323761087557985235002455470524013018190764, + 54036280419400883391598155053830219960673373258014736801700705697636583040624 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 12180921436081473618738225787865688183676149452311584940003124609135472556146, + 14304976430285015362100019187031338642123069241060250603697165511151643721112 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 57790128021948066185972365523266757727429683682602823455782373884505843188465, + 9891270332903979021097669758548545766346917176662028553322574817894379911936 + ] + }, + { + "Curve": "ed25519", + "Coords": [ + 54411122522958760235689100188515303853105235089211507211432555722072080203537, + 25715298592430735257642280657834596913246686725766124466645327443598871256316 + ] + } + ], + "EDDSAPub": { + "Curve": "ed25519", + "Coords": [ + 43831020110083488052426589316462288057335074484814794644797467442316643200400, + 36043537263710696597551045641434817355465270335317244349166572839625087930913 + ] + } +} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_5.json b/test/_eddsa_fixtures/keygen_data_5.json deleted file mode 100644 index 8f7b32a4..00000000 --- a/test/_eddsa_fixtures/keygen_data_5.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":4765471521464052470070984911157841845886683306552259817170065272142575391856,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825455,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_6.json b/test/_eddsa_fixtures/keygen_data_6.json deleted file mode 100644 index 5f4efa22..00000000 --- a/test/_eddsa_fixtures/keygen_data_6.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":1045892474936059251985659170102725504923897290191611725843576974027994030581,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825456,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_7.json b/test/_eddsa_fixtures/keygen_data_7.json deleted file mode 100644 index ed10ea51..00000000 --- a/test/_eddsa_fixtures/keygen_data_7.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":4041926922956203584528365898533497289190576165251745887001630247571429018585,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825457,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_8.json b/test/_eddsa_fixtures/keygen_data_8.json deleted file mode 100644 index ced47850..00000000 --- a/test/_eddsa_fixtures/keygen_data_8.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":4424331354155150752871085145208343995276421178095495124698480820719825522042,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825458,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/_eddsa_fixtures/keygen_data_9.json b/test/_eddsa_fixtures/keygen_data_9.json deleted file mode 100644 index a7386de2..00000000 --- a/test/_eddsa_fixtures/keygen_data_9.json +++ /dev/null @@ -1 +0,0 @@ -{"Xi":4107694223360230897865014039477631043773881150017797542034694187907332099878,"ShareID":40734138852254171962093726793026483849163144962128892259315105148313993825459,"Ks":[40734138852254171962093726793026483849163144962128892259315105148313993825450,40734138852254171962093726793026483849163144962128892259315105148313993825451,40734138852254171962093726793026483849163144962128892259315105148313993825452,40734138852254171962093726793026483849163144962128892259315105148313993825453,40734138852254171962093726793026483849163144962128892259315105148313993825454,40734138852254171962093726793026483849163144962128892259315105148313993825455,40734138852254171962093726793026483849163144962128892259315105148313993825456,40734138852254171962093726793026483849163144962128892259315105148313993825457,40734138852254171962093726793026483849163144962128892259315105148313993825458,40734138852254171962093726793026483849163144962128892259315105148313993825459,40734138852254171962093726793026483849163144962128892259315105148313993825460,40734138852254171962093726793026483849163144962128892259315105148313993825461,40734138852254171962093726793026483849163144962128892259315105148313993825462,40734138852254171962093726793026483849163144962128892259315105148313993825463,40734138852254171962093726793026483849163144962128892259315105148313993825464,40734138852254171962093726793026483849163144962128892259315105148313993825465,40734138852254171962093726793026483849163144962128892259315105148313993825466,40734138852254171962093726793026483849163144962128892259315105148313993825467,40734138852254171962093726793026483849163144962128892259315105148313993825468,40734138852254171962093726793026483849163144962128892259315105148313993825469],"BigXj":[{"Coords":[29957866551444288658476350454857942692734557351100032691360819157091897571232,36516084228669802171659768461438209556386151343623994887856397017072741988372]},{"Coords":[47405980669639002124687519219913707250293554115260022083522701215817403509702,6956633993610953877720305833332948578423467581354172946924040631226828086263]},{"Coords":[18448325566171282313365171084287037248684936691904749885126674379501353453346,57542808379242682171071366265254456185195752776998290707742666662032232473622]},{"Coords":[798119792817890022465650864894266739550633881670097146590803382931084199002,18741616705198182206589511729301188460657955392768622916582367701785923387424]},{"Coords":[14524065198933915096660983495571495008260235612202009841821241149956652340934,162069773027357354579088193613939754572344398048294401250160042815055523396]},{"Coords":[2391511861628100895088988814765656118369224176176415534794931546222531191393,54978250562078788732535891657909173161508352364458206272900734945726006923944]},{"Coords":[33367545684625665916290843623923194353275614015826572202674111417892161420321,34552418317790324990966929588824151029743376389391432746282019503564426200611]},{"Coords":[453004606432256381667684448461219576328123204931667780295629476469381320335,24202636244659007772676161416986810172809713458728117448473736554568193288470]},{"Coords":[44318728173104604826550003017879014210227013712735183198372207299653903594205,55087473080850843015060234253261358005815826246456261778853783389363296224499]},{"Coords":[5097897464978708021234982103799161978473496892186061915228937112062938960292,39812599820868772665849683762267559082841521300551301780306710760212842213142]},{"Coords":[55801688604275193229895471092959853307614973751632662500004587523688279428992,17908790269314533447122947617750819476463804243432605334549377565373680755876]},{"Coords":[32196451128233400126962687457853805171503763230195900653815988022301169917854,10273285854850198960907924097749326069343899412006196915507281805160302832102]},{"Coords":[26398652979910650230881886450362073218710043900599396151821471419532983149715,3032814692424797993000494058354620844984917462544480255564224802193495430820]},{"Coords":[27236617586105103118624761259021831737235970883376501177552152583376986719238,2786011207236436994120124945804028682728444491790282961909091865945687955840]},{"Coords":[6500269738457737805717018971821598944446826873819309240030153246330846600187,54308477058519174622786176570543012641112928166620722474067812858680268430854]},{"Coords":[4652059627434138465834466819430362335203531466567637962754703362561726860984,18006877504897652595228402160133201981096960017662552547657957601542173068568]},{"Coords":[42705465432401668547671480078970955931365681662524360494488948437573630670729,37242984276081434326327463579899341679142344806501877280538421137197674554811]},{"Coords":[18501735463211215871442136946404860176100300228118646447712783974401612692211,55831398139586339034188706414537302757232734304622486782051369794171579576311]},{"Coords":[7385530367911231668221642462698546652820692326793989938132531831625569287435,12085977429229034609485085920553594147602092630530547749432190844231493145848]},{"Coords":[49366217028906791915740719671679644479230737403944270239462268252818931953988,25008491817774874184492999972971314605544442775664114331432153999032773052367]}],"EDDSAPub":{"Coords":[42175055170903350083404361365361390497000185285799325061444760830647516725091,33752718602899281735872279809218140168011871948094137689488348151553552496995]}} \ No newline at end of file diff --git a/test/config.go b/test/config.go index 4f055032..20e50a21 100644 --- a/test/config.go +++ b/test/config.go @@ -9,6 +9,6 @@ package test const ( // To change these parameters, you must first delete the text fixture files in test/_fixtures/ and then run the keygen test alone. // Then the signing and resharing tests will work with the new n, t configuration using the newly written fixture files. - TestParticipants = 20 + TestParticipants = 5 TestThreshold = TestParticipants / 2 ) diff --git a/test/utils.go b/test/utils.go index d47b719b..633d34ec 100644 --- a/test/utils.go +++ b/test/utils.go @@ -7,7 +7,7 @@ package test import ( - "github.com/binance-chain/tss-lib/tss" + "github.com/bnb-chain/tss-lib/v2/tss" ) func SharedPartyUpdater(party tss.Party, msg tss.Message, errCh chan<- *tss.Error) { diff --git a/tss/curve.go b/tss/curve.go index 1aded0d2..983a9361 100644 --- a/tss/curve.go +++ b/tss/curve.go @@ -9,17 +9,66 @@ package tss import ( "crypto/elliptic" "errors" + "reflect" - s256k1 "github.com/btcsuite/btcd/btcec" + s256k1 "github.com/btcsuite/btcd/btcec/v2" + "github.com/decred/dcrd/dcrec/edwards/v2" +) + +type CurveName string + +const ( + Secp256k1 CurveName = "secp256k1" + Ed25519 CurveName = "ed25519" ) var ( - ec elliptic.Curve + ec elliptic.Curve + registry map[CurveName]elliptic.Curve ) // Init default curve (secp256k1) func init() { ec = s256k1.S256() + + registry = make(map[CurveName]elliptic.Curve) + registry[Secp256k1] = s256k1.S256() + registry[Ed25519] = edwards.Edwards() +} + +func RegisterCurve(name CurveName, curve elliptic.Curve) { + registry[name] = curve +} + +// return curve, exist(bool) +func GetCurveByName(name CurveName) (elliptic.Curve, bool) { + if val, exist := registry[name]; exist { + return val, true + } + + return nil, false +} + +// return name, exist(bool) +func GetCurveName(curve elliptic.Curve) (CurveName, bool) { + for name, e := range registry { + if reflect.TypeOf(curve) == reflect.TypeOf(e) { + return name, true + } + } + + return "", false +} + +// SameCurve returns true if both lhs and rhs are the same known curve +func SameCurve(lhs, rhs elliptic.Curve) bool { + lName, lOk := GetCurveName(lhs) + rName, rOk := GetCurveName(rhs) + if lOk && rOk { + return lName == rName + } + // if lhs/rhs not exist, return false + return false } // EC returns the current elliptic curve in use. The default is secp256k1 @@ -28,9 +77,19 @@ func EC() elliptic.Curve { } // SetCurve sets the curve used by TSS. Must be called before Start. The default is secp256k1 +// Deprecated func SetCurve(curve elliptic.Curve) { if curve == nil { panic(errors.New("SetCurve received a nil curve")) } ec = curve } + +// secp256k1 +func S256() elliptic.Curve { + return s256k1.S256() +} + +func Edwards() elliptic.Curve { + return edwards.Edwards() +} diff --git a/tss/message.go b/tss/message.go index 222e6ad3..acb4a6ec 100644 --- a/tss/message.go +++ b/tss/message.go @@ -9,8 +9,8 @@ package tss import ( "fmt" - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/anypb" ) type ( @@ -81,7 +81,7 @@ var ( // NewMessageWrapper constructs a MessageWrapper from routing metadata and content func NewMessageWrapper(routing MessageRouting, content MessageContent) *MessageWrapper { // marshal the content to the ProtoBuf Any type - any, _ := ptypes.MarshalAny(content) + any, _ := anypb.New(content) // convert given PartyIDs to the wire format var to []*MessageWrapper_PartyID if routing.To != nil { @@ -111,7 +111,7 @@ func NewMessage(meta MessageRouting, content MessageContent, wire *MessageWrappe } func (mm *MessageImpl) Type() string { - return proto.MessageName(mm.content) + return string(proto.MessageName(mm.content)) } func (mm *MessageImpl) GetTo() []*PartyID { diff --git a/tss/message.pb.go b/tss/message.pb.go index 8bc51645..df58ef38 100644 --- a/tss/message.pb.go +++ b/tss/message.pb.go @@ -1,35 +1,45 @@ +// Copyright © 2019 Binance +// +// This file is part of Binance. The full Binance copyright notice, including +// terms governing use, modification, and redistribution, is contained in the +// file LICENSE at the root of the source code distribution tree. + // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.14.0 // source: protob/message.proto package tss import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - any "github.com/golang/protobuf/ptypes/any" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // // Wrapper for TSS messages, often read by the transport layer and not itself sent over the wire type MessageWrapper struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Metadata optionally un-marshalled and used by the transport to route this message. IsBroadcast bool `protobuf:"varint,1,opt,name=is_broadcast,json=isBroadcast,proto3" json:"is_broadcast,omitempty"` // Metadata optionally un-marshalled and used by the transport to route this message. - IsToOldCommittee bool `protobuf:"varint,2,opt,name=is_to_old_committee,json=isToOldCommittee,proto3" json:"is_to_old_committee,omitempty"` + IsToOldCommittee bool `protobuf:"varint,2,opt,name=is_to_old_committee,json=isToOldCommittee,proto3" json:"is_to_old_committee,omitempty"` // used only in certain resharing messages // Metadata optionally un-marshalled and used by the transport to route this message. - IsToOldAndNewCommittees bool `protobuf:"varint,5,opt,name=is_to_old_and_new_committees,json=isToOldAndNewCommittees,proto3" json:"is_to_old_and_new_committees,omitempty"` + IsToOldAndNewCommittees bool `protobuf:"varint,5,opt,name=is_to_old_and_new_committees,json=isToOldAndNewCommittees,proto3" json:"is_to_old_and_new_committees,omitempty"` // used only in certain resharing messages // Metadata optionally un-marshalled and used by the transport to route this message. From *MessageWrapper_PartyID `protobuf:"bytes,3,opt,name=from,proto3" json:"from,omitempty"` // Metadata optionally un-marshalled and used by the transport to route this message. @@ -37,75 +47,79 @@ type MessageWrapper struct { // This field is actually what is sent through the wire and consumed on the other end by UpdateFromBytes. // An Any contains an arbitrary serialized message as bytes, along with a URL that // acts as a globally unique identifier for and resolves to that message's type. - Message *any.Any `protobuf:"bytes,10,opt,name=message,proto3" json:"message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Message *anypb.Any `protobuf:"bytes,10,opt,name=message,proto3" json:"message,omitempty"` } -func (m *MessageWrapper) Reset() { *m = MessageWrapper{} } -func (m *MessageWrapper) String() string { return proto.CompactTextString(m) } -func (*MessageWrapper) ProtoMessage() {} -func (*MessageWrapper) Descriptor() ([]byte, []int) { - return fileDescriptor_5be430ad0e7f3d12, []int{0} +func (x *MessageWrapper) Reset() { + *x = MessageWrapper{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MessageWrapper) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MessageWrapper.Unmarshal(m, b) -} -func (m *MessageWrapper) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MessageWrapper.Marshal(b, m, deterministic) -} -func (m *MessageWrapper) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessageWrapper.Merge(m, src) -} -func (m *MessageWrapper) XXX_Size() int { - return xxx_messageInfo_MessageWrapper.Size(m) +func (x *MessageWrapper) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MessageWrapper) XXX_DiscardUnknown() { - xxx_messageInfo_MessageWrapper.DiscardUnknown(m) + +func (*MessageWrapper) ProtoMessage() {} + +func (x *MessageWrapper) ProtoReflect() protoreflect.Message { + mi := &file_protob_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MessageWrapper proto.InternalMessageInfo +// Deprecated: Use MessageWrapper.ProtoReflect.Descriptor instead. +func (*MessageWrapper) Descriptor() ([]byte, []int) { + return file_protob_message_proto_rawDescGZIP(), []int{0} +} -func (m *MessageWrapper) GetIsBroadcast() bool { - if m != nil { - return m.IsBroadcast +func (x *MessageWrapper) GetIsBroadcast() bool { + if x != nil { + return x.IsBroadcast } return false } -func (m *MessageWrapper) GetIsToOldCommittee() bool { - if m != nil { - return m.IsToOldCommittee +func (x *MessageWrapper) GetIsToOldCommittee() bool { + if x != nil { + return x.IsToOldCommittee } return false } -func (m *MessageWrapper) GetIsToOldAndNewCommittees() bool { - if m != nil { - return m.IsToOldAndNewCommittees +func (x *MessageWrapper) GetIsToOldAndNewCommittees() bool { + if x != nil { + return x.IsToOldAndNewCommittees } return false } -func (m *MessageWrapper) GetFrom() *MessageWrapper_PartyID { - if m != nil { - return m.From +func (x *MessageWrapper) GetFrom() *MessageWrapper_PartyID { + if x != nil { + return x.From } return nil } -func (m *MessageWrapper) GetTo() []*MessageWrapper_PartyID { - if m != nil { - return m.To +func (x *MessageWrapper) GetTo() []*MessageWrapper_PartyID { + if x != nil { + return x.To } return nil } -func (m *MessageWrapper) GetMessage() *any.Any { - if m != nil { - return m.Message +func (x *MessageWrapper) GetMessage() *anypb.Any { + if x != nil { + return x.Message } return nil } @@ -114,86 +128,180 @@ func (m *MessageWrapper) GetMessage() *any.Any { // Note: The `id` and `moniker` are provided for convenience to allow you to track participants easier. // The `id` is intended to be a unique string representation of `key` and `moniker` can be anything (even left blank). type MessageWrapper_PartyID struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Moniker string `protobuf:"bytes,2,opt,name=moniker,proto3" json:"moniker,omitempty"` - Key []byte `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (m *MessageWrapper_PartyID) Reset() { *m = MessageWrapper_PartyID{} } -func (m *MessageWrapper_PartyID) String() string { return proto.CompactTextString(m) } -func (*MessageWrapper_PartyID) ProtoMessage() {} -func (*MessageWrapper_PartyID) Descriptor() ([]byte, []int) { - return fileDescriptor_5be430ad0e7f3d12, []int{0, 0} + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Moniker string `protobuf:"bytes,2,opt,name=moniker,proto3" json:"moniker,omitempty"` + Key []byte `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` } -func (m *MessageWrapper_PartyID) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MessageWrapper_PartyID.Unmarshal(m, b) -} -func (m *MessageWrapper_PartyID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MessageWrapper_PartyID.Marshal(b, m, deterministic) -} -func (m *MessageWrapper_PartyID) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessageWrapper_PartyID.Merge(m, src) +func (x *MessageWrapper_PartyID) Reset() { + *x = MessageWrapper_PartyID{} + if protoimpl.UnsafeEnabled { + mi := &file_protob_message_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *MessageWrapper_PartyID) XXX_Size() int { - return xxx_messageInfo_MessageWrapper_PartyID.Size(m) + +func (x *MessageWrapper_PartyID) String() string { + return protoimpl.X.MessageStringOf(x) } -func (m *MessageWrapper_PartyID) XXX_DiscardUnknown() { - xxx_messageInfo_MessageWrapper_PartyID.DiscardUnknown(m) + +func (*MessageWrapper_PartyID) ProtoMessage() {} + +func (x *MessageWrapper_PartyID) ProtoReflect() protoreflect.Message { + mi := &file_protob_message_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -var xxx_messageInfo_MessageWrapper_PartyID proto.InternalMessageInfo +// Deprecated: Use MessageWrapper_PartyID.ProtoReflect.Descriptor instead. +func (*MessageWrapper_PartyID) Descriptor() ([]byte, []int) { + return file_protob_message_proto_rawDescGZIP(), []int{0, 0} +} -func (m *MessageWrapper_PartyID) GetId() string { - if m != nil { - return m.Id +func (x *MessageWrapper_PartyID) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *MessageWrapper_PartyID) GetMoniker() string { - if m != nil { - return m.Moniker +func (x *MessageWrapper_PartyID) GetMoniker() string { + if x != nil { + return x.Moniker } return "" } -func (m *MessageWrapper_PartyID) GetKey() []byte { - if m != nil { - return m.Key +func (x *MessageWrapper_PartyID) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func init() { - proto.RegisterType((*MessageWrapper)(nil), "MessageWrapper") - proto.RegisterType((*MessageWrapper_PartyID)(nil), "MessageWrapper.PartyID") -} - -func init() { proto.RegisterFile("protob/message.proto", fileDescriptor_5be430ad0e7f3d12) } - -var fileDescriptor_5be430ad0e7f3d12 = []byte{ - // 297 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x4f, 0x4b, 0x33, 0x31, - 0x10, 0x87, 0x69, 0xda, 0xbe, 0xfb, 0x76, 0x5a, 0x4a, 0x89, 0x85, 0xc6, 0xe2, 0xa1, 0x7a, 0xb1, - 0x20, 0x66, 0x41, 0xcf, 0x1e, 0x5a, 0xf5, 0xe0, 0xc1, 0x3f, 0x04, 0x41, 0xf0, 0xb2, 0xa4, 0x4d, - 0x5a, 0x42, 0xbb, 0x99, 0x92, 0x44, 0xca, 0x7e, 0x69, 0x3f, 0x83, 0x98, 0xdd, 0xb5, 0x78, 0xf1, - 0x96, 0x99, 0x79, 0x7e, 0x99, 0xe1, 0x81, 0xe1, 0xce, 0x61, 0xc0, 0x45, 0x9a, 0x6b, 0xef, 0xe5, - 0x5a, 0xf3, 0x58, 0x8e, 0x8f, 0xd7, 0x88, 0xeb, 0xad, 0x4e, 0xcb, 0xe1, 0xc7, 0x2a, 0x95, 0xb6, - 0x28, 0x47, 0x67, 0x9f, 0x04, 0xfa, 0x8f, 0x25, 0xfc, 0xe6, 0xe4, 0x6e, 0xa7, 0x1d, 0x3d, 0x85, - 0x9e, 0xf1, 0xd9, 0xc2, 0xa1, 0x54, 0x4b, 0xe9, 0x03, 0x6b, 0x4c, 0x1a, 0xd3, 0xff, 0xa2, 0x6b, - 0xfc, 0xbc, 0x6e, 0xd1, 0x4b, 0x38, 0x32, 0x3e, 0x0b, 0x98, 0xe1, 0x56, 0x65, 0x4b, 0xcc, 0x73, - 0x13, 0x82, 0xd6, 0x8c, 0x44, 0x72, 0x60, 0xfc, 0x2b, 0x3e, 0x6f, 0xd5, 0x6d, 0xdd, 0xa7, 0x37, - 0x70, 0x72, 0xc0, 0xa5, 0x55, 0x99, 0xd5, 0xfb, 0x43, 0xcc, 0xb3, 0x76, 0xcc, 0x8d, 0xaa, 0xdc, - 0xcc, 0xaa, 0x27, 0xbd, 0xff, 0x49, 0x7b, 0x7a, 0x01, 0xad, 0x95, 0xc3, 0x9c, 0x35, 0x27, 0x8d, - 0x69, 0xf7, 0x6a, 0xc4, 0x7f, 0xdf, 0xcb, 0x5f, 0xa4, 0x0b, 0xc5, 0xc3, 0x9d, 0x88, 0x10, 0x3d, - 0x07, 0x12, 0x90, 0xb5, 0x26, 0xcd, 0xbf, 0x50, 0x12, 0x90, 0x72, 0x48, 0x2a, 0x4b, 0x0c, 0xe2, - 0xc7, 0x43, 0x5e, 0x6a, 0xe2, 0xb5, 0x26, 0x3e, 0xb3, 0x85, 0xa8, 0xa1, 0xf1, 0x3d, 0x24, 0x55, - 0x9c, 0xf6, 0x81, 0x18, 0x15, 0xbd, 0x74, 0x04, 0x31, 0x8a, 0x32, 0x48, 0x72, 0xb4, 0x66, 0xa3, - 0x5d, 0x54, 0xd0, 0x11, 0x75, 0x49, 0x07, 0xd0, 0xdc, 0xe8, 0x22, 0x5e, 0xde, 0x13, 0xdf, 0xcf, - 0x79, 0xf2, 0xde, 0xe6, 0x69, 0xf0, 0x7e, 0xf1, 0x2f, 0xae, 0xb9, 0xfe, 0x0a, 0x00, 0x00, 0xff, - 0xff, 0xac, 0xdd, 0x4e, 0x90, 0xb3, 0x01, 0x00, 0x00, +var File_protob_message_proto protoreflect.FileDescriptor + +var file_protob_message_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x62, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x8c, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x42, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x74, 0x6f, + 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x54, 0x6f, 0x4f, 0x6c, 0x64, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x74, 0x65, 0x65, 0x12, 0x3d, 0x0a, 0x1c, 0x69, 0x73, 0x5f, 0x74, 0x6f, 0x5f, + 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x74, 0x65, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x69, 0x73, + 0x54, 0x6f, 0x4f, 0x6c, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x74, 0x65, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, + 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x49, 0x44, 0x52, 0x04, 0x66, 0x72, 0x6f, + 0x6d, 0x12, 0x36, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x62, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x74, 0x73, 0x73, 0x6c, 0x69, 0x62, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x49, 0x44, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x45, 0x0a, 0x07, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x2f, 0x74, 0x73, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_protob_message_proto_rawDescOnce sync.Once + file_protob_message_proto_rawDescData = file_protob_message_proto_rawDesc +) + +func file_protob_message_proto_rawDescGZIP() []byte { + file_protob_message_proto_rawDescOnce.Do(func() { + file_protob_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_protob_message_proto_rawDescData) + }) + return file_protob_message_proto_rawDescData +} + +var file_protob_message_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_protob_message_proto_goTypes = []interface{}{ + (*MessageWrapper)(nil), // 0: binance.tsslib.MessageWrapper + (*MessageWrapper_PartyID)(nil), // 1: binance.tsslib.MessageWrapper.PartyID + (*anypb.Any)(nil), // 2: google.protobuf.Any +} +var file_protob_message_proto_depIdxs = []int32{ + 1, // 0: binance.tsslib.MessageWrapper.from:type_name -> binance.tsslib.MessageWrapper.PartyID + 1, // 1: binance.tsslib.MessageWrapper.to:type_name -> binance.tsslib.MessageWrapper.PartyID + 2, // 2: binance.tsslib.MessageWrapper.message:type_name -> google.protobuf.Any + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_protob_message_proto_init() } +func file_protob_message_proto_init() { + if File_protob_message_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protob_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageWrapper); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protob_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MessageWrapper_PartyID); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protob_message_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protob_message_proto_goTypes, + DependencyIndexes: file_protob_message_proto_depIdxs, + MessageInfos: file_protob_message_proto_msgTypes, + }.Build() + File_protob_message_proto = out.File + file_protob_message_proto_rawDesc = nil + file_protob_message_proto_goTypes = nil + file_protob_message_proto_depIdxs = nil } diff --git a/tss/params.go b/tss/params.go index 2289f687..114f4848 100644 --- a/tss/params.go +++ b/tss/params.go @@ -7,17 +7,25 @@ package tss import ( - "errors" + "crypto/elliptic" + "runtime" "time" ) type ( Parameters struct { + ec elliptic.Curve partyID *PartyID parties *PeerContext partyCount int threshold int + concurrency int safePrimeGenTimeout time.Duration + // proof session info + nonce int + // for keygen + noProofMod bool + noProofFac bool } ReSharingParameters struct { @@ -33,25 +41,22 @@ const ( ) // Exported, used in `tss` client -func NewParameters(ctx *PeerContext, partyID *PartyID, partyCount, threshold int, optionalSafePrimeGenTimeout ...time.Duration) *Parameters { - var safePrimeGenTimeout time.Duration - if 0 < len(optionalSafePrimeGenTimeout) { - if 1 < len(optionalSafePrimeGenTimeout) { - panic(errors.New("GeneratePreParams: expected 0 or 1 item in `optionalSafePrimeGenTimeout`")) - } - safePrimeGenTimeout = optionalSafePrimeGenTimeout[0] - } else { - safePrimeGenTimeout = defaultSafePrimeGenTimeout - } +func NewParameters(ec elliptic.Curve, ctx *PeerContext, partyID *PartyID, partyCount, threshold int) *Parameters { return &Parameters{ + ec: ec, parties: ctx, partyID: partyID, partyCount: partyCount, threshold: threshold, - safePrimeGenTimeout: safePrimeGenTimeout, + concurrency: runtime.GOMAXPROCS(0), + safePrimeGenTimeout: defaultSafePrimeGenTimeout, } } +func (params *Parameters) EC() elliptic.Curve { + return params.ec +} + func (params *Parameters) Parties() *PeerContext { return params.parties } @@ -68,15 +73,44 @@ func (params *Parameters) Threshold() int { return params.threshold } +func (params *Parameters) Concurrency() int { + return params.concurrency +} + func (params *Parameters) SafePrimeGenTimeout() time.Duration { return params.safePrimeGenTimeout } +// The concurrency level must be >= 1. +func (params *Parameters) SetConcurrency(concurrency int) { + params.concurrency = concurrency +} + +func (params *Parameters) SetSafePrimeGenTimeout(timeout time.Duration) { + params.safePrimeGenTimeout = timeout +} + +func (params *Parameters) NoProofMod() bool { + return params.noProofMod +} + +func (params *Parameters) NoProofFac() bool { + return params.noProofFac +} + +func (params *Parameters) SetNoProofMod() { + params.noProofMod = true +} + +func (params *Parameters) SetNoProofFac() { + params.noProofFac = true +} + // ----- // // Exported, used in `tss` client -func NewReSharingParameters(ctx, newCtx *PeerContext, partyID *PartyID, partyCount, threshold, newPartyCount, newThreshold int) *ReSharingParameters { - params := NewParameters(ctx, partyID, partyCount, threshold) +func NewReSharingParameters(ec elliptic.Curve, ctx, newCtx *PeerContext, partyID *PartyID, partyCount, threshold, newPartyCount, newThreshold int) *ReSharingParameters { + params := NewParameters(ec, ctx, partyID, partyCount, threshold) return &ReSharingParameters{ Parameters: params, newParties: newCtx, diff --git a/tss/party.go b/tss/party.go index 5580dbe0..210405b3 100644 --- a/tss/party.go +++ b/tss/party.go @@ -11,7 +11,7 @@ import ( "fmt" "sync" - "github.com/binance-chain/tss-lib/common" + "github.com/bnb-chain/tss-lib/v2/common" ) type Party interface { @@ -79,7 +79,11 @@ func (p *BaseParty) ValidateMessage(msg ParsedMessage) (bool, *Error) { } func (p *BaseParty) String() string { - return fmt.Sprintf("round: %d", p.round().RoundNumber()) + if rnd := p.round(); rnd != nil { + return fmt.Sprintf("round: %d",rnd.RoundNumber()) + } + + return "No more rounds" } // ----- diff --git a/tss/party_id.go b/tss/party_id.go index 49357d0d..e21c9310 100644 --- a/tss/party_id.go +++ b/tss/party_id.go @@ -11,7 +11,7 @@ import ( "math/big" "sort" - "github.com/binance-chain/tss-lib/common" + "github.com/bnb-chain/tss-lib/v2/common" ) type ( diff --git a/tss/wire.go b/tss/wire.go index bb9234ba..bc24df50 100644 --- a/tss/wire.go +++ b/tss/wire.go @@ -8,21 +8,14 @@ package tss import ( "errors" - - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes" - "github.com/golang/protobuf/ptypes/any" -) - -const ( - ECDSAProtoNamePrefix = "binance.tss-lib.ecdsa." - EDDSAProtoNamePrefix = "binance.tss-lib.eddsa." + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/anypb" ) // Used externally to update a LocalParty with a valid ParsedMessage func ParseWireMessage(wireBytes []byte, from *PartyID, isBroadcast bool) (ParsedMessage, error) { wire := new(MessageWrapper) - wire.Message = new(any.Any) + wire.Message = new(anypb.Any) wire.From = from.MessageWrapper_PartyID wire.IsBroadcast = isBroadcast if err := proto.Unmarshal(wireBytes, wire.Message); err != nil { @@ -32,15 +25,15 @@ func ParseWireMessage(wireBytes []byte, from *PartyID, isBroadcast bool) (Parsed } func parseWrappedMessage(wire *MessageWrapper, from *PartyID) (ParsedMessage, error) { - var any ptypes.DynamicAny + m, err := wire.Message.UnmarshalNew() + if err != nil { + return nil, err + } meta := MessageRouting{ From: from, IsBroadcast: wire.IsBroadcast, } - if err := ptypes.UnmarshalAny(wire.Message, &any); err != nil { - return nil, err - } - if content, ok := any.Message.(MessageContent); ok { + if content, ok := m.(MessageContent); ok { return NewMessage(meta, content, wire), nil } return nil, errors.New("ParseWireMessage: the message contained unknown content")