From d37b8da0136ea12a5b41b23fa80267bf412cbc94 Mon Sep 17 00:00:00 2001 From: Marko Date: Tue, 5 May 2020 17:29:41 +0200 Subject: [PATCH] p2p: return err on `signChallenge` (#4795) * remove panic & todo in secret_connection --- CHANGELOG_PENDING.md | 1 + p2p/conn/secret_connection.go | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 907374f44..f9f64ca23 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -42,6 +42,7 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi - cleveldb: use cleveldb as db backend instead of goleveldb. - race: pass -race to go build and enable data race detection. - [state] [\#4781](https://github.com/tendermint/tendermint/pull/4781) Export `InitStateVersion` for the initial state version (@erikgrinaker) +- [p2p/conn] \#4795 Return err on `signChallenge()` instead of panic ### BUG FIXES: diff --git a/p2p/conn/secret_connection.go b/p2p/conn/secret_connection.go index c14f1bb5c..66867d462 100644 --- a/p2p/conn/secret_connection.go +++ b/p2p/conn/secret_connection.go @@ -150,7 +150,10 @@ func MakeSecretConnection(conn io.ReadWriteCloser, locPrivKey crypto.PrivKey) (* } // Sign the challenge bytes for authentication. - locSignature := signChallenge(&challenge, locPrivKey) + locSignature, err := signChallenge(&challenge, locPrivKey) + if err != nil { + return nil, err + } // Share (in secret) each other's pubkey & challenge signature authSigMsg, err := shareAuthSignature(sc, locPubKey, locSignature) @@ -377,13 +380,12 @@ func sort32(foo, bar *[32]byte) (lo, hi *[32]byte) { return } -func signChallenge(challenge *[32]byte, locPrivKey crypto.PrivKey) (signature []byte) { +func signChallenge(challenge *[32]byte, locPrivKey crypto.PrivKey) ([]byte, error) { signature, err := locPrivKey.Sign(challenge[:]) - // TODO(ismail): let signChallenge return an error instead if err != nil { - panic(err) + return nil, err } - return + return signature, nil } type authSigMessage struct {