Change seed for retransmit to use blob signature (#4727)

* Switch seed for retransmit to use blob signature

* Use seed_len

* Use last bytes of signature as seed instead of first bytes
This commit is contained in:
carllin 2019-06-19 15:36:06 -07:00 committed by GitHub
parent a5279bb835
commit 61483c18ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 3 deletions

View File

@ -406,8 +406,9 @@ impl Blob {
pub fn seed(&self) -> [u8; 32] {
let mut seed = [0; 32];
seed[0..8].copy_from_slice(&self.index().to_le_bytes());
seed[8..16].copy_from_slice(&self.slot().to_le_bytes());
let seed_len = seed.len();
let signature_bytes = self.get_signature_bytes();
seed[0..seed_len].copy_from_slice(&signature_bytes[(signature_bytes.len() - seed_len)..]);
seed
}
@ -488,6 +489,10 @@ impl Blob {
self.set_data_size(new_size as u64);
}
pub fn get_signature_bytes(&self) -> &[u8] {
&self.data[SIGNATURE_RANGE]
}
pub fn store_packets<T: Borrow<Packet>>(&mut self, packets: &[T]) -> u64 {
let size = self.size();
let mut cursor = Cursor::new(&mut self.data_mut()[size..]);
@ -609,7 +614,7 @@ impl Signable for Blob {
}
fn get_signature(&self) -> Signature {
Signature::new(&self.data[SIGNATURE_RANGE])
Signature::new(self.get_signature_bytes())
}
fn set_signature(&mut self, signature: Signature) {