OSDN Git Service

Wallet store test (#312)
[bytom/vapor.git] / vendor / github.com / tendermint / go-crypto / signature.go
1 package crypto
2
3 import (
4         "github.com/tendermint/go-wire"
5         data "github.com/tendermint/go-wire/data"
6 )
7
8 func SignatureFromBytes(sigBytes []byte) (sig Signature, err error) {
9         err = wire.ReadBinaryBytes(sigBytes, &sig)
10         return
11 }
12
13 //----------------------------------------
14
15 // DO NOT USE THIS INTERFACE.
16 // You probably want to use Signature.
17 // +gen wrapper:"Signature,Impl[SignatureEd25519,SignatureSecp256k1],ed25519,secp256k1"
18 type SignatureInner interface {
19         Bytes() []byte
20         Wrap() Signature
21 }
22
23 //-------------------------------------
24
25 var _ SignatureInner = SignatureEd25519{}
26
27 // Implements Signature
28 type SignatureEd25519 [64]byte
29
30 func (sig SignatureEd25519) Bytes() []byte {
31         return wire.BinaryBytes(Signature{sig})
32 }
33
34 func (sig SignatureEd25519) MarshalJSON() ([]byte, error) {
35         return data.Encoder.Marshal(sig[:])
36 }
37
38 func (sig *SignatureEd25519) UnmarshalJSON(enc []byte) error {
39         var ref []byte
40         err := data.Encoder.Unmarshal(&ref, enc)
41         copy(sig[:], ref)
42         return err
43 }