1) create similar decrypt_file.cpp program that decrypts given file using given password 2) create random session key and save it as plaintext to file (using CryptGenKey, CryptExportKey (with dwBlobType = PLAINTEXTKEYBLOB)) 3) create new context and generate assymetric keys for signing and key exchange (using CryptAcquireContext (with dwFlags = CRYPT_NEWKEYSET)) 4) with generated private key for key exchange encrypt session key and save it to file (using CryptGenKey for creating session key, CryptGetUserKey (with dwKeySpec = AT_KEYEXCHANGE) and CryptExportKey (with dwBlobType = SIMPLEBLOB)