package common
|
|
|
|
import (
|
|
"math/big"
|
|
|
|
ethCommon "github.com/ethereum/go-ethereum/common"
|
|
"github.com/iden3/go-iden3-crypto/babyjub"
|
|
)
|
|
|
|
// SwapEndianness swaps the order of the bytes in the slice.
|
|
func SwapEndianness(b []byte) []byte {
|
|
o := make([]byte, len(b))
|
|
for i := range b {
|
|
o[len(b)-1-i] = b[i]
|
|
}
|
|
return o
|
|
}
|
|
|
|
// EthAddrToBigInt returns a *big.Int from a given ethereum common.Address.
|
|
func EthAddrToBigInt(a ethCommon.Address) *big.Int {
|
|
return new(big.Int).SetBytes(a.Bytes())
|
|
}
|
|
|
|
// BJJCompressedTo256BigInts returns a [256]*big.Int array with the bit
|
|
// representation of the babyjub.PublicKeyComp
|
|
func BJJCompressedTo256BigInts(pkComp babyjub.PublicKeyComp) [256]*big.Int {
|
|
var r [256]*big.Int
|
|
b := pkComp[:]
|
|
|
|
for i := 0; i < 256; i++ {
|
|
if b[i/8]&(1<<(i%8)) == 0 {
|
|
r[i] = big.NewInt(0)
|
|
} else {
|
|
r[i] = big.NewInt(1)
|
|
}
|
|
}
|
|
|
|
return r
|
|
}
|