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 Workervoid 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