xref: /aosp_15_r20/external/toybox/toys/other/mcookie.c (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker /* mcookie - generate a 128-bit random number (used for X "magic cookies")
2*cf5a6c84SAndroid Build Coastguard Worker  *
3*cf5a6c84SAndroid Build Coastguard Worker  * Copyright 2019 AD Isaac Dunham <[email protected]>
4*cf5a6c84SAndroid Build Coastguard Worker  *
5*cf5a6c84SAndroid Build Coastguard Worker  * No standard.
6*cf5a6c84SAndroid Build Coastguard Worker  *
7*cf5a6c84SAndroid Build Coastguard Worker  * -f and -m are not supported: md5sums of arbitrary files are not a good
8*cf5a6c84SAndroid Build Coastguard Worker  * source of entropy, just ask the system for 128 bits and print it.
9*cf5a6c84SAndroid Build Coastguard Worker 
10*cf5a6c84SAndroid Build Coastguard Worker USE_MCOOKIE(NEWTOY(mcookie, "v(verbose)V(version)", TOYFLAG_USR|TOYFLAG_BIN))
11*cf5a6c84SAndroid Build Coastguard Worker 
12*cf5a6c84SAndroid Build Coastguard Worker config MCOOKIE
13*cf5a6c84SAndroid Build Coastguard Worker   bool "mcookie"
14*cf5a6c84SAndroid Build Coastguard Worker   default y
15*cf5a6c84SAndroid Build Coastguard Worker   help
16*cf5a6c84SAndroid Build Coastguard Worker     usage: mcookie [-vV]
17*cf5a6c84SAndroid Build Coastguard Worker 
18*cf5a6c84SAndroid Build Coastguard Worker     Generate a 128-bit strong random number.
19*cf5a6c84SAndroid Build Coastguard Worker 
20*cf5a6c84SAndroid Build Coastguard Worker     -v  show entropy source (verbose)
21*cf5a6c84SAndroid Build Coastguard Worker     -V  show version
22*cf5a6c84SAndroid Build Coastguard Worker */
23*cf5a6c84SAndroid Build Coastguard Worker 
24*cf5a6c84SAndroid Build Coastguard Worker #define FOR_mcookie
25*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h"
26*cf5a6c84SAndroid Build Coastguard Worker 
mcookie_main(void)27*cf5a6c84SAndroid Build Coastguard Worker void mcookie_main(void)
28*cf5a6c84SAndroid Build Coastguard Worker {
29*cf5a6c84SAndroid Build Coastguard Worker   long long *ll = (void *)toybuf;
30*cf5a6c84SAndroid Build Coastguard Worker 
31*cf5a6c84SAndroid Build Coastguard Worker   if (FLAG(V)) return (void)puts("mcookie from toybox");
32*cf5a6c84SAndroid Build Coastguard Worker   xgetrandom(toybuf, 16);
33*cf5a6c84SAndroid Build Coastguard Worker   if (FLAG(v)) fputs("Got 16 bytes from xgetrandom()\n", stderr);
34*cf5a6c84SAndroid Build Coastguard Worker   xprintf("%016llx%06llx\n", ll[0], ll[1]);
35*cf5a6c84SAndroid Build Coastguard Worker }
36