keychain: add single key wrapper implementations
This commit is contained in:
2 files changed
+138
No files matched your search
@@ -0,0 +1,56 @@
|
||||
package keychain
|
||||
|
||||
import "github.com/btcsuite/btcd/btcec"
|
||||
|
||||
func NewPubKeyDigestSigner(keyDesc KeyDescriptor,
|
||||
signer DigestSignerRing) *PubKeyDigestSigner {
|
||||
|
||||
return &PubKeyDigestSigner{
|
||||
keyDesc: keyDesc,
|
||||
digestSigner: signer,
|
||||
}
|
||||
}
|
||||
|
||||
type PubKeyDigestSigner struct {
|
||||
keyDesc KeyDescriptor
|
||||
digestSigner DigestSignerRing
|
||||
}
|
||||
|
||||
func (p *PubKeyDigestSigner) PubKey() *btcec.PublicKey {
|
||||
return p.keyDesc.PubKey
|
||||
}
|
||||
|
||||
func (p *PubKeyDigestSigner) SignDigest(digest [32]byte) (*btcec.Signature,
|
||||
error) {
|
||||
|
||||
return p.digestSigner.SignDigest(p.keyDesc, digest)
|
||||
}
|
||||
|
||||
func (p *PubKeyDigestSigner) SignDigestCompact(digest [32]byte) ([]byte,
|
||||
error) {
|
||||
|
||||
return p.digestSigner.SignDigestCompact(p.keyDesc, digest)
|
||||
}
|
||||
|
||||
type PrivKeyDigestSigner struct {
|
||||
PrivKey *btcec.PrivateKey
|
||||
}
|
||||
|
||||
func (p *PrivKeyDigestSigner) PubKey() *btcec.PublicKey {
|
||||
return p.PrivKey.PubKey()
|
||||
}
|
||||
|
||||
func (p *PrivKeyDigestSigner) SignDigest(digest [32]byte) (*btcec.Signature,
|
||||
error) {
|
||||
|
||||
return p.PrivKey.Sign(digest[:])
|
||||
}
|
||||
|
||||
func (p *PrivKeyDigestSigner) SignDigestCompact(digest [32]byte) ([]byte,
|
||||
error) {
|
||||
|
||||
return btcec.SignCompact(btcec.S256(), p.PrivKey, digest[:], true)
|
||||
}
|
||||
|
||||
var _ SingleKeyDigestSigner = (*PubKeyDigestSigner)(nil)
|
||||
var _ SingleKeyDigestSigner = (*PrivKeyDigestSigner)(nil)
|
||||
Reference in new issue
Block a user