Version v0.3.43 - -m Remove unnecessary calculate_checksum() calls during encryption - use filename checksum directly
This commit is contained in:
@@ -58,14 +58,14 @@ One-time pads can be trivially encrypted and decrypted using pencil and paper, m
|
|||||||
|
|
||||||
### Download Pre-Built Binaries
|
### Download Pre-Built Binaries
|
||||||
|
|
||||||
**[Download Current Linux x86](https://git.laantungir.net/laantungir/otp/releases/download/v0.3.41/otp-v0.3.41-linux-x86_64)**
|
**[Download Current Linux x86](https://git.laantungir.net/laantungir/otp/releases/download/v0.3.42/otp-v0.3.42-linux-x86_64)**
|
||||||
|
|
||||||
**[Download Current Raspberry Pi 64](https://git.laantungir.net/laantungir/otp/releases/download/v0.3.41/otp-v0.3.41-linux-arm64)**
|
**[Download Current Raspberry Pi 64](https://git.laantungir.net/laantungir/otp/releases/download/v0.3.42/otp-v0.3.42-linux-arm64)**
|
||||||
|
|
||||||
After downloading:
|
After downloading:
|
||||||
```bash
|
```bash
|
||||||
# Rename for convenience, then make executable
|
# Rename for convenience, then make executable
|
||||||
mv otp-v0.3.41-linux-x86_64 otp
|
mv otp-v0.3.42-linux-x86_64 otp
|
||||||
chmod +x otp
|
chmod +x otp
|
||||||
|
|
||||||
# Run it
|
# Run it
|
||||||
|
|||||||
24
src/crypto.c
24
src/crypto.c
@@ -297,7 +297,6 @@ int encrypt_text(const char* pad_identifier, const char* input_text) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char text_buffer[MAX_INPUT_SIZE];
|
char text_buffer[MAX_INPUT_SIZE];
|
||||||
char chksum_hex[MAX_HASH_LENGTH];
|
|
||||||
uint64_t current_offset;
|
uint64_t current_offset;
|
||||||
|
|
||||||
char pad_path[MAX_HASH_LENGTH + 20];
|
char pad_path[MAX_HASH_LENGTH + 20];
|
||||||
@@ -327,12 +326,8 @@ int encrypt_text(const char* pad_identifier, const char* input_text) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate XOR checksum of pad file
|
// Use pad_chksum directly - it's already the checksum from the filename
|
||||||
if (calculate_checksum(pad_path, chksum_hex) != 0) {
|
// No need to recalculate by reading the entire pad file
|
||||||
printf("Error: Cannot calculate pad checksum\n");
|
|
||||||
free(pad_chksum);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get input text - either from parameter or user input
|
// Get input text - either from parameter or user input
|
||||||
if (input_text != NULL) {
|
if (input_text != NULL) {
|
||||||
@@ -464,7 +459,7 @@ int encrypt_text(const char* pad_identifier, const char* input_text) {
|
|||||||
|
|
||||||
// Use universal ASCII armor generator
|
// Use universal ASCII armor generator
|
||||||
char* ascii_output;
|
char* ascii_output;
|
||||||
if (generate_ascii_armor(chksum_hex, current_offset, ciphertext, input_len, &ascii_output) != 0) {
|
if (generate_ascii_armor(pad_chksum, current_offset, ciphertext, input_len, &ascii_output) != 0) {
|
||||||
printf("Error: Failed to generate ASCII armor\n");
|
printf("Error: Failed to generate ASCII armor\n");
|
||||||
free(pad_data);
|
free(pad_data);
|
||||||
free(ciphertext);
|
free(ciphertext);
|
||||||
@@ -746,7 +741,6 @@ int encrypt_file(const char* pad_identifier, const char* input_file, const char*
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char chksum_hex[MAX_HASH_LENGTH];
|
|
||||||
uint64_t current_offset;
|
uint64_t current_offset;
|
||||||
|
|
||||||
char pad_path[MAX_HASH_LENGTH + 20];
|
char pad_path[MAX_HASH_LENGTH + 20];
|
||||||
@@ -791,12 +785,8 @@ int encrypt_file(const char* pad_identifier, const char* input_file, const char*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate XOR checksum of pad file
|
// Use pad_chksum directly - it's already the checksum from the filename
|
||||||
if (calculate_checksum(pad_path, chksum_hex) != 0) {
|
// No need to recalculate by reading the entire pad file
|
||||||
printf("Error: Cannot calculate pad checksum\n");
|
|
||||||
free(pad_chksum);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we have enough pad space
|
// Check if we have enough pad space
|
||||||
struct stat pad_stat;
|
struct stat pad_stat;
|
||||||
@@ -927,7 +917,7 @@ int encrypt_file(const char* pad_identifier, const char* input_file, const char*
|
|||||||
|
|
||||||
// Use universal ASCII armor generator
|
// Use universal ASCII armor generator
|
||||||
char* ascii_output;
|
char* ascii_output;
|
||||||
if (generate_ascii_armor(chksum_hex, current_offset, encrypted_data, file_size, &ascii_output) != 0) {
|
if (generate_ascii_armor(pad_chksum, current_offset, encrypted_data, file_size, &ascii_output) != 0) {
|
||||||
printf("Error: Failed to generate ASCII armor\n");
|
printf("Error: Failed to generate ASCII armor\n");
|
||||||
fclose(output_fp);
|
fclose(output_fp);
|
||||||
free(encrypted_data);
|
free(encrypted_data);
|
||||||
@@ -961,7 +951,7 @@ int encrypt_file(const char* pad_identifier, const char* input_file, const char*
|
|||||||
// Pad checksum: 32 bytes (binary)
|
// Pad checksum: 32 bytes (binary)
|
||||||
unsigned char pad_chksum_bin[32];
|
unsigned char pad_chksum_bin[32];
|
||||||
for (int i = 0; i < 32; i++) {
|
for (int i = 0; i < 32; i++) {
|
||||||
sscanf(chksum_hex + i*2, "%2hhx", &pad_chksum_bin[i]);
|
sscanf(pad_chksum + i*2, "%2hhx", &pad_chksum_bin[i]);
|
||||||
}
|
}
|
||||||
fwrite(pad_chksum_bin, 1, 32, output_fp);
|
fwrite(pad_chksum_bin, 1, 32, output_fp);
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
// Version - Updated automatically by build.sh
|
// Version - Updated automatically by build.sh
|
||||||
#define OTP_VERSION "v0.3.41"
|
#define OTP_VERSION "v0.3.42"
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
#define MAX_INPUT_SIZE 4096
|
#define MAX_INPUT_SIZE 4096
|
||||||
|
|||||||
Reference in New Issue
Block a user