cryptest

Cryptography-related scribbles
git clone git://git.finwo.net/misc/cryptest
Log | Files | Refs | README

commit fd020e0e94b09bf3a54693470cf28a85245f6aab
parent 754551b924853a600a3cefa96619f31ac11d9842
Author: finwo <finwo@pm.me>
Date:   Tue,  8 Aug 2017 22:21:08 +0200

command switches

Diffstat:
Mconfigure | 2+-
Minc/base.h | 4++++
Asrc/decrypt.c | 13+++++++++++++
Asrc/encrypt.c | 13+++++++++++++
Msrc/main.c | 55++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Asrc/sign.c | 13+++++++++++++
6 files changed, 98 insertions(+), 2 deletions(-)

diff --git a/configure b/configure @@ -20,7 +20,7 @@ FCC=$(command -v musl-gcc gcc 2>/dev/null | head -1) echo " - C flags" echo "CFLAGS :=" >> Makefile -command -v gcc &>/dev/null && echo "CFLAGS += -O3 -s" >> Makefile +command -v gcc &>/dev/null && echo "CFLAGS += -Os -s" >> Makefile echo "CFLAGS += -I inc" >> Makefile echo " - Other variables" diff --git a/inc/base.h b/inc/base.h @@ -2,6 +2,10 @@ extern "C" { #endif +int encrypt( unsigned int mult, unsigned int modulo, unsigned int padding ); +int decrypt( unsigned int mult, unsigned int modulo, unsigned int padding ); +int sign( unsigned int mult, unsigned int modulo, unsigned int padding ); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/decrypt.c b/src/decrypt.c @@ -0,0 +1,13 @@ +#ifdef __cplusplus +extern "C" { +#endif + +#include "base.h" + +int decrypt( unsigned int mult, unsigned int modulo, unsigned int padding ) { + +} + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/src/encrypt.c b/src/encrypt.c @@ -0,0 +1,13 @@ +#ifdef __cplusplus +extern "C" { +#endif + +#include "base.h" + +int encrypt( unsigned int mult, unsigned int modulo, unsigned int padding ) { + +} + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/src/main.c b/src/main.c @@ -2,12 +2,65 @@ extern "C" { #endif +#include <stdio.h> +#include <unistd.h> + #include "base.h" -int main( int argc, char **argv ) { +int usage( char *name ) { + fprintf(stderr, "Usage:\n"); + fprintf(stderr, " %s -h\n", name); + fprintf(stderr, " %s [-e|-d] [-t mul] [-m mod] [-p pad]\n", name); + fprintf(stderr, " %s -s [-t mul] [-m mod]\n", name); + fprintf(stderr, "Options:\n"); + fprintf(stderr, " -d Decrypt stdin\n"); + fprintf(stderr, " -e Encrypt stdin\n"); + fprintf(stderr, " -h Show this usage\n"); + fprintf(stderr, " -s Output sign for stdin\n"); + fprintf(stderr, " -t Set the multiplicand (default: 13)\n"); + fprintf(stderr, " -m Set the modulo (default: 557)\n"); + fprintf(stderr, " -p Set the padding in bytes (default: 1)\n"); return 0; } +int main( int argc, char **argv ) { + int opt; + + unsigned int mult = 13, modulo = 557, padding = 1; + char mode = 0; + + while((opt=getopt(argc,argv,"edsht:m:p:"))!=-1) { + switch(opt) { + case 'e': + mode = 1; + break; + case 'd': + mode = 2; + break; + case 's': + mode = 3; + break; + case 't': + case 'm': + case 'p': + case 'h': + return usage( *argv ); + default: + fprintf(stderr,"Run '%s -h' for usage.\n", *argv); + return 1; + } + } + + switch(mode) { + case 1: return encrypt( mult, modulo, padding ); + case 2: return decrypt( mult, modulo, padding ); + case 3: return sign( mult, modulo, padding ); + } + + usage( *argv ); + return 2; +} + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/sign.c b/src/sign.c @@ -0,0 +1,13 @@ +#ifdef __cplusplus +extern "C" { +#endif + +#include "base.h" + +int sign( unsigned int mult, unsigned int modulo, unsigned int padding ) { + +} + +#ifdef __cplusplus +} // extern "C" +#endif