118 lines
2.4 KiB
C
Executable File
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;
|
|
}
|