completed test
This commit is contained in:
38
.gitignore
vendored
Normal file
38
.gitignore
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
# Allowlisting gitignore template for GO projects prevents us
|
||||
# from adding various unwanted local files, such as generated
|
||||
# files, developer configurations or IDE-specific files etc.
|
||||
#
|
||||
# Recommended: Go.AllowList.gitignore
|
||||
|
||||
# Ignore everything
|
||||
*
|
||||
/.idea/
|
||||
# But not these files...
|
||||
!/.gitignore
|
||||
!*.go
|
||||
!go.sum
|
||||
!go.mod
|
||||
!README.md
|
||||
!LICENSE
|
||||
!*.sh
|
||||
!Makefile
|
||||
!*.json
|
||||
!*.pdf
|
||||
!*.csv
|
||||
!*.py
|
||||
!*.mediawiki
|
||||
!*.did
|
||||
!*.rs
|
||||
!*.toml
|
||||
!*.png
|
||||
!*.svg
|
||||
!*.md
|
||||
!*.txt
|
||||
!*.jsonl
|
||||
!*.bin
|
||||
!*.tmpl
|
||||
!.gitmodules
|
||||
!*.yml
|
||||
!*.yaml
|
||||
# ...even if they are in subdirectories
|
||||
!*/
|
||||
56
ecdh_test.go
Normal file
56
ecdh_test.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package ecdhtest
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/btcsuite/btcd/btcec/v2"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1/v4"
|
||||
)
|
||||
|
||||
func TestECDHWrongOddness(t *testing.T) {
|
||||
var err error
|
||||
var sk1, sk2 *btcec.PrivateKey
|
||||
var pk1, pk2 *btcec.PublicKey
|
||||
var pkb1, pkb2, mpkb1, mpkb2, sb1, sb2 []byte
|
||||
var mpk1, mpk2 *btcec.PublicKey
|
||||
for _ = range 100 {
|
||||
if sk1, err = btcec.NewPrivateKey(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
pk1 = sk1.PubKey()
|
||||
pkb1 = pk1.SerializeCompressed()
|
||||
if sk2, err = btcec.NewPrivateKey(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
pk2 = sk2.PubKey()
|
||||
pkb2 = pk2.SerializeCompressed()
|
||||
if mpk1, err = secp256k1.ParsePubKey(append([]byte{0x02}, pkb1[1:]...)); err != nil {
|
||||
return
|
||||
}
|
||||
if mpk2, err = secp256k1.ParsePubKey(append([]byte{0x02}, pkb2[1:]...)); err != nil {
|
||||
return
|
||||
}
|
||||
mpkb1 = mpk1.SerializeCompressed()
|
||||
mpkb2 = mpk2.SerializeCompressed()
|
||||
sb1 = sk1.Serialize()
|
||||
sb2 = sk2.Serialize()
|
||||
ecdhab := btcec.GenerateSharedSecret(sk1, pk2)
|
||||
ecdhba := btcec.GenerateSharedSecret(sk2, pk1)
|
||||
ecdhbA := btcec.GenerateSharedSecret(sk1, mpk2)
|
||||
ecdhaB := btcec.GenerateSharedSecret(sk2, mpk1)
|
||||
// if !bytes.Equal(ecdhab, ecdhba) || !bytes.Equal(ecdhaB, ecdhbA) {
|
||||
if pkb1[0] == 3 || pkb2[0] == 3 {
|
||||
t.Logf(
|
||||
"\nsa %0x | pa %0x = ECDHab %0x"+
|
||||
"\nsb %0x | pb %0x = ECDHba %0x"+
|
||||
"\nsa %0x | pA %0x = ECDHaB %0x"+
|
||||
"\nsb %0x | pB %0x = ECDHbA %0x",
|
||||
sb1, pkb1, ecdhab,
|
||||
sb2, pkb2, ecdhba,
|
||||
sb1, mpkb1, ecdhaB,
|
||||
sb2, mpkb2, ecdhbA,
|
||||
)
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
7
go.mod
Normal file
7
go.mod
Normal file
@@ -0,0 +1,7 @@
|
||||
module github.com/mleku/ecdhtest
|
||||
|
||||
go 1.23rc2
|
||||
|
||||
require github.com/btcsuite/btcd/btcec/v2 v2.3.4
|
||||
|
||||
require github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
|
||||
7
go.sum
Normal file
7
go.sum
Normal file
@@ -0,0 +1,7 @@
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
|
||||
Reference in New Issue
Block a user