Apache 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
    - Username and PlainText password
    - Username and Digested password

2. Ability to send Timestamp tokens

3. SOAP message encryption
    - With derived key support for improved security
    - Symmetric and Asymmetric modes of operations
    - Support for AES and Tripple DES encryption
    - Signature encryption
    - Keys encryption

4. SOAP message signature
    - XML signature with RSA-SHA1
    - Message authentication with HMAC-SHA1
    - Signature confirmation support
    - SOAP Header signing

5. WS-Security Policy (spec 1.1) based configurations
    - Support for both Symmetric as well as Asymmetric policy bindings
    - Support for different modes of key identifiers
    - Support for different algorithm suites
        [Basic128, Basic 192, Basic256, TrippleDES, Basic128Rsa15, Basic192Rsa15,Basic256Rsa15, TripleDesRsa15]
    - Support for IssuedToken assertion in client side.
    - Support for SAMLToken assertion.

6. Replay detection support
    - Easy to use built-in replay detection module
    - Ability to deploy a customized replay detection module

7. Different protection orders
    - Encrypt before signing
    - Sign before encrypting

8. Extensible modules
    - Password callback module
    - Authentication module
    - Credentials module

9. Keys management
    - Support for X509 token profile
    - Support for Key identifiers, Thumb prints, Issuer/Serial pairs, Embedded and Direct references

10. WS-Secure Conversation Language support (Experimental)
    - Establishing Security Context and thereby maintaining a session
    - Per message key derivation
    - Support for stored securtiy context token 

11. WS-Trust Language support (Experimental)
    - Security Token Services (STS)
    - STS Client
    - Server and Client entrophy support

12. SAML Support
    - Support for Creation and Processing of SAML Core 1.1 Assertions
    - SAML Token as Sign Supporting Token

10. Other
    - Easy to use deployment scripts
    - A comprehensive set of samples

Major Changes Since Last Release
--------------------------------
1. WS-Secure Conversation Language support (Experimental)
2. WS-Trust Language support (Experimental)
3. SAML 1.1 Support
4. Memory leak fixes
5. Many bug fixes


Planned to be implemented Architecture Features 
------------------------------------
1. Signing and Encryption with SAML
2. WS-Trust : Client/Server challenege response protocol
 

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

