github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/swarm/storage/mru/resource_sign.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:50</date> 10 //</624342683581681664> 11 12 // 13 // 14 // 15 // 16 // 17 // 18 // 19 // 20 // 21 // 22 // 23 // 24 // 25 // 26 // 27 28 package mru 29 30 import ( 31 "crypto/ecdsa" 32 33 "github.com/ethereum/go-ethereum/common" 34 "github.com/ethereum/go-ethereum/crypto" 35 ) 36 37 const signatureLength = 65 38 39 // 40 type Signature [signatureLength]byte 41 42 // 43 type Signer interface { 44 Sign(common.Hash) (Signature, error) 45 Address() common.Address 46 } 47 48 // 49 // 50 type GenericSigner struct { 51 PrivKey *ecdsa.PrivateKey 52 address common.Address 53 } 54 55 // 56 func NewGenericSigner(privKey *ecdsa.PrivateKey) *GenericSigner { 57 return &GenericSigner{ 58 PrivKey: privKey, 59 address: crypto.PubkeyToAddress(privKey.PublicKey), 60 } 61 } 62 63 // 64 // 65 func (s *GenericSigner) Sign(data common.Hash) (signature Signature, err error) { 66 signaturebytes, err := crypto.Sign(data.Bytes(), s.PrivKey) 67 if err != nil { 68 return 69 } 70 copy(signature[:], signaturebytes) 71 return 72 } 73 74 // 75 func (s *GenericSigner) Address() common.Address { 76 return s.address 77 } 78