Rampart/C is the security module for Apache Axis2/C

You can get the latest svn checkout from https://svn.apache.org/repos/asf/webservices/rampart/trunk/c

Key features
-------------
1. Ability to send and verify UsernameTokens with 
    1. PlainText password
    2. Digested password

2. Ability to send Timestamp tokens
3. SOAP message encryption 
4. SOAP message signature

Major Changes Since Last Release
--------------------------------
1. WS-Security Policy (spec 1.1) based configurations 
2. Replay detection support
3. Improvements to the context model
4. Authentication module implementation
5. Credentials module implementation
6. Impirovements to Key/Certificate loading mechanisms
7. Easy to use deployment scripts 
8. Memory leak fixes
9. Many bug fixes


Un-Implemented Architecture Features 
------------------------------------
1. SAML support 
2. WS-Secure conversation
3. WS-Trust
4. WS-Security 1.1 support


We welcome your early feedback on this implementation.
Thanks for your interest in Rampart/C

