+ fn get_ephemeral_key(&self) -> SecretKey {
+ let mut ephemeral_hash = self.ephemeral_key_midstate.clone();
+ let low = self.peer_counter_low.fetch_add(1, Ordering::AcqRel);
+ let high = if low == 0 {
+ self.peer_counter_high.fetch_add(1, Ordering::AcqRel)
+ } else {
+ self.peer_counter_high.load(Ordering::Acquire)
+ };
+ ephemeral_hash.input(&byte_utils::le64_to_array(low as u64));
+ ephemeral_hash.input(&byte_utils::le64_to_array(high as u64));
+ SecretKey::from_slice(&Sha256::from_engine(ephemeral_hash).into_inner()).expect("You broke SHA-256!")
+ }
+