From 810965a9fb56f79cca20fa0632bb7b7cdf81cf9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Cort=C3=A9s?= Date: Sun, 13 Oct 2019 18:40:32 -0300 Subject: [PATCH] initial commit <3 --- Makefile | 5 +++++ chars | Bin 0 -> 17128 bytes main.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ strtoui.h | 31 +++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 Makefile create mode 100755 chars create mode 100644 main.c create mode 100644 strtoui.h diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4917c92 --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +all: main.c strtoui.h + gcc -Wall main.c strtoui.h -o chars -lsodium + +clean: + rm chars main.o diff --git a/chars b/chars new file mode 100755 index 0000000000000000000000000000000000000000..25e003aab8c18ebf62561c81df1d6607859083d4 GIT binary patch literal 17128 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c new file mode 100644 index 0000000..ee8c743 --- /dev/null +++ b/main.c @@ -0,0 +1,44 @@ +#include "stdio.h" +#include "stdlib.h" +#include "limits.h" +#include "sodium.h" +#include "strtoui.h" + +int map(int i, int i_min, int i_max, int o_min, int o_max) { + double r = (double)(o_max - o_min) / (double)(i_max - i_min); + int j = (double) (i - i_min) * r + o_min; + return j; +} + +int main(int argc, char *argv[]) { + if(argc == 1) { + puts("Usage: chars [length]"); + puts(" Max length is 1024"); + exit(EXIT_SUCCESS); + } + + unsigned int len; + enum strtoui_error error = strtoui(&len, argv[1], 10); + if(error != STRTOUI_SUCCESS){ + fputs("Bad input\n", stderr); + exit(EXIT_FAILURE); + }else if (len > 1024) { + fputs("The length is to big\n", stderr); + exit(EXIT_FAILURE); + } + + char lower_range = 0x20; + char upper_range= 0x7e; + + char data[len]; + randombytes_buf(data, sizeof len); + + for(int i = 0; i < len; i++) { + int random = randombytes_uniform(upper_range); + data[i] = map(random, 0, upper_range, lower_range, upper_range); + printf("%c", data[i]); + } + printf("\n"); + + exit(EXIT_SUCCESS); +} diff --git a/strtoui.h b/strtoui.h new file mode 100644 index 0000000..606cc4c --- /dev/null +++ b/strtoui.h @@ -0,0 +1,31 @@ +#ifndef STRTOUI_H +#define STRTOUI_H + +#include "stdlib.h" +#include "ctype.h" +#include "limits.h" +#include "errno.h" + +enum strtoui_error{ + STRTOUI_SUCCESS, + STRTOUI_OVERFLOW, + STRTOUI_UNDERFLOW, + STRTOUI_INCONVERTIBLE +}; + +enum strtoui_error strtoui(unsigned int *out, char *s, int base) { + char *end; + if(s[0] == '\0' || isspace(s[0])) + return STRTOUI_INCONVERTIBLE; + long l = strtol(s, &end, base); + if(l > INT_MAX || (errno == ERANGE && l == LONG_MAX)) + return STRTOUI_OVERFLOW; + if(l < 0|| (errno == ERANGE && l == LONG_MIN)) + return STRTOUI_UNDERFLOW; + if(*end != '\0') + return STRTOUI_INCONVERTIBLE; + *out = l; + return STRTOUI_SUCCESS; +} + +#endif