blob: 5decdfce3ee30c817ff745cd9950ef742c938b83 [file] [log] [blame]
/*
* Copyright 2001-2008 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.
*
*/
using org.apache.juddi.jaxb;
using org.apache.juddi.v3.client;
using org.apache.juddi.v3.client.config;
using org.apache.juddi.v3.client.cryptor;
using org.apache.juddi.v3.client.transport;
using org.uddi.apiv3;
using System;
namespace org.apache.juddi.client.sample
{
class DigitalSignaturesExample
{
public static void Run(string[] args)
{
UDDIClient clerkManager = null;
Transport transport = null;
UDDIClerk clerk = null;
try
{
clerkManager = new UDDIClient("uddi.xml");
transport = clerkManager.getTransport("default");
UDDI_Security_SoapBinding security = transport.getUDDISecurityService();
UDDI_Inquiry_SoapBinding inquiry = transport.getUDDIInquiryService();
UDDI_Publication_SoapBinding publish = transport.getUDDIPublishService();
clerk = clerkManager.getClerk("default");
find_business fb = new find_business();
fb.authInfo = clerk.getAuthToken(security.Url);
fb.findQualifiers = new string[] { UDDIConstants.APPROXIMATE_MATCH };
fb.name = new name[1];
fb.name[0] = new name(UDDIConstants.WILDCARD, "en");
businessList bl = inquiry.find_business(fb);
if (bl.businessInfos.Length > 0)
{
Console.Out.WriteLine(bl.businessInfos[0].name[0].Value);
Console.Out.WriteLine("attempting to sign");
businessService sd = clerk.getServiceDetail(bl.businessInfos[0].serviceInfos[0].serviceKey);
//pist, the signing config comes from the stuff in in uddi.xml
DigSigUtil ds = new DigSigUtil(clerkManager.getClientConfig().getDigitalSignatureConfiguration());
businessService signedsvc = (businessService)ds.signUddiEntity(sd);
PrintUDDI<businessService> p = new PrintUDDI<businessService>();
Console.Out.WriteLine("signed successfully!");
Console.Out.WriteLine(p.print(signedsvc));
Console.Out.WriteLine("attempting verify and validate");
String err = "";
bool valid = ds.verifySignedUddiEntity(signedsvc, out err);
Console.Out.WriteLine("Signature is " + (valid ? "Valid, Yippy!" : "Invalid!") + " msg: " + err);
Console.Out.WriteLine("saving");
clerk.register(signedsvc);
Console.Out.WriteLine("reloading content from the server...");
get_serviceDetail gsd = new get_serviceDetail();
gsd.authInfo = clerk.getAuthToken(clerk.getUDDINode().getSecurityUrl());
gsd.serviceKey = new string[] { signedsvc.serviceKey };
sd = inquiry.get_serviceDetail(gsd).businessService[0];
Console.Out.WriteLine(p.print(sd));
Console.Out.WriteLine("attempting verify and validate");
err = "";
valid = ds.verifySignedUddiEntity(sd, out err);
Console.Out.WriteLine("Signature is " + (valid ? "Valid, Yippy!" : "Invalid!") + " msg: " + err);
}
else
Console.Out.WriteLine("no businesses were returned!");
}
catch (Exception ex)
{
while (ex != null)
{
System.Console.WriteLine("Error! " + ex.Message);
ex = ex.InnerException;
}
}
finally
{
if (transport != null && transport is IDisposable)
{
((IDisposable)transport).Dispose();
}
if (clerk != null)
clerk.Dispose();
}
}
}
}