From c3eee8e333866d92e5fd94ae83cef618758c11bb Mon Sep 17 00:00:00 2001 From: Markus Uhlin Date: Mon, 15 Sep 2025 18:50:32 +0200 Subject: FICS RPBLC v1.4.6 --- FICS/fics_getsalt.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 FICS/fics_getsalt.cpp (limited to 'FICS/fics_getsalt.cpp') diff --git a/FICS/fics_getsalt.cpp b/FICS/fics_getsalt.cpp new file mode 100644 index 0000000..95705b0 --- /dev/null +++ b/FICS/fics_getsalt.cpp @@ -0,0 +1,46 @@ +/* + * Written by Markus Uhlin , + * 25 Dec 2023. + */ + +#include +#include +#include + +#include "fics_getsalt.h" + +char * +fics_getsalt(void) +{ + static bool init_done = false; + static const char legal_index[] = + "./0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz"; + static char salt[FICS_SALT_SIZE]; + + if (!init_done) { + strcpy(salt, FICS_SALT_BEG); + init_done = true; + } + + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_int_distribution dist(0, strlen(legal_index) - 1); + + for (size_t i = 7; i < sizeof salt; i++) + salt[i] = legal_index[dist(gen)]; + salt[sizeof salt - 1] = '\0'; + return (&salt[0]); +} + +#if SELF_TEST +int +main(void) +{ + puts(fics_getsalt()); + puts(fics_getsalt()); + puts(fics_getsalt()); + return 0; +} +#endif -- cgit v1.2.3