Assignment for week 6: The goal is to implement a simple tool for symmetric decryption of BASE64 encoded and AES-CBC encrypted file. Deadline: November 7, 2024 (8:00 AM), maximum is 10 points. With OpenSSL3, create a program that decodes file from BASE64 encoding, then decrypts in AES-CBC mode, and prints the plaintext to the standard output. The file name (with ciphertext) is specified by the required command line parameter. Program takes only one parameter - input file name. The ciphertext is BASE64 encoded, encrypted by AES-128 cipher in CBC mode with padding. The KEY is "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff" and IV is "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f" (in C string notation). Test with "test1.txt", "test2.txt" and "test3.txt" files. For the last file, there is also a decrypted file "test3_plaintext.txt" to verify your solution. Plaintexts contain simple ASCIIart images. The last line in plaintext is always similar to this: -------------THIS IS THE LAST LINE------------ If you do not see such a line, your solution is not fully decrypting the input. Notes: - Use BIO abstraction for full score, notably BIO_f_cipher() and BIO_f_base64() pushed to the BIO stack and then use BIO_read(). - If you use another approach without BIO abstraction, you can get only up to 7 points. - Avoid implementing BASE64 decoder yourself, use OpenSSL functions. - You can hardcode key and IV in the C source. - Check that the code processes the whole file. A common problem is if you use memory BIO (BIO_s_mem), you have to set EOF handling to process the last block properly, like bio = BIO_new(BIO_s_mem()); BIO_set_mem_eof_return(bio, 0); - Check for failures (non-existing input file, mangled input, etc.) - While plaintext should be only ASCII text, you should do some validation before printing it to screen (or use some safe print function). The source code must be compilable on aisa.fi.muni.cz server (or provided VM). Your submitted archive (zip or tar) should contain C program and Makefile.