Assignment for week 5: The goal is to work with a standard (RFC) document and implement test vectors in OpenSSL. Deadline: November 10, 2020 (8:00 AM), maximum is 10 points. Download and study IETF RFC-6070 document PKCS #5: Password-Based Key Derivation Function 2 (PBKDF2) Test Vectors. Write a C Linux program (with support of OpenSSL cryptographic library) that will compute and verify all 6 PBKDF2-SHA1 test vectors described it the RFC document. For each vector print result; stop the program if a test-vector fails. Then run the same tests (the same input parameters) but switch to PBKDF2-SHA256 and set output key length to 32 bytes. Print derived keys to the screen in hexadecimal format. Of course, the output will differ from the original vectors. Do not validate it in this case - results will be compared during marking. Your submitted archive (zip or tar) should contain one C program (and Makefile) that checks all 6 RFC-6070 vectors and then run all tests mentioned above. The output must contain at least 6 hexadecimal strings (keys) for the PBKDF2-SHA256 variant. The source code must be compilable on the provided virtual machine (Fedora) or on the aisa server. Hints: - start with 3_pbkdf_openssl example (no need to reinvent the wheel) - code quality matters; do not ignore compiler warnings (-Wall option will be used in Makefile) - "spaghetti" code means at least 2 points down (do not repeat code, use functions) - comment the code - use CRYPTO_memcmp from OpenSSL to compare binary data - NO plagiarism (even from previous years) Example of hexadecimal output (additional info is optional): Derived key using 1. vector PBKDF2-SHA256 (P="password", S="salt", c=1, dkLen=32) 12 0f b6 cf fc f8 b3 2c 43 e7 22 52 56 c4 f8 37 a8 65 48 c9 2c cc 35 48 08 05 98 7c b7 0b e1 7b ...