|  | // Copyright 2018 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // +build gccgo_examples | 
|  |  | 
|  | package ecdsa_test | 
|  |  | 
|  | import ( | 
|  | "crypto/ecdsa" | 
|  | "crypto/elliptic" | 
|  | "crypto/rand" | 
|  | "crypto/sha256" | 
|  | "fmt" | 
|  | ) | 
|  |  | 
|  | func Example() { | 
|  | privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) | 
|  | if err != nil { | 
|  | panic(err) | 
|  | } | 
|  |  | 
|  | msg := "hello, world" | 
|  | hash := sha256.Sum256([]byte(msg)) | 
|  |  | 
|  | sig, err := ecdsa.SignASN1(rand.Reader, privateKey, hash[:]) | 
|  | if err != nil { | 
|  | panic(err) | 
|  | } | 
|  | fmt.Printf("signature: %x\n", sig) | 
|  |  | 
|  | valid := ecdsa.VerifyASN1(&privateKey.PublicKey, hash[:], sig) | 
|  | fmt.Println("signature verified:", valid) | 
|  | } |