diff --git a/core/src/packet.rs b/core/src/packet.rs index d61c9bff91..8c14b97180 100644 --- a/core/src/packet.rs +++ b/core/src/packet.rs @@ -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>(&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) {