<?xml version="1.0" encoding="UTF-8"?>
<!--
 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.   
-->
<chapter id="ref_guide_encryption">
    <title>
        Encryption Provider
    </title>
    <para>
	OpenJPA provides an interface for a provider to implement 
	connection password encryption. Whenever a connection password 
	is needed, the <methodname>decrypt(String)</methodname> method will be invoked. See 
	<ulink url="../javadoc/org/apache/openjpa/lib/encryption/EncryptionProvider.html">
	<classname>org.apache.openjpa.lib.encryption.EncryptionProvider</classname>
	</ulink> for the detailed Javadoc. 
    </para>
    <para>
    	Notes:
    <itemizedlist>
        <listitem>
            <para>
                It is an OpenJPA user responsibility to implement the
                <classname>EncryptionProvider</classname>
                interface. There is no default implementation.
            </para>
        </listitem>
        <listitem>
            <para>
                The interface has an <methodname>encrypt(String)</methodname> method,
                but it is not called by the OpenJPA runtime. 
            </para>
        </listitem>        
    </itemizedlist>        
    </para>
</chapter>
