
Introduction
After reading ATL
Server - Web Application/Web Service by Leon Finker I made a simple
application to illustrate an ATL implementation of Cryptography. One is a
command line tool, second is a WTL dialog (see above).
Background
Please read Cryptographic Reference part of ATL
Server Library Reference in MSDN Library.
Using the code
There are three projects, EncryptionDecryption which
contains classes to store parameters, to parse command line and to
encrypt/decrypt files based on provided parameters. Console,
the console application and Window, the WTL application with
GUI.
Parameters are stored in the class Parameters with simple
getters/setters and one important method, IsValid which checks
Parameters consistency. Only valid Parameters can be
processed by the next class Engine with method DoJob.
Errors are managed by class Error which simply stores error codes
and messages. Class Parser (required in console application only)
parses the command line arguments. The WTL project, dialog based, has an
additional class, FileEdit, the file-drop target. Users do not have
to type filenames or choose files from the open-file dialog, he/she can drag the
file from Explorer and drop it on the edit control.
For the console
application these steps are required:
- Create
Error, Parameters and Parser
instances
- Parse command line (
ParseCommandLine method)
- Check parameters (
IsValid method)
- Create
Engine instance and call its DoJob method.
For the window application these steps are required:
- Make
Parameters as member of window dialog class
- Create
Error instance and set parameters read from dialog
controls
- Check parameters (
IsValid method)
- Create
Engine instance and call it DoJob method.
As I said earlier, class FileEdit supports drag-drop files. But
for users who use browse button, window dialog class keeps track of chosen
folders. Two CString fields: m_szInputFileDir and
m_szOutputFileDir remember paths during browsing.
There is
possible to parametrize other things, like:
- Cryptographic Provider Type in
Initialize method of
CCryptProv class
- container name in
Initialize method of CCryptProv
class
- import/export cryptographic key
- and more...