Nilorea Library crypto vigenere api test.
int main(int argc, char* argv[]) {
void usage(void) {
fprintf(stderr,
"%s usage:\n"
" -i input_file [optional] use a file as datas instead of hard coded 3 lines text\n"
" -v version\n"
" -V log level: LOG_INFO, LOG_NOTICE, LOG_ERR, LOG_DEBUG\n"
" -h help\n",
argv[0]);
}
int getoptret = 0, ret = 0,
N_STR* input_name = NULL;
while ((getoptret = getopt(argc, argv, "i:hvV:")) != EOF) {
switch (getoptret) {
case 'i':
break;
case 'v':
fprintf(stderr, "Date de compilation : %s a %s.\n", __DATE__, __TIME__);
exit(1);
case 'V':
if (!strncmp("LOG_NULL", optarg, 5)) {
} else {
if (!strncmp("LOG_NOTICE", optarg, 6)) {
} else {
if (!strncmp("LOG_INFO", optarg, 7)) {
} else {
if (!strncmp("LOG_ERR", optarg, 5)) {
} else {
if (!strncmp("LOG_DEBUG", optarg, 5)) {
} else {
fprintf(stderr, "%s n'est pas un niveau de log valide.\n", optarg);
exit(-1);
}
}
}
}
}
break;
default:
case '?': {
if (optopt == 'V') {
fprintf(stderr, " => Missing log level\n");
} else if (optopt == 'p') {
fprintf(stderr, " => Missing port\n");
} else if (optopt == 'i') {
fprintf(stderr, " => Missing filename\n");
} else if (optopt != 's') {
fprintf(stderr, " => Unknow missing option %c\n", optopt);
}
usage();
exit(1);
}
case 'h': {
usage();
exit(1);
}
}
}
"##############################################################\n"
"# This is an example of crypto encode/decode, with a newline #\n"
"# This is the end of the test #\n"
"##############################################################");
N_STR* key =
char_to_nstr(
"RKCHSLZWFNASULJFVPRVUUUAEUVEMSSGEVNWIMVPZVIWITBGIUBEQVEURBYEWTMCQZZYNWQMRAIBTMHDIKIZHOVZQUFONRQDSRDFNTTGVEKOSTSAEABLOXMGTTWIMPNE");
if (input_name) {
N_STR* output_name_enc = NULL;
N_STR* output_name_dec = NULL;
N_STR* output_name_dec_question = NULL;
nstrprintf(output_name_dec_question,
"%s.crypt_decoded_question",
_nstr(input_name));
n_log(
LOG_DEBUG,
"Decoded with question/answer file saved in %s",
_nstr(output_name_dec_question));
} else {
ret = 1;
}
} else {
ret = 1;
}
} else {
ret = 1;
}
}
exit(ret);
}
#define _nstr(__PTR)
N_STR or "NULL" string for logging purposes.
N_STR * n_base64_decode(N_STR *bufcoded)
decode a N_STR *string
N_STR * n_base64_encode(N_STR *input)
encode a N_STR *string
N_STR * n_vigenere_encode_qa(N_STR *input_data, N_STR *question, N_STR *answer)
directly vigenere encode a file using key
int n_vigenere_decode_file_qa(N_STR *in, N_STR *out, N_STR *question, N_STR *answer)
directly vigenere decode a file using question and answer
N_STR * n_vigenere_decode(N_STR *string, N_STR *key)
decode input using vigenere cypher and key
N_STR * n_vigenere_get_answer(N_STR *root_key, N_STR *question)
get an answer from a root key and a question
N_STR * n_vigenere_decode_qa(N_STR *input_data, N_STR *question, N_STR *answer)
directly vigenere decode a file using key
N_STR * n_vigenere_encode(N_STR *string, N_STR *key)
encode input using vigenere cypher and key
int n_vigenere_encode_file(N_STR *in, N_STR *out, N_STR *key)
directly vigenere encode a file using key
int n_vigenere_decode_file(N_STR *in, N_STR *out, N_STR *key)
directly vigenere decode a file using key
N_STR * n_vigenere_get_question(size_t question_size)
get a question generated from the current machine hardware (disk&cpu)
N_STR * n_vigenere_quick_decode(N_STR *encoded_data)
quick decode data
#define n_log(__LEVEL__,...)
Logging function wrapper to get line and func.
#define LOG_DEBUG
debug-level messages
#define LOG_ERR
error conditions
void set_log_level(const int log_level)
Set the global log level value ( static int LOG_LEVEL )
#define LOG_NOTICE
normal but significant condition
#define LOG_NULL
no log output
#define LOG_INFO
informational
size_t written
size of the written data inside the string
size_t length
length of string (in case we wanna keep information after the 0 end of string value)
#define free_nstr(__ptr)
free a N_STR structure and set the pointer to NULL
N_STR * char_to_nstr(const char *src)
Convert a char into a N_STR, short version.
#define nstrprintf(__nstr_var, __format,...)
Macro to quickly allocate and sprintf to N_STR.
A box including a string and his lenght.
base64 encoding and decoding functions using N_STR
vigenere encoding and decoding functions using N_STR/files
List structures and definitions.
N_STR and string function declaration.