Browse Source

Add secp256k1 wrappers

pull/1/head
arnaucube 3 years ago
parent
commit
560c9030c1
1 changed files with 50 additions and 0 deletions
  1. +50
    -0
      blindsecp256k1.go

+ 50
- 0
blindsecp256k1.go

@ -0,0 +1,50 @@
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)
}

Loading…
Cancel
Save