1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
use block::{KeySchedule};
use u256::{u256};

pub struct Csprng {
	schedule: KeySchedule,
	prev: u256
}

impl Csprng {
	pub fn new(seed: u256) -> Self {
		Csprng {
			schedule: KeySchedule::new(seed),
			prev: seed
		}
	}

	pub fn next(&mut self) -> u256 {
		let tmp = self.prev;
		self.prev = self.schedule.encrypt(self.prev);
		tmp
	}
}