Compare commits

...

3 Commits

3 changed files with 28 additions and 18 deletions

45
otp.c
View File

@@ -271,7 +271,7 @@ int command_line_mode(int argc, char* argv[]) {
}
void show_main_menu(void) {
printf("=== Main Menu ===\n\n");
printf("======================== Main Menu ========================\n");
printf("\033[4mT\033[0mext encrypt\n");
printf("\033[4mF\033[0mile encrypt\n");
printf("\033[4mD\033[0mecrypt\n");
@@ -462,18 +462,11 @@ int handle_encrypt_menu(void) {
int ascii_armor = (atoi(format_input) == 2) ? 1 : 0;
// Generate default output filename and use enhanced input function
char default_output[512];
snprintf(default_output, sizeof(default_output), "%s.decrypted", input_file);
// Remove common encrypted extensions to get a better default
if (strstr(default_output, ".otp.asc.decrypted")) {
// Replace .otp.asc.decrypted with original extension or no extension
char* ext_pos = strstr(default_output, ".otp.asc.decrypted");
*ext_pos = '\0';
} else if (strstr(default_output, ".otp.decrypted")) {
// Replace .otp.decrypted with original extension or no extension
char* ext_pos = strstr(default_output, ".otp.decrypted");
*ext_pos = '\0';
char default_output[1024]; // Increased size to prevent truncation warnings
if (ascii_armor) {
snprintf(default_output, sizeof(default_output), "%s.otp.asc", input_file);
} else {
snprintf(default_output, sizeof(default_output), "%s.otp", input_file);
}
char output_file[512];
@@ -529,16 +522,32 @@ int handle_decrypt_menu(void) {
return 1;
}
// Ask for custom output filename (optional)
printf("\nEnter output filename (or press Enter for default): ");
// Generate smart default output filename and use enhanced input function
char default_output[512];
strncpy(default_output, input_file, sizeof(default_output) - 1);
default_output[sizeof(default_output) - 1] = '\0';
// Remove common encrypted extensions to get a better default
if (strstr(default_output, ".otp.asc")) {
// Replace .otp.asc with original extension or no extension
char* ext_pos = strstr(default_output, ".otp.asc");
*ext_pos = '\0';
} else if (strstr(default_output, ".otp")) {
// Replace .otp with original extension or no extension
char* ext_pos = strstr(default_output, ".otp");
*ext_pos = '\0';
} else {
// No recognized encrypted extension, add .decrypted suffix
strncat(default_output, ".decrypted", sizeof(default_output) - strlen(default_output) - 1);
}
char output_file[512];
if (!fgets(output_file, sizeof(output_file), stdin)) {
if (get_filename_with_default("Output filename:", default_output, output_file, sizeof(output_file)) != 0) {
printf("Error: Failed to read input\n");
return 1;
}
output_file[strcspn(output_file, "\n")] = 0;
const char* output_filename = (strlen(output_file) > 0) ? output_file : NULL;
const char* output_filename = output_file;
return decrypt_file(input_file, output_filename);
}

1
test_decrypt.txt Normal file
View File

@@ -0,0 +1 @@
Test file content for decryption

BIN
test_decrypt.txt.otp Normal file

Binary file not shown.