Add version and usage

This commit is contained in:
Ignacio Rivero 2024-04-27 15:41:35 -03:00
parent 9f6d1ecdeb
commit a590d1842d

39
salty.c
View File

@ -10,6 +10,7 @@
#define KEY_SIZE crypto_secretbox_KEYBYTES #define KEY_SIZE crypto_secretbox_KEYBYTES
#define SALT_SIZE crypto_pwhash_SALTBYTES #define SALT_SIZE crypto_pwhash_SALTBYTES
#define BUF_SIZE 1024 #define BUF_SIZE 1024
#define VER "1.00"
bool stdinput = false; bool stdinput = false;
@ -367,22 +368,36 @@ bool getPassword(char *pw, int size) {
return true; return true;
} }
void printUsage() {
fprintf(stderr,"\nUsage: salty [-d] -in [INPUT] -out [OUTPUT] [OPTIONS]\n");
fprintf(stderr,"Encrypts or decrypts a file with a password. When INPUT or OUTPUT are not set,\n");
fprintf(stderr,"or set to -, standard input or output is used respectively.\n\n");
fprintf(stderr,"Options:\n");
fprintf(stderr," -in\t\tTakes an input file\n");
fprintf(stderr," -out\tTakes an output file\n");
fprintf(stderr," -d\t\tEnable decryption mode\n");
fprintf(stderr," -key\tTakes a password, needed if reading from stdin\n");
fprintf(stderr," \t\tOtherwise this password is read from stdin itself\n");
fprintf(stderr," -v\t\tDisplays version information and exits\n");
fprintf(stderr," -h\t\tDisplays this help and exits\n");
}
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0);
fprintf(stderr,"- NetPaws Salty - File Encryption Program\n"); fprintf(stderr,NOR"NetPaws Salty - File Encryption Program\n");
fprintf(stderr,"- 2024 Ignacio Rivero\n\n"); fprintf(stderr,NOR"2024 Ignacio Rivero\n");
// Initialize libsodium // Initialize libsodium
if (sodium_init() < 0) { if (sodium_init() < 0) {
fprintf(stderr,ERR"libsodium initialization failed! It is not safe to proceed.\n"); fprintf(stderr,ERR"libsodium initialization failed! It is not safe to proceed.\n");
return 1; return 1;
} }
// Handle input, output and password arguments // Handle input, output, password, and other arguments
int in = -1, out = -1, pass = -1; int in = -1, out = -1, pass = -1;
bool decrypt = false; bool decrypt = false;
int i = 1, exit = 0; int i = 1, exit = -1;
while (i < argc && exit == 0) { while (i < argc && exit == -1) {
if (strcmp (argv[i],"-in") == 0) { if (strcmp (argv[i],"-in") == 0) {
if (i+1 >= argc) { if (i+1 >= argc) {
fprintf(stderr,ERR"Argument -in requires a file.\n"); fprintf(stderr,ERR"Argument -in requires a file.\n");
@ -429,6 +444,13 @@ int main(int argc, char *argv[]) {
} }
} else if (strcmp (argv[i],"-d") == 0) { } else if (strcmp (argv[i],"-d") == 0) {
decrypt = true; decrypt = true;
} else if (strcmp (argv[i],"-v") == 0) {
fprintf(stderr,NOR"Version %s\n",VER);
exit = 0;
} else if (strcmp (argv[i],"-h") == 0) {
fprintf(stderr,NOR"Version %s\n",VER);
printUsage();
exit = 0;
} else { } else {
fprintf(stderr,ERR"Invalid argument: %s\n",argv[i]); fprintf(stderr,ERR"Invalid argument: %s\n",argv[i]);
exit = 1; exit = 1;
@ -436,8 +458,13 @@ int main(int argc, char *argv[]) {
i++; i++;
} }
if (exit != 0) if (exit == 1) {
printUsage();
return exit; return exit;
} else if (exit != -1)
return exit;
fprintf(stderr,"\n");
// Set input and output filenames, or go to standard I/O if none // Set input and output filenames, or go to standard I/O if none
char input[FILENAME_MAX]; char input[FILENAME_MAX];