github.com/consideritdone/landslidecore@v0.0.0-20230718131026-a8b21c5cf8a7/crypto/secp256k1/btcec/genprecomps.go (about)

     1  // Copyright 2015 The btcsuite developers
     2  // Use of this source code is governed by an ISC
     3  // license that can be found in the LICENSE file.
     4  
     5  // This file is ignored during the regular build due to the following build tag.
     6  // It is called by go generate and used to automatically generate pre-computed
     7  // tables used to accelerate operations.
     8  // +build ignore
     9  
    10  package main
    11  
    12  import (
    13  	"bytes"
    14  	"compress/zlib"
    15  	"encoding/base64"
    16  	"fmt"
    17  	"log"
    18  	"os"
    19  
    20  	"github.com/btcsuite/btcd/btcec"
    21  )
    22  
    23  func main() {
    24  	fi, err := os.Create("secp256k1.go")
    25  	if err != nil {
    26  		log.Fatal(err)
    27  	}
    28  	defer fi.Close()
    29  
    30  	// Compress the serialized byte points.
    31  	serialized := btcec.S256().SerializedBytePoints()
    32  	var compressed bytes.Buffer
    33  	w := zlib.NewWriter(&compressed)
    34  	if _, err := w.Write(serialized); err != nil {
    35  		fmt.Println(err)
    36  		os.Exit(1)
    37  	}
    38  	w.Close()
    39  
    40  	// Encode the compressed byte points with base64.
    41  	encoded := make([]byte, base64.StdEncoding.EncodedLen(compressed.Len()))
    42  	base64.StdEncoding.Encode(encoded, compressed.Bytes())
    43  
    44  	fmt.Fprintln(fi, "// Copyright (c) 2015 The btcsuite developers")
    45  	fmt.Fprintln(fi, "// Use of this source code is governed by an ISC")
    46  	fmt.Fprintln(fi, "// license that can be found in the LICENSE file.")
    47  	fmt.Fprintln(fi)
    48  	fmt.Fprintln(fi, "package btcec")
    49  	fmt.Fprintln(fi)
    50  	fmt.Fprintln(fi, "// Auto-generated file (see genprecomps.go)")
    51  	fmt.Fprintln(fi, "// DO NOT EDIT")
    52  	fmt.Fprintln(fi)
    53  	fmt.Fprintf(fi, "var secp256k1BytePoints = %q\n", string(encoded))
    54  
    55  	a1, b1, a2, b2 := btcec.S256().EndomorphismVectors()
    56  	fmt.Println("The following values are the computed linearly " +
    57  		"independent vectors needed to make use of the secp256k1 " +
    58  		"endomorphism:")
    59  	fmt.Printf("a1: %x\n", a1)
    60  	fmt.Printf("b1: %x\n", b1)
    61  	fmt.Printf("a2: %x\n", a2)
    62  	fmt.Printf("b2: %x\n", b2)
    63  }