cryptography/main.c
Geoffrey 478f35fe73 upd
2021-10-22 18:14:02 +02:00

118 lines
2.4 KiB
C
Executable File

#include "functions.h"
#include "cesar.h"
#include "vigenere.h"
int main(int argc, char *argv[]) {
int error = 0;
int numberCharacters = 0;
char *options[3] = {"-c","-v","-t"};
char *hook, *fileSrc, *fileDst, *buffer;
size_t sFile, i;
if(argc != 4) {
usage();
}
// Check options
for(i = 0; i < 3; i++){
if(strcmp(argv[1], options[i]) == 0){
error++;
}
}
if(error == 0) {
usage();
return -1;
}
// Check crypt|decrypt
if(strcmp(argv[2], "crypt") != 0 && strcmp(argv[2], "decrypt") != 0){
usage();
return -1;
}
hook = argv[2];
// Check file exist
error = fileExist(argv[3]);
if(error == -1){
printf("File doesn't exist\n");
// usage();
return -1;
}
fileSrc = argv[3];
if(strcmp(hook, "crypt") == 0) sFile = sizeof(char) + strlen(fileSrc) + 5;
else sFile = sizeof(char) + strlen(fileSrc) + 7;
fileDst = malloc(sFile);
for(i = 0; i < strlen(fileSrc); i++){
fileDst[i] = fileSrc[i];
}
fileDst[i++] = '.';
if(strcmp(hook, "decrypt") == 0){
fileDst[i++] = 'd';
fileDst[i++] = 'e';
}
fileDst[i++] = 'c';
fileDst[i++] = 'r';
fileDst[i++] = 'y';
fileDst[i++] = 'p';
fileDst[i++] = 't';
fileDst[i++] = '\0';
// Get size of the file
numberCharacters = fileNumberCaract(fileSrc);
// Malloc the dest buffer
buffer = malloc(sizeof(int) * numberCharacters);
memset(buffer, 0, sizeof(int) * numberCharacters);
if(strcmp(argv[1], "-c") == 0){
// Get key
int key;
do{
printf("Votre cle de chiffrement (entre 1 et 26): ");
scanf("%d",&key);
}while(key < 1 || key > 26);
if(strcmp(hook, "crypt") == 0)
error = cryptCesar(argv[3], key, numberCharacters, buffer);
if(strcmp(hook, "decrypt") == 0)
error = decryptCesar(argv[3], key, numberCharacters, buffer);
}
else if(strcmp(argv[1], "-v") == 0){
// Get key
char *key = malloc(8);
printf("Your key: ");
scanf("%s", key);
if(strcmp(hook, "crypt") == 0)
error = cryptVigenere(key, argv[3], buffer);
free(key);
}
else if(strcmp(argv[1], "-t") == 0){
// Get key
}
// Add data to file
addDataToFile(buffer, fileDst);
/* Display error */
/*
* if(error == 0) err(error, fileDst);
* else if(error == -1) err(error, fileSrc);
* else if(error == -2) err(error, fileDst);
*/
free(fileDst);
free(buffer);
return 0;
}