<?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>
        </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>
