spread-gac contains the group admission control framework library gac-0.5.0. It has an additional function called SP_GAC() that can be used to establish access control while admitting a new group member. 

Installation
------------
1)Build and install gac-0.5.0 (see README file in the gac-0.5.0 subdirectory for the installation)
2)"./configure" and "make" in the spread-gac root directory.

Extension
---------
The spread API has beed extended to incorporate group admission control. In file "sp.c" there is a function called 
int SP_GAC_join(mailbox mbox, const char *group) which is to be used for group admission control. The usage is similar to SP_join function. SP_receive function has been modified to support the group admission control messages. 

Usage
-----
For using spread library routines, refer to spread Readme.txt in the root directory. There is a test program called "user" in the root directory to test how the library works. To use the program follow these steps:

1) Go to ./gac-0.5.0/bin/ca and run ./cad. This will create a self signed CA certificate and start the online ca daemon. 
2) Go to ./gac-0.5.0/bin/ga and run ./gad. This will start a group specific online Group Authority which will request a group charter from the CA. Here you can choose which signature scheme to be used for admission, the threshold and other policy based issues. 
3) Create files in the root directory called "cad.addr" and "gad.addr" containing the hostnames of the online CA and GA.
4) Now, the test program "user" can be used to start the clients and connect to spread daemons. It has an option to do either a plain "join" or a "gac-join". Every client should have a .gac directory which stores the configuretion files for the certificates, crl's etc. When a client does a join or a gac-join for the first time, it has to generate the certificates, receive the CA certificate, download group charter etc. All these are stored in the .gac directory. Once the join or gac-join is completed the group membership certificate is also stored in the .gac directory. 



