You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

50 lines
748 B

package blindsecp256k1
// WARNING: WIP code
import (
"crypto/rand"
"math/big"
"github.com/ethereum/go-ethereum/crypto/secp256k1"
)
type Point struct {
X *big.Int
Y *big.Int
}
var (
G *Point = &Point{
X: secp256k1.S256().Gx,
Y: secp256k1.S256().Gy,
}
N *big.Int = secp256k1.S256().N
)
func (p *Point) Add(q *Point) *Point {
x, y := secp256k1.S256().Add(p.X, p.Y, q.X, q.Y)
return &Point{
X: x,
Y: y,
}
}
func (p *Point) Mul(scalar *big.Int) *Point {
x, y := secp256k1.S256().ScalarMult(p.X, p.Y, scalar.Bytes())
return &Point{
X: x,
Y: y,
}
}
func newRand() *big.Int {
var b [32]byte
_, err := rand.Read(b[:])
if err != nil {
panic(err)
}
bi := new(big.Int).SetBytes(b[:])
return new(big.Int).Mod(bi, N)
}