mirror of
https://github.com/FlipsideCrypto/dcrd.git
synced 2026-02-06 10:56:47 +00:00
multi: Use dcrec/edwards/v2 module.
This updates the following modules to use the dcrec/edwards/v2 module: - chaincfg/v2 - dcrutil/v2 - txscript/v2
This commit is contained in:
parent
6e647f731f
commit
ee4a0e2e2a
@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2015-2016 The Decred developers
|
||||
// Copyright (c) 2015-2019 The Decred developers
|
||||
// Use of this source code is governed by an ISC
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
@ -9,7 +9,7 @@ import (
|
||||
"io"
|
||||
"math/big"
|
||||
|
||||
"github.com/decred/dcrd/dcrec/edwards"
|
||||
"github.com/decred/dcrd/dcrec/edwards/v2"
|
||||
)
|
||||
|
||||
type edwardsDSA struct {
|
||||
@ -184,14 +184,14 @@ func newEdwardsDSA() DSA {
|
||||
|
||||
// Private keys
|
||||
newPrivateKey: func(d *big.Int) PrivateKey {
|
||||
pk := edwards.NewPrivateKey(edwardsCurve, d)
|
||||
pk := edwards.NewPrivateKey(d)
|
||||
if pk != nil {
|
||||
return PrivateKey(*pk)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
privKeyFromBytes: func(pk []byte) (PrivateKey, PublicKey) {
|
||||
priv, pub := edwards.PrivKeyFromBytes(edwardsCurve, pk)
|
||||
priv, pub := edwards.PrivKeyFromBytes(pk)
|
||||
if priv == nil {
|
||||
return nil, nil
|
||||
}
|
||||
@ -203,7 +203,7 @@ func newEdwardsDSA() DSA {
|
||||
return tpriv, tpub
|
||||
},
|
||||
privKeyFromScalar: func(pk []byte) (PrivateKey, PublicKey) {
|
||||
priv, pub, err := edwards.PrivKeyFromScalar(edwardsCurve, pk)
|
||||
priv, pub, err := edwards.PrivKeyFromScalar(pk)
|
||||
if err != nil {
|
||||
return nil, nil
|
||||
}
|
||||
@ -223,12 +223,12 @@ func newEdwardsDSA() DSA {
|
||||
|
||||
// Public keys
|
||||
newPublicKey: func(x *big.Int, y *big.Int) PublicKey {
|
||||
pk := edwards.NewPublicKey(edwardsCurve, x, y)
|
||||
pk := edwards.NewPublicKey(x, y)
|
||||
tpk := PublicKey(*pk)
|
||||
return tpk
|
||||
},
|
||||
parsePubKey: func(pubKeyStr []byte) (PublicKey, error) {
|
||||
pk, err := edwards.ParsePubKey(edwardsCurve, pubKeyStr)
|
||||
pk, err := edwards.ParsePubKey(pubKeyStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -252,7 +252,7 @@ func newEdwardsDSA() DSA {
|
||||
return ts
|
||||
},
|
||||
parseDERSignature: func(sigStr []byte) (Signature, error) {
|
||||
sig, err := edwards.ParseDERSignature(edwardsCurve, sigStr)
|
||||
sig, err := edwards.ParseDERSignature(sigStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -260,7 +260,7 @@ func newEdwardsDSA() DSA {
|
||||
return ts, err
|
||||
},
|
||||
parseSignature: func(sigStr []byte) (Signature, error) {
|
||||
sig, err := edwards.ParseSignature(edwardsCurve, sigStr)
|
||||
sig, err := edwards.ParseSignature(sigStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -285,7 +285,7 @@ func newEdwardsDSA() DSA {
|
||||
if !ok {
|
||||
return nil, nil, errors.New("wrong type")
|
||||
}
|
||||
r, s, err = edwards.Sign(edwardsCurve, &epriv, hash)
|
||||
r, s, err = edwards.Sign(&epriv, hash)
|
||||
return
|
||||
},
|
||||
verify: func(pub PublicKey, hash []byte, r, s *big.Int) bool {
|
||||
@ -301,25 +301,23 @@ func newEdwardsDSA() DSA {
|
||||
|
||||
// Symmetric cipher encryption
|
||||
generateSharedSecret: func(privkey []byte, x, y *big.Int) []byte {
|
||||
privKeyLocal, _, err := edwards.PrivKeyFromScalar(edwardsCurve,
|
||||
privkey)
|
||||
privKeyLocal, _, err := edwards.PrivKeyFromScalar(privkey)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
pubkey := edwards.NewPublicKey(edwardsCurve, x, y)
|
||||
pubkey := edwards.NewPublicKey(x, y)
|
||||
return edwards.GenerateSharedSecret(privKeyLocal, pubkey)
|
||||
},
|
||||
encrypt: func(x, y *big.Int, in []byte) ([]byte, error) {
|
||||
pubkey := edwards.NewPublicKey(edwardsCurve, x, y)
|
||||
return edwards.Encrypt(edwardsCurve, pubkey, in)
|
||||
pubkey := edwards.NewPublicKey(x, y)
|
||||
return edwards.Encrypt(pubkey, in)
|
||||
},
|
||||
decrypt: func(privkey []byte, in []byte) ([]byte, error) {
|
||||
privKeyLocal, _, err := edwards.PrivKeyFromScalar(edwardsCurve,
|
||||
privkey)
|
||||
privKeyLocal, _, err := edwards.PrivKeyFromScalar(privkey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return edwards.Decrypt(edwardsCurve, privKeyLocal, in)
|
||||
return edwards.Decrypt(privKeyLocal, in)
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ go 1.11
|
||||
require (
|
||||
github.com/davecgh/go-spew v1.1.1
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.2
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0
|
||||
github.com/decred/dcrd/wire v1.2.0
|
||||
)
|
||||
|
||||
@ -12,8 +12,8 @@ github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyL
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0 h1:UDcPNzclKiJlWqV3x1Fl8xMCJrolo4PB4X9t8LwKDWU=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0/go.mod h1:HblVh1OfMt7xSxUL1ufjToaEvpbjpWvvTAUx4yem8BI=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 h1:E5KszxGgpjpmW8vN811G6rBAZg0/S/DftdGqN4FW5x4=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0/go.mod h1:d0H8xGMWbiIQP7gN3v2rByWUcuZPm9YsgmnfoxgbINc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 h1:3GIJYXQDAKpLEFriGFN8SbSffak10UXHGdIcFaMPykY=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0/go.mod h1:3s92l0paYkZoIHuj4X93Teg/HB7eGM9x/zokGw+u4mY=
|
||||
github.com/decred/dcrd/wire v1.2.0 h1:HqJVB7vcklIguzFWgRXw/WYCQ9cD3bUC5TKj53i1Hng=
|
||||
|
||||
@ -13,7 +13,7 @@ import (
|
||||
"github.com/decred/dcrd/chaincfg/v2/chainec"
|
||||
"github.com/decred/dcrd/crypto/ripemd160"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrec/edwards"
|
||||
"github.com/decred/dcrd/dcrec/edwards/v2"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1/v2"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1/v2/schnorr"
|
||||
)
|
||||
@ -480,7 +480,7 @@ type AddressEdwardsPubKey struct {
|
||||
// pay-to-pubkey address, using an Ed25519 pubkey. The serializedPubKey
|
||||
// parameter must be a valid 32 byte serialized public key.
|
||||
func NewAddressEdwardsPubKey(serializedPubKey []byte, net AddressParams) (*AddressEdwardsPubKey, error) {
|
||||
pubKey, err := edwards.ParsePubKey(edwards.Edwards(), serializedPubKey)
|
||||
pubKey, err := edwards.ParsePubKey(serializedPubKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ require (
|
||||
github.com/decred/dcrd/chaincfg/v2 v2.0.2
|
||||
github.com/decred/dcrd/crypto/ripemd160 v1.0.0
|
||||
github.com/decred/dcrd/dcrec v1.0.0
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0
|
||||
github.com/decred/dcrd/wire v1.2.0
|
||||
)
|
||||
|
||||
@ -22,6 +22,8 @@ github.com/decred/dcrd/dcrec v1.0.0 h1:W+z6Es+Rai3MXYVoPAxYr5U1DGis0Co33scJ6uH2J
|
||||
github.com/decred/dcrd/dcrec v1.0.0/go.mod h1:HIaqbEJQ+PDzQcORxnqen5/V1FR3B4VpIfmePklt8Q8=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0 h1:UDcPNzclKiJlWqV3x1Fl8xMCJrolo4PB4X9t8LwKDWU=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0/go.mod h1:HblVh1OfMt7xSxUL1ufjToaEvpbjpWvvTAUx4yem8BI=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 h1:E5KszxGgpjpmW8vN811G6rBAZg0/S/DftdGqN4FW5x4=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0/go.mod h1:d0H8xGMWbiIQP7gN3v2rByWUcuZPm9YsgmnfoxgbINc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.1 h1:EFWVd1p0t0Y5tnsm/dJujgV0ORogRJ6vo7CMAjLseAc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.1/go.mod h1:lhu4eZFSfTJWUnR3CFRcpD+Vta0KUAqnhTsTksHXgy0=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 h1:3GIJYXQDAKpLEFriGFN8SbSffak10UXHGdIcFaMPykY=
|
||||
|
||||
@ -14,7 +14,7 @@ import (
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
"github.com/decred/dcrd/chaincfg/v2/chainec"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrec/edwards"
|
||||
"github.com/decred/dcrd/dcrec/edwards/v2"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1/v2"
|
||||
)
|
||||
|
||||
@ -105,7 +105,7 @@ func DecodeWIF(wif string, net [2]byte) (*WIF, error) {
|
||||
ecType = dcrec.STEcdsaSecp256k1
|
||||
case dcrec.STEd25519:
|
||||
privKeyBytes := decoded[3 : 3+edwards.PrivScalarSize]
|
||||
privKey, _, _ = edwards.PrivKeyFromScalar(edwards.Edwards(), privKeyBytes)
|
||||
privKey, _, _ = edwards.PrivKeyFromScalar(privKeyBytes)
|
||||
ecType = dcrec.STEd25519
|
||||
case dcrec.STSchnorrSecp256k1:
|
||||
privKeyBytes := decoded[3 : 3+secp256k1.PrivKeyBytesLen]
|
||||
@ -146,7 +146,7 @@ func (w *WIF) SerializePubKey() []byte {
|
||||
case dcrec.STEcdsaSecp256k1:
|
||||
pk = secp256k1.NewPublicKey(pkx, pky)
|
||||
case dcrec.STEd25519:
|
||||
pk = edwards.NewPublicKey(edwards.Edwards(), pkx, pky)
|
||||
pk = edwards.NewPublicKey(pkx, pky)
|
||||
case dcrec.STSchnorrSecp256k1:
|
||||
pk = secp256k1.NewPublicKey(pkx, pky)
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ import (
|
||||
|
||||
"github.com/decred/dcrd/chaincfg/v2/chainec"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrec/edwards"
|
||||
"github.com/decred/dcrd/dcrec/edwards/v2"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1/v2"
|
||||
)
|
||||
|
||||
@ -40,14 +40,14 @@ func TestEncodeDecodeWIF(t *testing.T) {
|
||||
0x4e, 0x39, 0x6f, 0xb5, 0xdc, 0x29, 0x5f, 0xe9,
|
||||
0x94, 0xb9, 0x67, 0x89, 0xb2, 0x1a, 0x03, 0x98})
|
||||
case dcrec.STEd25519:
|
||||
priv1, _, _ = edwards.PrivKeyFromScalar(edwards.Edwards(),
|
||||
priv1, _, _ = edwards.PrivKeyFromScalar(
|
||||
[]byte{
|
||||
0x0c, 0x28, 0xfc, 0xa3, 0x86, 0xc7, 0xa2, 0x27,
|
||||
0x60, 0x0b, 0x2f, 0xe5, 0x0b, 0x7c, 0xae, 0x11,
|
||||
0xec, 0x86, 0xd3, 0xbf, 0x1f, 0xbe, 0x47, 0x1b,
|
||||
0xe8, 0x98, 0x27, 0xe1, 0x9d, 0x72, 0xaa, 0x1d})
|
||||
|
||||
priv2, _, _ = edwards.PrivKeyFromScalar(edwards.Edwards(),
|
||||
priv2, _, _ = edwards.PrivKeyFromScalar(
|
||||
[]byte{
|
||||
0x0c, 0xa3, 0x5a, 0x14, 0x88, 0xfb, 0x97, 0xb6,
|
||||
0xeb, 0x3f, 0xe6, 0xe9, 0xef, 0x2a, 0x25, 0x81,
|
||||
|
||||
2
go.sum
2
go.sum
@ -23,6 +23,8 @@ github.com/decred/dcrd/crypto/ripemd160 v1.0.0 h1:MciTnR4NfBqDFRFjFkrn8WPLP4Vo7t
|
||||
github.com/decred/dcrd/crypto/ripemd160 v1.0.0/go.mod h1:F0H8cjIuWTRoixr/LM3REB8obcWkmYx0gbxpQWR8RPg=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0 h1:UDcPNzclKiJlWqV3x1Fl8xMCJrolo4PB4X9t8LwKDWU=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0/go.mod h1:HblVh1OfMt7xSxUL1ufjToaEvpbjpWvvTAUx4yem8BI=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 h1:E5KszxGgpjpmW8vN811G6rBAZg0/S/DftdGqN4FW5x4=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0/go.mod h1:d0H8xGMWbiIQP7gN3v2rByWUcuZPm9YsgmnfoxgbINc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.1/go.mod h1:lhu4eZFSfTJWUnR3CFRcpD+Vta0KUAqnhTsTksHXgy0=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.2 h1:awk7sYJ4pGWmtkiGHFfctztJjHMKGLV8jctGQhAbKe0=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.2/go.mod h1:CHTUIVfmDDd0KFVFpNX1pFVCBUegxW387nN0IGwNKR0=
|
||||
|
||||
@ -7,7 +7,7 @@ require (
|
||||
github.com/decred/dcrd/chaincfg/v2 v2.0.2
|
||||
github.com/decred/dcrd/crypto/ripemd160 v1.0.0
|
||||
github.com/decred/dcrd/dcrec v1.0.0
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0
|
||||
github.com/decred/dcrd/dcrutil/v2 v2.0.0
|
||||
github.com/decred/dcrd/wire v1.2.0
|
||||
|
||||
@ -20,6 +20,8 @@ github.com/decred/dcrd/dcrec v1.0.0 h1:W+z6Es+Rai3MXYVoPAxYr5U1DGis0Co33scJ6uH2J
|
||||
github.com/decred/dcrd/dcrec v1.0.0/go.mod h1:HIaqbEJQ+PDzQcORxnqen5/V1FR3B4VpIfmePklt8Q8=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0 h1:UDcPNzclKiJlWqV3x1Fl8xMCJrolo4PB4X9t8LwKDWU=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0/go.mod h1:HblVh1OfMt7xSxUL1ufjToaEvpbjpWvvTAUx4yem8BI=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 h1:E5KszxGgpjpmW8vN811G6rBAZg0/S/DftdGqN4FW5x4=
|
||||
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0/go.mod h1:d0H8xGMWbiIQP7gN3v2rByWUcuZPm9YsgmnfoxgbINc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.2 h1:awk7sYJ4pGWmtkiGHFfctztJjHMKGLV8jctGQhAbKe0=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.2/go.mod h1:CHTUIVfmDDd0KFVFpNX1pFVCBUegxW387nN0IGwNKR0=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.0 h1:3GIJYXQDAKpLEFriGFN8SbSffak10UXHGdIcFaMPykY=
|
||||
|
||||
@ -17,7 +17,7 @@ import (
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
"github.com/decred/dcrd/crypto/ripemd160"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrec/edwards"
|
||||
"github.com/decred/dcrd/dcrec/edwards/v2"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1/v2"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1/v2/schnorr"
|
||||
"github.com/decred/dcrd/wire"
|
||||
@ -2849,12 +2849,12 @@ func opcodeCheckSigAlt(op *opcode, data []byte, vm *Engine) error {
|
||||
// Get the public key from bytes.
|
||||
switch sigType {
|
||||
case dcrec.STEd25519:
|
||||
pubKeyEd, err := edwards.ParsePubKey(edwards.Edwards(), pkBytes)
|
||||
pubKeyEd, err := edwards.ParsePubKey(pkBytes)
|
||||
if err != nil {
|
||||
vm.dstack.PushBool(false)
|
||||
return nil
|
||||
}
|
||||
sigEd, err := edwards.ParseSignature(edwards.Edwards(), sigBytes)
|
||||
sigEd, err := edwards.ParseSignature(sigBytes)
|
||||
if err != nil {
|
||||
vm.dstack.PushBool(false)
|
||||
return nil
|
||||
|
||||
Loading…
Reference in New Issue
Block a user