<?xml version="1.0" encoding="UTF-8"?>
<!--
 !
 ! Copyright 2006 The Apache Software Foundation.
 !
 ! Licensed 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.
 !-->
<!-- services.xml of sample-9 : Encryption using a known key -->
<service>
	<operation name="echo">
		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
	</operation>    
	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.sample09.SimpleService</parameter>
	
	<module ref="rampart" />
	
    <parameter name="InflowSecurity">
        <action>
            <items>Encrypt</items>
            <passwordCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</passwordCallbackClass>
            <decryptionPropFile>service.properties</decryptionPropFile>
            <isBSPCompliant>false</isBSPCompliant>
        </action>
    </parameter>
    
    <parameter name="OutflowSecurity">
        <action>
            <items>Encrypt</items>
            <user>service</user>
            <encryptionKeyIdentifier>EmbeddedKeyName</encryptionKeyIdentifier>
            <encryptionPropFile>service.properties</encryptionPropFile>
            <embeddedKeyCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</embeddedKeyCallbackClass>
            <embeddedKeyName>SessionKey</embeddedKeyName>
        </action>
    </parameter>
    
</service>
