MCPcopy Create free account
hub / github.com/ciphermodelabs/ciphercore / generate_one_batch

Method generate_one_batch

ciphercore-base/src/random.rs:205–231  ·  view source on GitHub ↗
(&mut self, aes: &mut Crypter)

Source from the content-addressed store, hash-verified

203 }
204
205 fn generate_one_batch(&mut self, aes: &mut Crypter) -> Result<()> {
206 let mut i_bytes = vec![0u8; self.next_buffer_size];
207 for i in (0..i_bytes.len()).step_by(16) {
208 i_bytes[i..i + 16].copy_from_slice(&self.input.to_le_bytes());
209 self.input = self.input.wrapping_add(1);
210 }
211 let buffer_len = self.next_buffer_size + Cipher::aes_128_cbc().block_size();
212 if buffer_len != self.buffer.len() {
213 self.buffer.resize(buffer_len, 0);
214 }
215 let count = aes
216 .update(&i_bytes, &mut self.buffer)
217 .map_err(|_| runtime_error!("Crypter didn't manage to update"))?;
218 // finalization of Crypter is unnecessary since padding is turned off
219 // check here https://www.openssl.org/docs/manmaster/man3/EVP_CipherUpdate.html
220 if count != self.next_buffer_size {
221 return Err(runtime_error!(
222 "AES encryption returned a wrong number of bytes"
223 ));
224 }
225 self.current_buffer_size = self.next_buffer_size;
226 if self.next_buffer_size < BUFFER_SIZE {
227 self.next_buffer_size = usize::min(BUFFER_SIZE, self.next_buffer_size * 2);
228 }
229 self.next_byte = 0;
230 Ok(())
231 }
232
233 fn generate_random_bytes(&mut self, aes: &mut Crypter, n: u64) -> Result<Vec<u8>> {
234 let mut bytes = vec![0u8; n as usize];

Callers 2

fill_random_bytesMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected