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