completed test

This commit is contained in:
2024-08-01 20:22:34 +01:00
commit cd73240cbd
4 changed files with 108 additions and 0 deletions

38
.gitignore vendored Normal file
View 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
View 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
View 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
View 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=