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

<uddi xmlns="urn:juddi-apache-org:v3_client" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:juddi-apache-org:v3_client ..\..\juddi-client\src\main\resources\xsd\uddi-client.xsd">
  <reloadDelay>5000</reloadDelay>
  <client name="test-client">
    <nodes>
      <node isHomeJUDDI="true">
        <!-- required 'default' node -->
        <name>default</name>
        <description>Main jUDDI node</description>
        <properties>
          <property name="serverName" value="localhost" />
          <property name="serverPort" value="8080" />
		  <!-- for UDDI nodes that use HTTP u/p, using the following 
					<property name="basicAuthUsername" value="root" />
					<property name="basicAuthPassword" value="password" />
					<property name="basicAuthPasswordIsEncrypted" value="false" />
					<property name="basicAuthPasswordCryptoProvider" value="org.apache.juddi.v3.client.crypto.AES128Cryptor (an example)" />-->
        </properties>
        <proxyTransport>org.apache.juddi.v3.client.transport.AspNetTransport</proxyTransport>
        <custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
        <inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
	    	<inquiryRESTUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiryRest</inquiryRESTUrl>
        <publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
        <securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
        <subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
        <subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
        <juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
        <factoryInitial>not used</factoryInitial>
        <factoryURLPkgs>not used</factoryURLPkgs>
        <factoryNamingProvider>not used</factoryNamingProvider>
      </node>
    </nodes>

    <clerks registerOnStartup="false">
      <clerk name="default" node="default" publisher="uddi" password="uddi"  isPasswordEncrypted="false" cryptoProvider=""/>
      
    </clerks>
    <signature>
      <signingKeyStorePath>My</signingKeyStorePath>
      <signingKeyStoreType>CurrentUser</signingKeyStoreType>
      <signingKeyStoreFilePassword>ignored</signingKeyStoreFilePassword>
      <signingKeyPassword>ignored</signingKeyPassword>
      
      <!-- this is the localhost Test certificate -->
      <signingKeyAlias>‎518ed27c</signingKeyAlias>
      <canonicalizationMethod>http://www.w3.org/2001/10/xml-exc-c14n#</canonicalizationMethod>
      <signatureMethod>http://www.w3.org/2000/09/xmldsig#rsa-sha1</signatureMethod>
      <XML_DIGSIG_NS>http://www.w3.org/2000/09/xmldsig#</XML_DIGSIG_NS>
      <trustStorePath>ignored</trustStorePath>
      <trustStoreType>ignored</trustStoreType>
      <trustStorePassword>ignored</trustStorePassword>
      <checkTimestamps>true</checkTimestamps>
      <checkTrust>false</checkTrust>
      <checkRevocationCRL>false</checkRevocationCRL>
      <checkRevocationOCSP>false</checkRevocationOCSP>
      <keyInfoInclusionSubjectDN>true</keyInfoInclusionSubjectDN>
      <keyInfoInclusionSerial>false</keyInfoInclusionSerial>
      <keyInfoInclusionBase64PublicKey>true</keyInfoInclusionBase64PublicKey>
      <digestMethod>http://www.w3.org/2000/09/xmldsig#sha1</digestMethod>
    </signature>
    <subscriptionCallbacks>
      <keyDomain>uddi:org.apache.juddi</keyDomain>
      <listenUrl>http://localhost:4444/callback</listenUrl>
      <autoRegisterBindingTemplate>false</autoRegisterBindingTemplate>
      <autoRegisterBusinessServiceKey>uddi:org.apache.juddi:callbackServices</autoRegisterBusinessServiceKey>
      <signatureBehavior>DoNothing</signatureBehavior>
    </subscriptionCallbacks>
    <XtoWsdl>
      <IgnoreSSLErrors>false</IgnoreSSLErrors>
    </XtoWsdl>
  </client>
</uddi>
