mirror of
https://github.com/SwingbyProtocol/tss-lib.git
synced 2026-04-23 03:00:36 -04:00
Merge branch 'master' into feature/cggmp21oct-tss-lib-tmp-merge # Conflicts: # .github/workflows/test.yml # Makefile # README.md # crypto/ckd/child_key_derivation.go # crypto/ecpoint.go # crypto/mta/proofs.go # crypto/mta/range_proof.go # crypto/mta/share_protocol.go # crypto/mta/share_protocol_test.go # crypto/paillier/paillier.go # crypto/vss/feldman_vss.go # ecdsa/keygen/ecdsa-keygen.pb.go # ecdsa/keygen/local_party.go # ecdsa/keygen/local_party_test.go # ecdsa/keygen/messages.go # ecdsa/keygen/prepare.go # ecdsa/keygen/round_1.go # ecdsa/keygen/round_2.go # ecdsa/keygen/round_3.go # ecdsa/keygen/round_4.go # ecdsa/keygen/save_data.go # ecdsa/resharing/ecdsa-resharing.pb.go # ecdsa/resharing/local_party_test.go # ecdsa/resharing/messages.go # ecdsa/resharing/round_1_old_step_1.go # ecdsa/resharing/round_4_new_step_2.go # ecdsa/signing/ecdsa-signing.pb.go # ecdsa/signing/finalize.go # ecdsa/signing/key_derivation_util.go # ecdsa/signing/local_party.go # ecdsa/signing/local_party_test.go # ecdsa/signing/messages.go # ecdsa/signing/prepare.go # ecdsa/signing/round_1.go # ecdsa/signing/round_2.go # ecdsa/signing/round_3.go # ecdsa/signing/round_4.go # ecdsa/signing/round_5.go # ecdsa/signing/round_6.go # ecdsa/signing/round_7.go # ecdsa/signing/rounds.go # eddsa/keygen/eddsa-keygen.pb.go # eddsa/keygen/local_party.go # eddsa/keygen/local_party_test.go # eddsa/keygen/messages.go # eddsa/keygen/round_1.go # eddsa/keygen/round_2.go # eddsa/keygen/round_3.go # eddsa/keygen/save_data.go # eddsa/keygen/test_utils.go # eddsa/resharing/eddsa-resharing.pb.go # eddsa/resharing/local_party.go # eddsa/resharing/local_party_test.go # eddsa/resharing/messages.go # eddsa/resharing/round_1_old_step_1.go # eddsa/resharing/round_4_new_step_2.go # eddsa/signing/eddsa-signing.pb.go # eddsa/signing/finalize.go # eddsa/signing/local_party.go # eddsa/signing/local_party_test.go # eddsa/signing/messages.go # eddsa/signing/prepare.go # eddsa/signing/round_1.go # eddsa/signing/round_2.go # eddsa/signing/round_3.go # eddsa/signing/rounds.go # eddsa/signing/utils.go # go.mod # go.sum # protob/ecdsa-keygen.proto # protob/ecdsa-resharing.proto # protob/ecdsa-signing.proto # protob/eddsa-keygen.proto # protob/eddsa-resharing.proto # protob/eddsa-signing.proto # protob/message.proto # protob/signature.proto # test/_ecdsa_fixtures/keygen_data_0.json # test/_ecdsa_fixtures/keygen_data_1.json # test/_ecdsa_fixtures/keygen_data_2.json # test/_ecdsa_fixtures/keygen_data_3.json # test/_ecdsa_fixtures/keygen_data_4.json # test/_eddsa_fixtures/keygen_data_0.json # test/_eddsa_fixtures/keygen_data_1.json # test/_eddsa_fixtures/keygen_data_2.json # test/_eddsa_fixtures/keygen_data_3.json # test/_eddsa_fixtures/keygen_data_4.json # test/config.go # tss/message.pb.go # tss/params.go # tss/party.go # tss/wire.go
81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
// 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 common
|
|
|
|
import (
|
|
"math/big"
|
|
)
|
|
|
|
func BigIntsToBytes(bigInts []*big.Int) [][]byte {
|
|
bzs := make([][]byte, len(bigInts))
|
|
for i := range bzs {
|
|
if bigInts[i] == nil {
|
|
continue
|
|
}
|
|
bzs[i] = bigInts[i].Bytes()
|
|
}
|
|
return bzs
|
|
}
|
|
|
|
func ByteSlicesToBigInts(bytes [][]byte) []*big.Int {
|
|
ints := make([]*big.Int, len(bytes))
|
|
for i := range ints {
|
|
ints[i] = new(big.Int).SetBytes(bytes[i])
|
|
}
|
|
return ints
|
|
}
|
|
|
|
// Returns true when the byte slice is non-nil and non-empty
|
|
func NonEmptyBytes(bz []byte, minByteLen ...int) bool {
|
|
if 0 == len(bz) {
|
|
return false
|
|
}
|
|
allZero := true
|
|
for _, b := range bz {
|
|
if b != 0 {
|
|
allZero = false
|
|
break
|
|
}
|
|
}
|
|
return !allZero &&
|
|
(len(minByteLen) == 0 || minByteLen[0] <= len(bz))
|
|
}
|
|
|
|
// Returns true when all of the slices in the multi-dimensional byte slice are non-nil and non-empty
|
|
func NonEmptyMultiBytes(bzs [][]byte, expectLen ...int) bool {
|
|
if len(bzs) == 0 {
|
|
return false
|
|
}
|
|
// variadic (optional) arg test
|
|
if 0 < len(expectLen) && expectLen[0] != len(bzs) {
|
|
return false
|
|
}
|
|
for _, bz := range bzs {
|
|
if !NonEmptyBytes(bz) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
// Returns true when at least one of the slices in the multi-dimensional byte slice are non-nil and non-empty
|
|
func AnyNonEmptyMultiByte(bzs [][]byte, expectLen ...int) bool {
|
|
if len(bzs) == 0 {
|
|
return false
|
|
}
|
|
// variadic (optional) arg test
|
|
if 0 < len(expectLen) && expectLen[0] != len(bzs) {
|
|
return false
|
|
}
|
|
for _, bz := range bzs {
|
|
if NonEmptyBytes(bz) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|