
                          Apache Rampart/C

  What is it?
  -----------

  Apache Rampart/C is the security module of the Apache Axis2/C. Rampart/C 
  is an effort to implement WS-Security sepcification in C language. 
  In addition Apache Rampart/C configurations are based on security policy assertions as per WS-Security Policy specificatoin.
  Please have a look at http://ws.apache.org/rampart/c/ for more information.
  
  As a project of the Apache Software Foundation, the
  developers aim to collaboratively develop and maintain a robust,
  commercial-grade, standards-based Web Services stack implementation with 
  freely available source code.

  The Latest Version
  ------------------

  You can get the latest svn checkout of Apache RampartC module from

  https://svn.apache.org/repos/asf/webservices/rampart/trunk/c

  Installation
  ------------

  Please see the file called INSTALL.

  Licensing
  ---------

  Please see the file called LICENSE.

  Contacts
  --------

     o If you want freely available support for using Apache Rampart/C please
       join the Apache Axis2/C user community by subscribing to users mailing
       list, axis-c-user@ws.apache.org' as described at
       http://ws.apache.org/axis2/c/mail-lists.html

     o If you have a bug report for Apache Rampart/C please go log a Jira issue
       at http://issues.apache.org/jira/browse/RAMPARTC

     o If you want to participate in actively developing Apache Rampart/C please
       subscribe to the `rampart-c-dev@ws.apache.org' mailing list as described at
       http://ws.apache.org/rampart/c/lists_issues.html

  Acknowledgments
  ----------------

  Apache Rampart/C relies heavily on the use of autoconf and libtool to provide
  a build environment. And also it uses openssl.

