diff --git a/README.md b/README.md index fb71dee..473678c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# OTP Cipher - One Time Pad Implementation +r# OTP Cipher - One Time Pad Implementation A secure one-time pad (OTP) cipher implementation in C with automatic versioning system. diff --git a/build.sh b/build.sh index e2c5b4d..a7b3d30 100755 --- a/build.sh +++ b/build.sh @@ -50,6 +50,20 @@ increment_version() { print_status "Current version: $LATEST_TAG" print_status "New version: $NEW_VERSION" + # Stage all changes + if git add . 2>/dev/null; then + print_success "Staged all changes" + else + print_warning "Failed to stage changes (maybe not a git repository)" + fi + + # Commit changes with version message + if git commit -m "Version $NEW_VERSION - Automatic version increment" 2>/dev/null; then + print_success "Committed changes for version $NEW_VERSION" + else + print_warning "Failed to commit changes (maybe no changes to commit or not a git repository)" + fi + # Create new git tag if git tag "$NEW_VERSION" 2>/dev/null; then print_success "Created new version tag: $NEW_VERSION" diff --git a/otp b/otp deleted file mode 100755 index 204e135..0000000 Binary files a/otp and /dev/null differ diff --git a/otp.c b/otp.c index 47941ee..56f6e49 100644 --- a/otp.c +++ b/otp.c @@ -75,7 +75,7 @@ void show_progress(uint64_t current, uint64_t total, time_t start_time); // File operations int read_state_offset(const char* pad_hash, uint64_t* offset); int write_state_offset(const char* pad_hash, uint64_t offset); -int calculate_sha256(const char* filename, char* hash_hex); +int calculate_checksum(const char* filename, char* checksum_hex); void xor_checksum_256(const unsigned char* data, size_t len, unsigned char checksum[32]); char* custom_base64_encode(const unsigned char* input, int length); unsigned char* custom_base64_decode(const char* input, int* output_length); @@ -117,7 +117,7 @@ int interactive_mode(void) { list_available_pads(); break; case 5: { - printf("Enter pad hash (or prefix): "); + printf("Enter pad checksum (or prefix): "); char input[MAX_HASH_LENGTH]; if (fgets(input, sizeof(input), stdin)) { input[strcspn(input, "\n")] = 0; @@ -559,9 +559,9 @@ int generate_pad(uint64_t size_bytes, int display_progress) { fclose(urandom); fclose(pad_file); - // Calculate SHA-256 of the pad file - if (calculate_sha256(temp_filename, hash_hex) != 0) { - printf("Error: Cannot calculate pad hash\n"); + // Calculate XOR checksum of the pad file + if (calculate_checksum(temp_filename, hash_hex) != 0) { + printf("Error: Cannot calculate pad checksum\n"); unlink(temp_filename); return 1; } @@ -743,9 +743,9 @@ int generate_pad_with_entropy(uint64_t size_bytes, int display_progress, int use fclose(urandom); fclose(pad_file); - // Calculate SHA-256 of the pad file - if (calculate_sha256(temp_filename, hash_hex) != 0) { - printf("Error: Cannot calculate pad hash\n"); + // Calculate XOR checksum of the pad file + if (calculate_checksum(temp_filename, hash_hex) != 0) { + printf("Error: Cannot calculate pad checksum\n"); unlink(temp_filename); return 1; } @@ -778,7 +778,7 @@ int generate_pad_with_entropy(uint64_t size_bytes, int display_progress, int use double size_gb = (double)size_bytes / (1024.0 * 1024.0 * 1024.0); printf("Generated pad: %s (%.2f GB)\n", pad_path, size_gb); - printf("Pad hash: %s\n", hash_hex); + printf("Pad checksum: %s\n", hash_hex); printf("State file: %s\n", state_path); if (use_keyboard_entropy) { printf("Enhanced with keyboard entropy!\n"); @@ -816,9 +816,9 @@ int encrypt_text(const char* pad_identifier) { return 1; } - // Calculate SHA-256 of pad file - if (calculate_sha256(pad_path, hash_hex) != 0) { - printf("Error: Cannot calculate pad hash\n"); + // Calculate XOR checksum of pad file + if (calculate_checksum(pad_path, hash_hex) != 0) { + printf("Error: Cannot calculate pad checksum\n"); free(pad_hash); return 1; } @@ -988,8 +988,8 @@ int decrypt_text(const char* pad_identifier) { } // Verify pad integrity - if (calculate_sha256(pad_path, current_hash) != 0) { - printf("Error: Cannot calculate current pad hash\n"); + if (calculate_checksum(pad_path, current_hash) != 0) { + printf("Error: Cannot calculate current pad checksum\n"); return 1; } @@ -1098,7 +1098,7 @@ int write_state_offset(const char* pad_hash, uint64_t offset) { return 0; } -int calculate_sha256(const char* filename, char* hash_hex) { +int calculate_checksum(const char* filename, char* checksum_hex) { FILE* file = fopen(filename, "rb"); if (!file) { return 1; @@ -1142,9 +1142,9 @@ int calculate_sha256(const char* filename, char* hash_hex) { // Convert to hex string (64 characters) for (int i = 0; i < 32; i++) { - sprintf(hash_hex + (i * 2), "%02x", encrypted_checksum[i]); + sprintf(checksum_hex + (i * 2), "%02x", encrypted_checksum[i]); } - hash_hex[64] = '\0'; + checksum_hex[64] = '\0'; return 0; } @@ -1329,8 +1329,8 @@ void print_usage(const char* program_name) { printf("Usage:\n"); printf(" %s - Interactive mode\n", program_name); printf(" %s generate - Generate new pad\n", program_name); - printf(" %s encrypt - Encrypt text\n", program_name); - printf(" %s decrypt - Decrypt message\n", program_name); + printf(" %s encrypt - Encrypt text\n", program_name); + printf(" %s decrypt - Decrypt message\n", program_name); printf(" %s list - List available pads\n", program_name); printf("\nSize examples: 1GB, 5TB, 512MB, 2048 (bytes)\n"); printf("Pad selection: Full hash, prefix, or number from list\n");