Hi i have installed openssl on my linux machine and going through the header files and documentation (which is highly insufficint 🙁 ).
i am trying to build a project(in ‘c’) which uses symmetric crypto algos (i am focusing on aes256cbc).
The problem is i am confused as in how to use the library functions in my code.
For my implementation of aes256cbc i can directly use the functions defined in the ‘aes.h’ header file(which appeared to me at the first place).
But on googling i came accross some tutorial for this which are using ‘evp.h’ functions to do this http://saju.net.in/code/misc/openssl_aes.c.txt
Is there a specific reason for this or directly accessing the aes.h functions is better.
And also if someone can point me to a good documentation/tutorial of any kind on using the crypto library of openssl will be much appreciated.
many thanks
P.S forgive me if i am being naive
Using the EVP API has the advantage that you can use the same API for all the symmetric ciphers that OpenSSL supports, in a generic way. This makes it way easier to replace the algorithm used, or make the algorithm user-configurable at a later stage. Most of the code you write is not specific to the encryption algorithm you selected.
Here’s a simple example for encryption with AES-256 in CBC mode:
For simplicity, I omitted error handling.
IMO one of the most important pieces of documentation on OpenSSL is Network Security with OpenSSL by Viega/Messier/Chandra. It is from 2002 (0.9.7), so does not cover changes to OpenSSL during the last 10 years, but it is IMO still a less painful way to learn OpenSSL than by using only the manual pages.