openzeppelin_relayer/utils/
key.rs

1use rand::RngCore;
2
3pub fn unsafe_generate_random_private_key() -> Vec<u8> {
4    let mut rng = rand::rng();
5    let mut pk = vec![0u8; 32];
6    rng.fill_bytes(pk.as_mut_slice());
7    pk
8}
9
10#[cfg(test)]
11mod tests {
12    use super::*;
13    use std::collections::HashSet;
14
15    #[test]
16    fn test_private_key_length() {
17        let pk = unsafe_generate_random_private_key();
18        assert_eq!(pk.len(), 32, "Private key should be 32 bytes");
19    }
20
21    #[test]
22    fn test_private_key_uniqueness() {
23        let mut keys = HashSet::new();
24        for _ in 0..100 {
25            let pk = unsafe_generate_random_private_key();
26            assert!(keys.insert(pk), "Generated private key should be unique");
27        }
28    }
29
30    #[test]
31    fn test_private_key_not_zero() {
32        let pk = unsafe_generate_random_private_key();
33        assert!(
34            !pk.iter().all(|&byte| byte == 0),
35            "Private key should not be all zeros"
36        );
37    }
38}