<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
  ~  Licensed to the Apache Software Foundation (ASF) under one
  ~  or more contributor license agreements.  See the NOTICE file
  ~  distributed with this work for additional information
  ~  regarding copyright ownership.  The ASF licenses this file
  ~  to you under the Apache License, Version 2.0 (the
  ~  "License"); you may not use this file except in compliance
  ~  with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~  Unless required by applicable law or agreed to in writing,
  ~  software distributed under the License is distributed on an
  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~  KIND, either express or implied.  See the License for the
  ~  specific language governing permissions and limitations
  ~  under the License.
  -->

<document>

  <properties>
    <title>Apache Rampart</title>
  </properties>

<body>
  
<section name="Apache Rampart">
<p>Rampart is the security module of Axis2. It secures SOAP messages
according to specifications in the WS-Security stack. Rampart implements the
following specifications:</p>
<ul>
  <li>WS - Security 1.0</li>
  <li>WS - Secure Conversation - February 2005</li>
  <li>WS - Security Policy - 1.1 - July 2005</li>
  <li>WS - Trust - February 2005</li>
  <li>WS - Trust - WS-SX spec - EXPERIMENTAL</li>
</ul>
</section>

</body>
</document>
