main.c (1842B)
1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 5 #include <stdio.h> 6 #include <unistd.h> 7 8 #include "base.h" 9 10 int usage( char *name ) { 11 fprintf(stderr, "\n" 12 "Usage:\n" 13 " %s -h\n" 14 " %s [-e|-d] [-t mul] [-m mod] [-p pad]\n", name, name ); 15 fprintf(stderr, "\n" 16 "Options:\n" 17 " -d Decrypt stdin\n" 18 " -e Encrypt stdin\n" 19 " -h Show this usage\n" 20 " -t Set the multiplicand (default: 13)\n" 21 " -m Set the modulo (>=128) (default: 66066)\n" 22 " -p Set the padding in bytes (>=1) (default: 1)\n"); 23 fprintf(stderr, "\n"); 24 return 0; 25 } 26 27 int main( int argc, char **argv ) { 28 int opt; 29 30 unsigned int mult = 13, modulo = 66066, padding = 1; 31 char mode = 0; 32 unsigned long long vercode = 0; 33 34 setvbuf(stdout,NULL,_IONBF,0); 35 36 while((opt=getopt(argc,argv,"deht:m:p:"))!=-1) { 37 switch(opt) { 38 case 'e': 39 mode = 1; 40 break; 41 case 'd': 42 mode = 2; 43 break; 44 case 't': 45 mult = atoui( optarg ); 46 break; 47 case 'm': 48 modulo = atoui( optarg ); 49 if ( modulo < 128 ) { 50 fprintf(stderr, "Modulo must be >= 128\n"); 51 return 3; 52 } 53 break; 54 case 'p': 55 padding = atoui( optarg ); 56 if ( padding < 1 ) { 57 fprintf(stderr, "Padding must be >= 1\n"); 58 return 4; 59 } 60 break; 61 case 'h': 62 return usage( *argv ); 63 default: 64 fprintf(stderr,"Run '%s -h' for usage.\n", *argv); 65 return 1; 66 } 67 } 68 69 switch(mode) { 70 case 1: return encrypt( mult, modulo, padding ); 71 case 2: return decrypt( mult, modulo, padding ); 72 } 73 74 usage( *argv ); 75 return 2; 76 } 77 78 #ifdef __cplusplus 79 } // extern "C" 80 #endif