parent
949738401a
commit
74d634e562
|
@ -53,6 +53,9 @@ if (WITH_GDM)
|
||||||
target_link_libraries (gdm-switch-user ${gdm_LIBRARIES})
|
target_link_libraries (gdm-switch-user ${gdm_LIBRARIES})
|
||||||
endif (WITH_GDM)
|
endif (WITH_GDM)
|
||||||
|
|
||||||
|
add_executable (siprandom siprandom.c)
|
||||||
|
target_link_libraries (siprandom ${project_libraries})
|
||||||
|
|
||||||
# The files to be installed
|
# The files to be installed
|
||||||
include (GNUInstallDirs)
|
include (GNUInstallDirs)
|
||||||
|
|
||||||
|
@ -67,7 +70,7 @@ if (WITH_GDM)
|
||||||
install (TARGETS gdm-switch-user DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install (TARGETS gdm-switch-user DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
endif (WITH_GDM)
|
endif (WITH_GDM)
|
||||||
|
|
||||||
install (TARGETS dwmstatus brightness fancontrol-ng
|
install (TARGETS dwmstatus brightness fancontrol-ng siprandom
|
||||||
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install (PROGRAMS shellify DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install (PROGRAMS shellify DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
|
|
|
@ -3,7 +3,7 @@ desktop-tools
|
||||||
:compact-option:
|
:compact-option:
|
||||||
|
|
||||||
'desktop-tools' is a collection of tools to run my desktop that might be useful
|
'desktop-tools' is a collection of tools to run my desktop that might be useful
|
||||||
to other people as well.
|
to other people as well:
|
||||||
|
|
||||||
- 'dwmstatus' does literally everything my dwm doesn't but I'd like it to. It
|
- 'dwmstatus' does literally everything my dwm doesn't but I'd like it to. It
|
||||||
includes PulseAudio volume management and hand-written NUT and MPD clients,
|
includes PulseAudio volume management and hand-written NUT and MPD clients,
|
||||||
|
@ -16,6 +16,8 @@ to other people as well.
|
||||||
and nmcli that are painfully lacking it
|
and nmcli that are painfully lacking it
|
||||||
- 'gdm-switch-user' tells the running GDM daemon, if any, to show the switch
|
- 'gdm-switch-user' tells the running GDM daemon, if any, to show the switch
|
||||||
user screen
|
user screen
|
||||||
|
- 'siprandom' uses the SipHash 2-4 algorithm to produce a stream of
|
||||||
|
pseudo-random data; it should be fast enough to saturate most devices
|
||||||
|
|
||||||
Don't expect them to work under any OS that isn't Linux.
|
Don't expect them to work under any OS that isn't Linux.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
/*
|
||||||
|
* siprandom.c: relatively fast pseudo-random data generator
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016, Přemysl Janouch <p.janouch@gmail.com>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||||
|
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||||
|
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#undef PROGRAM_NAME
|
||||||
|
#define PROGRAM_NAME "siprandom"
|
||||||
|
#include "liberty/liberty.c"
|
||||||
|
|
||||||
|
static void
|
||||||
|
parse_program_arguments (int argc, char **argv)
|
||||||
|
{
|
||||||
|
static const struct opt opts[] =
|
||||||
|
{
|
||||||
|
{ 'd', "debug", NULL, 0, "run in debug mode" },
|
||||||
|
{ 'h', "help", NULL, 0, "display this help and exit" },
|
||||||
|
{ 'V', "version", NULL, 0, "output version information and exit" },
|
||||||
|
{ 0, NULL, NULL, 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
struct opt_handler oh;
|
||||||
|
opt_handler_init (&oh, argc, argv, opts, "CONFIG", "PRNG.");
|
||||||
|
|
||||||
|
int c;
|
||||||
|
while ((c = opt_handler_get (&oh)) != -1)
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 'd':
|
||||||
|
g_debug_mode = true;
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
opt_handler_usage (&oh, stdout);
|
||||||
|
exit (EXIT_SUCCESS);
|
||||||
|
case 'V':
|
||||||
|
printf (PROGRAM_NAME " " PROGRAM_VERSION "\n");
|
||||||
|
exit (EXIT_SUCCESS);
|
||||||
|
default:
|
||||||
|
print_error ("wrong options");
|
||||||
|
opt_handler_usage (&oh, stderr);
|
||||||
|
exit (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
argc -= optind;
|
||||||
|
argv += optind;
|
||||||
|
|
||||||
|
if (argc)
|
||||||
|
{
|
||||||
|
opt_handler_usage (&oh, stderr);
|
||||||
|
exit (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
opt_handler_free (&oh);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
parse_program_arguments (argc, argv);
|
||||||
|
|
||||||
|
uint64_t counter, hash;
|
||||||
|
struct error *e = NULL;
|
||||||
|
if (!random_bytes (g_siphash_key, sizeof g_siphash_key, &e)
|
||||||
|
|| !random_bytes (&counter, sizeof counter, &e)
|
||||||
|
|| !random_bytes (&hash, sizeof hash, &e))
|
||||||
|
exit_fatal ("%s: %s", "failed to obtain random data seed", e->message);
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
hash ^= siphash_wrapper (&counter, sizeof counter);
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
while (fwrite (&hash, sizeof hash, 1, stdout) == 1);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
Loading…
Reference in New Issue