Download and Install Fida Distribution for Windows
Short Instructions
- Download and extract the Fida distribution.
- Open the fida.dsw workspace with Microsoft Visual C++ and build all the projects in it
(build libcosm first). By default the client and server are simple, just add CRYPT
preprocessor definition to enable cryptography.
- build\ directory contains all the executables. Change the server specifications in
source/common.h [default = localhost] and if using cryptography, also
update the name of the public keyfile in source/secMan.h [default = key.pub].
Detailed Version
- Download the Fida distribution.
- Use a utility, such as WinRAR, to extract the fida distribution. Download WinRAR 3.40 or the latest version from here.
- Go to the top-most directory of the extracted fida distribution.
- Open the fida.dsw with Microsoft Visual C++ and build all the projects in it (build libcosm
first). By default, the client and server are built without cryptography. For building the
rest of the projects, use Batch Build: in toolbar, goto Build -> Batch Build ->
Build [Shortcut (in order): alt+b, u, alt+b].
- If everything goes correct, all executables should now be present in the build/ directory.
The keyUtil, sign, and verify executables are not needed when Fida is built
without cryptography.
- Test the Fida build by executing the server and client binaries. By default, these
will load the libraries (.dll) from a simple sorting application. The source code for this
application can be found in the example subdirectory in the Fida distribution.
Enabling Cryptography Support
- Before building in step 4 above, add the CRYPT preprocessor definition in project settings of
client and server projects: in toolbar, goto Project -> Settings [Shortcut: alt+f7].
Choose C/C++ tab and then add CRYPT to the preprocessor definitions.
- Everything should be the same as above, except that the client.exe and the server.exe are
cryptography enabled. The key signing executables are relevant now as well: keyUtil is
for generating keys, sign for signing files, and verify to check the validity of signed
files.
- If you want to setup a sample server. First, you need to sign the clientApp.dll application.
For that, generate a key using keyUtil.exe
(keyUtil.exe key password),
and sign the clientApp.dll using sign.exe
(sign.exe clientApp.dll key.pri password). You may use verify.exe to
verify whether a signature for a file is consistent with a public key
(verify.exe clientApp.dll clientApp.sig key.pub).
- Keys consist of a key-pair. Upon generation, two files are created; the private key: key.pri and the
public key: key.pub. The private key is used by the server to sign library files and
generate the signature file: clientApp.sig, while the public key is used to verify the signature
by the client before loading the libary. This allows the client to trust that the application library was
created by the server.
- Test the Fida installation by executing the server.exe and client.exe binaries. Make sure that the
public key from the server is present in the cliet subdirectory so that it can verify any application
libraries downloaded from the server.
Setting up Fida for use with remote clients
- Change the server specifications from source/common.h file. By default this is
set to localhost which means that the server will only accept clients on the same machine. Change
this to your machine name so that external clients can communicate with the server.
- For running the server to support linux/mac clients, your running server directory should contain
- server.exe executable.
- serverApp.dll library file.
- clientApp.dll in a new directory named ./x86/Win32/
- If using cryptography: clientApp.sig in the directory named ./x86/Win32/
- Distribute the client.exe and run it on any machine.
- If using cryptography: with the client, distribute the public key file, key.pub also. Edit
the source/secMan.h for the name of the public keyfile [default: key.pub].
- client will automatically get the clientApp.dll from the server, and execute normally.
If cryptography is enabled, it checks the signature against the file as well.