Nilorea Library
C utilities for networking, threading, graphics
ex_base64.c

Nilorea Library crypto base64 api test.

Nilorea Library crypto base64 api test

Author
Castagnier Mickael
Version
1.0
Date
26/05/2015
#include "nilorea/n_log.h"
#include "nilorea/n_list.h"
#include "nilorea/n_str.h"
int main( int argc , char *argv[] )
{
N_STR *example_text = char_to_nstr( "This is an example of base64 encode/decode, with a newline:\nThis is the end of the testing test." );
example_text -> written= 0 ;
while( example_text -> data[ example_text -> written ] != '\0' )
{
example_text -> written ++ ;
}
n_log( LOG_NOTICE, "Testing base64, encoding text of size (%ld/%ld):\n%s" , example_text -> written , example_text -> length , _nstr( example_text ) );
N_STR *encoded_answer = n_base64_encode( example_text );
n_log( LOG_DEBUG , "encoded=\n%s" , _nstr( encoded_answer ) );
N_STR *decoded_answer = n_base64_decode( encoded_answer );
n_log( LOG_DEBUG , "decoded=\n%s" , _nstr( decoded_answer ) );
free_nstr( &encoded_answer );
free_nstr( &decoded_answer );
if( argc > 0 && argv[ 1 ] )
{
N_STR *input_data = NULL;
N_STR *output_name = NULL;
N_STR *output_data = NULL;
N_STR *decoded_data = NULL;
nstrprintf( output_name , "%s.encoded" , argv[ 1 ] );
input_data = file_to_nstr( argv[ 1 ] );
n_log( LOG_DEBUG , "Encoding file %s size %ld" , argv[ 1 ] , input_data -> written );
if( input_data )
{
output_data = n_base64_encode( input_data );
nstr_to_file( output_data , _nstr( output_name ) );
n_log( LOG_DEBUG , "Generated encoded %s version of size %ld" , _nstr( output_name ) , output_data -> written );
nstrprintf( output_name , "%s.decoded" , argv[ 1 ] );
decoded_data = n_base64_decode( output_data );
nstr_to_file( decoded_data , _nstr( output_name ) );
n_log( LOG_DEBUG , "Generated decoded %s version of size %ld" , _nstr( output_name ) , decoded_data -> written );
free_nstr( &decoded_data );
}
free_nstr( &input_data );
free_nstr( &output_name );
free_nstr( &output_data );
}
free_nstr( &example_text );
exit( 0 );
} /* END_OF_MAIN */
#define _nstr(__PTR)
N_STR or "NULL" string for logging purposes.
Definition: n_common.h:178
N_STR * n_base64_decode(N_STR *bufcoded)
decode a N_STR *string
Definition: n_base64.c:174
N_STR * n_base64_encode(N_STR *input)
encode a N_STR *string
Definition: n_base64.c:249
#define n_log(__LEVEL__,...)
Logging function wrapper to get line and func.
Definition: n_log.h:74
#define LOG_DEBUG
debug-level messages
Definition: n_log.h:66
void set_log_level(const int log_level)
Set the global log level value ( static int LOG_LEVEL )
Definition: n_log.c:97
#define LOG_NOTICE
normal but significant condition
Definition: n_log.h:62
#define free_nstr(__ptr)
free a N_STR structure and set the pointer to NULL
Definition: n_str.h:222
#define nstrprintf(__nstr_var,...)
Macro to quickly allocate and sprintf to N_STR *.
Definition: n_str.h:97
int nstr_to_file(N_STR *str, char *filename)
Write a N_STR content into a file.
Definition: n_str.c:459
N_STR * char_to_nstr(const char *src)
Convert a char into a N_STR, short version.
Definition: n_str.c:273
N_STR * file_to_nstr(char *filename)
Load a whole file into a N_STR.
Definition: n_str.c:332
A box including a string and his lenght.
Definition: n_str.h:173
base64 encoding and decoding functions using N_STR
List structures and definitions.
Generic log system.
N_STR and string function declaration.