mirror of https://github.com/ethereum/go-ethereum
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.
63 lines
1.8 KiB
63 lines
1.8 KiB
// Copyright 2015 The btcsuite developers
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// This file is ignored during the regular build due to the following build tag.
|
|
// It is called by go generate and used to automatically generate pre-computed
|
|
// tables used to accelerate operations.
|
|
// +build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/zlib"
|
|
"encoding/base64"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/btcsuite/btcd/btcec"
|
|
)
|
|
|
|
func main() {
|
|
fi, err := os.Create("secp256k1.go")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer fi.Close()
|
|
|
|
// Compress the serialized byte points.
|
|
serialized := btcec.S256().SerializedBytePoints()
|
|
var compressed bytes.Buffer
|
|
w := zlib.NewWriter(&compressed)
|
|
if _, err := w.Write(serialized); err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(1)
|
|
}
|
|
w.Close()
|
|
|
|
// Encode the compressed byte points with base64.
|
|
encoded := make([]byte, base64.StdEncoding.EncodedLen(compressed.Len()))
|
|
base64.StdEncoding.Encode(encoded, compressed.Bytes())
|
|
|
|
fmt.Fprintln(fi, "// Copyright (c) 2015 The btcsuite developers")
|
|
fmt.Fprintln(fi, "// Use of this source code is governed by an ISC")
|
|
fmt.Fprintln(fi, "// license that can be found in the LICENSE file.")
|
|
fmt.Fprintln(fi)
|
|
fmt.Fprintln(fi, "package btcec")
|
|
fmt.Fprintln(fi)
|
|
fmt.Fprintln(fi, "// Auto-generated file (see genprecomps.go)")
|
|
fmt.Fprintln(fi, "// DO NOT EDIT")
|
|
fmt.Fprintln(fi)
|
|
fmt.Fprintf(fi, "var secp256k1BytePoints = %q\n", string(encoded))
|
|
|
|
a1, b1, a2, b2 := btcec.S256().EndomorphismVectors()
|
|
fmt.Println("The following values are the computed linearly " +
|
|
"independent vectors needed to make use of the secp256k1 " +
|
|
"endomorphism:")
|
|
fmt.Printf("a1: %x\n", a1)
|
|
fmt.Printf("b1: %x\n", b1)
|
|
fmt.Printf("a2: %x\n", a2)
|
|
fmt.Printf("b2: %x\n", b2)
|
|
}
|
|
|