OSDN Git Service

Merge pull request #41 from Bytom/dev
[bytom/vapor.git] / vendor / github.com / btcsuite / btcd / btcec / genprecomps.go
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 }