From c7f630ed23144939a540219787c7be3ffe14b24c Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Fri, 1 Sep 2023 16:45:37 -0400 Subject: initial commit --- main.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 main.c (limited to 'main.c') diff --git a/main.c b/main.c new file mode 100644 index 0000000..62fc21b --- /dev/null +++ b/main.c @@ -0,0 +1,78 @@ +#include +#include +#include "sha3.h" + +// available functions +static const struct { + const char *name; + const size_t size; + void (*func)(const uint8_t *, size_t, uint8_t *); +} fns[] = {{ + .name = "sha3-224", + .size = 28, + .func = sha3_224, +}, { + .name = "sha3-256", + .size = 32, + .func = sha3_256, +}, { + .name = "sha3-384", + .size = 48, + .func = sha3_384, +}, { + .name = "sha3-512", + .size = 64, + .func = sha3_512, +}, { + .name = "shake128", + .size = 16, + .func = shake128, +}, { + .name = "shake256", + .size = 32, + .func = shake256, +}}; + +#define USAGE "Usage: %s \n" \ + "\n" \ + "Algorithms:\n" \ + "- sha3-224\n" \ + "- sha3-256\n" \ + "- sha3-384\n" \ + "- sha3-512\n" \ + "- shake128\n" \ + "- shake256\n" \ + "\n" \ + "Example:\n" \ + " %s sha3-256 \"asdf\"\n" \ + " dd2781f4c51bccdbe23e4d398b8a82261f585c278dbb4b84989fea70e76723a9\n" + +int main(int argc, char *argv[]) { + if (argc < 3) { + const char *app = (argc > 0) ? argv[0] : "sha3"; + fprintf(stderr, USAGE, app, app); + return -1; + } + + for (size_t i = 0; i < sizeof(fns)/sizeof(fns[0]); i++) { + if (strncmp(argv[1], fns[i].name, strlen(fns[i].name) + 1)) { + continue; + } + + // hash into buf + uint8_t buf[64]; + fns[i].func((uint8_t*) argv[2], strlen(argv[2]), buf); + + // print result + for (size_t j = 0; j < fns[i].size; j++) { + printf("%02x", buf[j]); + } + fputs("\n", stdout); + + // exit with success + return 0; + } + + fprintf(stderr, "Unknown algorithm: %s", argv[1]); + return -1; +} -- cgit v1.2.3