github.com/igggame/nebulas-go@v2.1.0+incompatible/crypto/keystore/secp256k1/publickey.go (about) 1 // Copyright (C) 2017 go-nebulas authors 2 // 3 // This file is part of the go-nebulas library. 4 // 5 // the go-nebulas library is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // the go-nebulas library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with the go-nebulas library. If not, see <http://www.gnu.org/licenses/>. 17 // 18 19 package secp256k1 20 21 import ( 22 "github.com/nebulasio/go-nebulas/crypto/keystore" 23 "github.com/nebulasio/go-nebulas/crypto/utils" 24 ) 25 26 // PublicKey ecdsa publickey 27 type PublicKey struct { 28 pub []byte 29 } 30 31 // NewPublicKey generate PublicKey 32 func NewPublicKey(pub []byte) *PublicKey { 33 ecdsaPub := &PublicKey{pub} 34 return ecdsaPub 35 } 36 37 // Algorithm algorithm name 38 func (k *PublicKey) Algorithm() keystore.Algorithm { 39 return keystore.SECP256K1 40 } 41 42 // Encoded encoded to byte 43 func (k *PublicKey) Encoded() ([]byte, error) { 44 return k.pub, nil 45 } 46 47 // Decode decode data to key 48 func (k *PublicKey) Decode(data []byte) error { 49 k.pub = data 50 return nil 51 } 52 53 // Clear clear key content 54 func (k *PublicKey) Clear() { 55 utils.ZeroBytes(k.pub) 56 } 57 58 // Verify verify ecdsa publickey 59 func (k *PublicKey) Verify(hash []byte, signature []byte) (bool, error) { 60 return Verify(hash, signature, k.pub) 61 }