<?xml version="1.0"?>
<!--
 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>Fulcrum YAAFI Avalon Container</title>
    <author email="siegfried.goeschl@it20one.at">Siegfried Goeschl</author>
  </properties>

  <body>

    <section name="Cryptography Support">

      <p>
        The YAAFI container supports decryption of configuration files using
        Sun's JCA (Java Crypto Architecture). The encryption/decryption is 
        based on DES using 56 bit key length. Starting with fulcrum-yaafi-1.0.6
        the decryption support was moved to fulcrum-yaafi-crypto.
      </p>

      <subsection name="JDK Support">
        <table>
          <tr>
            <td>JDK 1.3.x</td>
            <td>
              For JDK 1.3.x the <a href="http://java.sun.com/products/jce/index-122.html">
              Java Cryptography Extension (JCE) 1.2.2</a> needs to be installed.
              Furthermore you need to add the jce1_2_2.jar to your Maven repository
              and project.xml
            </td>
          </tr>
          <tr>
            <td>JDK 1.4.x</td>
            <td>
              The current JDK's have the JCA built-in therefore no extra configuration
              is required.
            </td>
          </tr>
          <tr>
            <td>JDK 1.5.x</td>
            <td>
              The current JDK's have the JCA built-in therefore no extra configuration
              is required.
            </td>
          </tr>
          <tr>
            <td>JDK 1.6.x</td>
            <td>
              The current JDK's have the JCA built-in therefore no extra configuration
              is required.
            </td>
          </tr>          
        </table>
      </subsection>
            
      <subsection name="Availabe Algorithms">
        <table>
          <tr>
            <th>Provider Version</th>
            <th>Algorithms</th>
          </tr>
          <tr>
            <td>SunJCE 1.22</td>
            <td>PBEWithMD5AndDES</td>
          </tr>
          <tr>
            <td>SunJCE 1.42</td>
            <td>
              PBEWithMD5AndDES
            </td>
          </tr>
        </table>
      </subsection>

    </section>

  </body>

</document>
