wasmium_random/wordlists/
random_generator.rs1use crate::{WasmiumRandom, BIP39_WORDLIST, EFF_LARGE, EFF_SHORT};
2use nanorand::{ChaCha8, Rng, WyRand};
3
4impl WasmiumRandom {
5 pub fn secure_bip39() -> [&'static str; 6] {
7 let mut rng = ChaCha8::new();
8 let mut random = 0_u16;
9 let mut random_str: [&'static str; 6] = ["TRY_GENERATING_SOMETHING_RANDOM"; 6];
10
11 (0..6).for_each(|index| {
12 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
13 random_str[index as usize] = BIP39_WORDLIST[random as usize];
14 });
15
16 random_str
17 }
18
19 pub fn secure_bip39_8words() -> [&'static str; 8] {
21 let mut rng = ChaCha8::new();
22 let mut random = 0_u16;
23 let mut random_str: [&'static str; 8] = ["TRY_GENERATING_SOMETHING_RANDOM"; 8];
24
25 (0..8).for_each(|index| {
26 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
27 random_str[index as usize] = BIP39_WORDLIST[random as usize];
28 });
29
30 random_str
31 }
32
33 pub fn secure_bip39_12words() -> [&'static str; 12] {
35 let mut rng = ChaCha8::new();
36 let mut random = 0_u16;
37 let mut random_str: [&'static str; 12] = ["TRY_GENERATING_SOMETHING_RANDOM"; 12];
38
39 (0..12).for_each(|index| {
40 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
41 random_str[index as usize] = BIP39_WORDLIST[random as usize];
42 });
43
44 random_str
45 }
46
47 pub fn secure_bip39_16words() -> [&'static str; 16] {
49 let mut rng = ChaCha8::new();
50 let mut random = 0_u16;
51 let mut random_str: [&'static str; 16] = ["TRY_GENERATING_SOMETHING_RANDOM"; 16];
52
53 (0..16).for_each(|index| {
54 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
55 random_str[index as usize] = BIP39_WORDLIST[random as usize];
56 });
57
58 random_str
59 }
60
61 pub fn secure_eff_shortlist() -> [&'static str; 6] {
63 let mut rng = ChaCha8::new();
64 let mut random = 0_u16;
65 let mut random_str: [&'static str; 6] = ["TRY_GENERATING_SOMETHING_RANDOM"; 6];
66
67 (0..6).for_each(|index| {
68 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
69 random_str[index as usize] = EFF_SHORT[random as usize];
70 });
71
72 random_str
73 }
74
75 pub fn secure_eff_shortlist_8words() -> [&'static str; 8] {
77 let mut rng = ChaCha8::new();
78 let mut random = 0_u16;
79 let mut random_str: [&'static str; 8] = ["TRY_GENERATING_SOMETHING_RANDOM"; 8];
80
81 (0..8).for_each(|index| {
82 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
83 random_str[index as usize] = EFF_SHORT[random as usize];
84 });
85
86 random_str
87 }
88
89 pub fn secure_eff_shortlist_12words() -> [&'static str; 12] {
91 let mut rng = ChaCha8::new();
92 let mut random = 0_u16;
93 let mut random_str: [&'static str; 12] = ["TRY_GENERATING_SOMETHING_RANDOM"; 12];
94
95 (0..12).for_each(|index| {
96 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
97 random_str[index as usize] = EFF_SHORT[random as usize];
98 });
99
100 random_str
101 }
102
103 pub fn secure_eff_shortlist_16words() -> [&'static str; 16] {
105 let mut rng = ChaCha8::new();
106 let mut random = 0_u16;
107 let mut random_str: [&'static str; 16] = ["TRY_GENERATING_SOMETHING_RANDOM"; 16];
108
109 (0..16).for_each(|index| {
110 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
111 random_str[index as usize] = EFF_SHORT[random as usize];
112 });
113
114 random_str
115 }
116
117 pub fn secure_eff_largelist() -> [&'static str; 4] {
119 let mut rng = ChaCha8::new();
120 let mut random = 0_u16;
121 let mut random_str: [&'static str; 4] = ["TRY_GENERATING_SOMETHING_RANDOM"; 4];
122
123 (0..4).for_each(|index| {
124 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
125 random_str[index as usize] = EFF_LARGE[random as usize];
126 });
127
128 random_str
129 }
130
131 pub fn secure_eff_largelist_6words() -> [&'static str; 6] {
133 let mut rng = ChaCha8::new();
134 let mut random = 0_u16;
135 let mut random_str: [&'static str; 6] = ["TRY_GENERATING_SOMETHING_RANDOM"; 6];
136
137 (0..6).for_each(|index| {
138 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
139 random_str[index as usize] = EFF_LARGE[random as usize];
140 });
141
142 random_str
143 }
144
145 pub fn secure_eff_largelist_8words() -> [&'static str; 8] {
147 let mut rng = ChaCha8::new();
148 let mut random = 0_u16;
149 let mut random_str: [&'static str; 8] = ["TRY_GENERATING_SOMETHING_RANDOM"; 8];
150
151 (0..8).for_each(|index| {
152 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
153 random_str[index as usize] = EFF_LARGE[random as usize];
154 });
155
156 random_str
157 }
158
159 pub fn secure_eff_largelist_12words() -> [&'static str; 12] {
161 let mut rng = ChaCha8::new();
162 let mut random = 0_u16;
163 let mut random_str: [&'static str; 12] = ["TRY_GENERATING_SOMETHING_RANDOM"; 12];
164
165 (0..12).for_each(|index| {
166 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
167 random_str[index as usize] = EFF_LARGE[random as usize];
168 });
169
170 random_str
171 }
172
173 pub fn secure_eff_largelist_16words() -> [&'static str; 16] {
175 let mut rng = ChaCha8::new();
176 let mut random = 0_u16;
177 let mut random_str: [&'static str; 16] = ["TRY_GENERATING_SOMETHING_RANDOM"; 16];
178
179 (0..16).for_each(|index| {
180 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
181 random_str[index as usize] = EFF_LARGE[random as usize];
182 });
183
184 random_str
185 }
186
187 pub fn wyrand_bip39() -> [&'static str; 6] {
189 let mut rng = WyRand::new();
190 let mut random = 0_u16;
191 let mut random_str: [&'static str; 6] = ["TRY_GENERATING_SOMETHING_RANDOM"; 6];
192
193 (0..6).for_each(|index| {
194 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
195 random_str[index as usize] = BIP39_WORDLIST[random as usize];
196 });
197
198 random_str
199 }
200
201 pub fn wyrand_bip39_8words() -> [&'static str; 8] {
203 let mut rng = WyRand::new();
204 let mut random = 0_u16;
205 let mut random_str: [&'static str; 8] = ["TRY_GENERATING_SOMETHING_RANDOM"; 8];
206
207 (0..8).for_each(|index| {
208 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
209 random_str[index as usize] = BIP39_WORDLIST[random as usize];
210 });
211
212 random_str
213 }
214
215 pub fn wyrand_bip39_12words() -> [&'static str; 12] {
217 let mut rng = WyRand::new();
218 let mut random = 0_u16;
219 let mut random_str: [&'static str; 12] = ["TRY_GENERATING_SOMETHING_RANDOM"; 12];
220
221 (0..12).for_each(|index| {
222 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
223 random_str[index as usize] = BIP39_WORDLIST[random as usize];
224 });
225
226 random_str
227 }
228
229 pub fn wyrand_bip39_16words() -> [&'static str; 16] {
231 let mut rng = WyRand::new();
232 let mut random = 0_u16;
233 let mut random_str: [&'static str; 16] = ["TRY_GENERATING_SOMETHING_RANDOM"; 16];
234
235 (0..16).for_each(|index| {
236 random = rng.generate_range(0_u16..BIP39_WORDLIST.len() as u16);
237 random_str[index as usize] = BIP39_WORDLIST[random as usize];
238 });
239
240 random_str
241 }
242
243 pub fn wyrand_eff_shortlist() -> [&'static str; 6] {
245 let mut rng = WyRand::new();
246 let mut random = 0_u16;
247 let mut random_str: [&'static str; 6] = ["TRY_GENERATING_SOMETHING_RANDOM"; 6];
248
249 (0..6).for_each(|index| {
250 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
251 random_str[index as usize] = EFF_SHORT[random as usize];
252 });
253
254 random_str
255 }
256
257 pub fn wyrand_eff_shortlist_8words() -> [&'static str; 8] {
259 let mut rng = WyRand::new();
260 let mut random = 0_u16;
261 let mut random_str: [&'static str; 8] = ["TRY_GENERATING_SOMETHING_RANDOM"; 8];
262
263 (0..8).for_each(|index| {
264 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
265 random_str[index as usize] = EFF_SHORT[random as usize];
266 });
267
268 random_str
269 }
270
271 pub fn wyrand_eff_shortlist_12words() -> [&'static str; 12] {
273 let mut rng = WyRand::new();
274 let mut random = 0_u16;
275 let mut random_str: [&'static str; 12] = ["TRY_GENERATING_SOMETHING_RANDOM"; 12];
276
277 (0..12).for_each(|index| {
278 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
279 random_str[index as usize] = EFF_SHORT[random as usize];
280 });
281
282 random_str
283 }
284
285 pub fn wyrand_eff_shortlist_16words() -> [&'static str; 16] {
287 let mut rng = WyRand::new();
288 let mut random = 0_u16;
289 let mut random_str: [&'static str; 16] = ["TRY_GENERATING_SOMETHING_RANDOM"; 16];
290
291 (0..16).for_each(|index| {
292 random = rng.generate_range(0_u16..EFF_SHORT.len() as u16);
293 random_str[index as usize] = EFF_SHORT[random as usize];
294 });
295
296 random_str
297 }
298
299 pub fn wyrand_eff_largelist() -> [&'static str; 4] {
301 let mut rng = WyRand::new();
302 let mut random = 0_u16;
303 let mut random_str: [&'static str; 4] = ["TRY_GENERATING_SOMETHING_RANDOM"; 4];
304
305 (0..4).for_each(|index| {
306 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
307 random_str[index as usize] = EFF_LARGE[random as usize];
308 });
309
310 random_str
311 }
312
313 pub fn wyrand_eff_largelist_6words() -> [&'static str; 6] {
315 let mut rng = WyRand::new();
316 let mut random = 0_u16;
317 let mut random_str: [&'static str; 6] = ["TRY_GENERATING_SOMETHING_RANDOM"; 6];
318
319 (0..6).for_each(|index| {
320 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
321 random_str[index as usize] = EFF_LARGE[random as usize];
322 });
323
324 random_str
325 }
326
327 pub fn wyrand_eff_largelist_8words() -> [&'static str; 8] {
329 let mut rng = WyRand::new();
330 let mut random = 0_u16;
331 let mut random_str: [&'static str; 8] = ["TRY_GENERATING_SOMETHING_RANDOM"; 8];
332
333 (0..8).for_each(|index| {
334 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
335 random_str[index as usize] = EFF_LARGE[random as usize];
336 });
337
338 random_str
339 }
340
341 pub fn wyrand_eff_largelist_12words() -> [&'static str; 12] {
343 let mut rng = WyRand::new();
344 let mut random = 0_u16;
345 let mut random_str: [&'static str; 12] = ["TRY_GENERATING_SOMETHING_RANDOM"; 12];
346
347 (0..12).for_each(|index| {
348 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
349 random_str[index as usize] = EFF_LARGE[random as usize];
350 });
351
352 random_str
353 }
354
355 pub fn wyrand_eff_largelist_16words() -> [&'static str; 16] {
357 let mut rng = WyRand::new();
358 let mut random = 0_u16;
359 let mut random_str: [&'static str; 16] = ["TRY_GENERATING_SOMETHING_RANDOM"; 16];
360
361 (0..16).for_each(|index| {
362 random = rng.generate_range(0_u16..EFF_LARGE.len() as u16);
363 random_str[index as usize] = EFF_LARGE[random as usize];
364 });
365
366 random_str
367 }
368}
369
370#[cfg(test)]
371mod test_length {
372 use crate::WasmiumRandom;
373 #[test]
374 fn test_bip39_secure() {
375 assert_eq!(6_usize, WasmiumRandom::secure_bip39().len());
376 assert_eq!(8_usize, WasmiumRandom::secure_bip39_8words().len());
377 assert_eq!(12_usize, WasmiumRandom::secure_bip39_12words().len());
378 assert_eq!(16_usize, WasmiumRandom::secure_bip39_16words().len());
379 }
380
381 #[test]
382 fn test_eff_shortlist_secure() {
383 assert_eq!(6_usize, WasmiumRandom::secure_eff_shortlist().len());
384 assert_eq!(8_usize, WasmiumRandom::secure_eff_shortlist_8words().len());
385 assert_eq!(
386 12_usize,
387 WasmiumRandom::secure_eff_shortlist_12words().len()
388 );
389 assert_eq!(
390 16_usize,
391 WasmiumRandom::secure_eff_shortlist_16words().len()
392 );
393 }
394
395 #[test]
396 fn test_eff_largelist_secure() {
397 assert_eq!(4_usize, WasmiumRandom::secure_eff_largelist().len());
398 assert_eq!(6_usize, WasmiumRandom::secure_eff_largelist_6words().len());
399 assert_eq!(8_usize, WasmiumRandom::secure_eff_largelist_8words().len());
400 assert_eq!(
401 12_usize,
402 WasmiumRandom::secure_eff_largelist_12words().len()
403 );
404 assert_eq!(
405 16_usize,
406 WasmiumRandom::secure_eff_largelist_16words().len()
407 );
408 }
409
410 #[test]
413 fn test_bip39_wyrand() {
414 assert_eq!(6_usize, WasmiumRandom::wyrand_bip39().len());
415 assert_eq!(8_usize, WasmiumRandom::wyrand_bip39_8words().len());
416 assert_eq!(12_usize, WasmiumRandom::wyrand_bip39_12words().len());
417 assert_eq!(16_usize, WasmiumRandom::wyrand_bip39_16words().len());
418 }
419
420 #[test]
421 fn test_eff_shortlist_wyrand() {
422 assert_eq!(6_usize, WasmiumRandom::wyrand_eff_shortlist().len());
423 assert_eq!(8_usize, WasmiumRandom::wyrand_eff_shortlist_8words().len());
424 assert_eq!(
425 12_usize,
426 WasmiumRandom::wyrand_eff_shortlist_12words().len()
427 );
428 assert_eq!(
429 16_usize,
430 WasmiumRandom::wyrand_eff_shortlist_16words().len()
431 );
432 }
433
434 #[test]
435 fn test_eff_largelist_wyrand() {
436 assert_eq!(4_usize, WasmiumRandom::wyrand_eff_largelist().len());
437 assert_eq!(6_usize, WasmiumRandom::wyrand_eff_largelist_6words().len());
438 assert_eq!(8_usize, WasmiumRandom::wyrand_eff_largelist_8words().len());
439 assert_eq!(
440 12_usize,
441 WasmiumRandom::wyrand_eff_shortlist_12words().len()
442 );
443 assert_eq!(
444 16_usize,
445 WasmiumRandom::wyrand_eff_shortlist_16words().len()
446 );
447 }
448}