client/authority-discovery: Do not double encode signature (#5901)

Previously, when publishing ones address onto the DHT, the signature
signing those addresses would be SCALE encoded twice.

This commit removes the second encoding and adjusts the tests
to catch future regressions.
This commit is contained in:
Max Inden
2020-05-06 10:52:44 +02:00
committed by GitHub
parent 3860999ea3
commit d40bf3cf36
3 changed files with 69 additions and 66 deletions
@@ -58,7 +58,7 @@ use futures::task::{Context, Poll};
use futures::{Future, FutureExt, ready, Stream, StreamExt};
use futures_timer::Delay;
use codec::{Decode, Encode};
use codec::Decode;
use error::{Error, Result};
use log::{debug, error, log_enabled};
use prometheus_endpoint::{Counter, CounterVec, Gauge, Opts, U64, register};
@@ -262,16 +262,16 @@ where
)
.map_err(|_| Error::Signing)?;
for (sign_result, key) in signatures.iter().zip(keys) {
for (sign_result, key) in signatures.into_iter().zip(keys) {
let mut signed_addresses = vec![];
// sign_with_all returns Result<Signature, Error> signature
// is generated for a public key that is supported.
// Verify that all signatures exist for all provided keys.
let signature = sign_result.as_ref().map_err(|_| Error::MissingSignature(key.clone()))?;
let signature = sign_result.map_err(|_| Error::MissingSignature(key.clone()))?;
schema::SignedAuthorityAddresses {
addresses: serialized_addresses.clone(),
signature: Encode::encode(&signature),
signature,
}
.encode(&mut signed_addresses)
.map_err(Error::EncodingProto)?;