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 1, 2023 (8:00 AM), maximum is 10 points (and 1 point bonus). 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 "input.txt" and "input2.txt" file. Plaintext contains simple ASCIIart image. Notes: - You should use BIO abstraction (and you get 1 bonus point), notably BIO_f_cipher() and BIO_f_base64() pushed to the BIO stack and then use BIO_read(). - Try to 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 (specifically for input2.txt). - Check fo failures (non existing input file, mangled input, ...) - While plaintext should be only ASCII text, you should do some validation before printing it to screen (or use some safe function). The source code must be compilable on aisa.fi.muni.cz server (or provided VM). Your submitted archive should contain C program and Makefile.