[prev in list] [next in list] [prev in thread] [next in thread]
List: jaxme-dev
Subject: RE: Web sphere 8.5 and WSS4J1. 6. 9 signing issue.
From: Martin Gainty <mgainty () hotmail ! com>
Date: 2014-09-25 12:48:43
Message-ID: BLU172-W35EECC95BE7FA063A947AFAEBE0 () phx ! gbl
[Download RAW message or body]
Date: Wed, 24 Sep 2014 13:08:15 -0400
Subject: Re: Web sphere 8.5 and WSS4J1. 6. 9 signing issue.
From: anupam.nandan@gmail.com
To: dev@ws.apache.org; coheigea@apache.org
Hi Colm
Thank you for your reply. I already tried with WSS4J 1.16.15 earlier. But same error. \
I was almost losing hope on this before your reply.
I will re try with 1.6.16 as soon as I get the setup again and let you know.
Thank you for your time .
MG>if after changing libraries you are calling no joy ..more than likely your private \
key is bad MG>can we see the ASN.1 output of private key.... if for no other reason \
than to verify attributes are non-negative? MG>Thanks and Regards,
On Wednesday, September 24, 2014, Colm O hEigeartaigh <coheigea@apache.org> wrote:
Could you try with a more recent version of WSS4J (1.6.16)?
Colm.
On Tue, Sep 23, 2014 at 6:18 PM, Anupam Nandan <anupam.nandan@gmail.com> wrote:
Hello
Can some one please help me on this ?
Thank you!
On Sunday, September 21, 2014, Anupam Nandan <anupam.nandan@gmail.com> wrote:
Hi All, I am trying to write a java client program (servlet), which will generate and \
sign the SOAP request with the keys provided by thrid party (keystore.jks). When I \
deploy the Servlet on tomcat it just works fine. But on web sphere 8.5 I am getting \
"RSA signature is not verified" . I tried debugging the issue but not sure what is \
going wrong.I tried finding answer online and added IS_BSP_COMPLIANT as false but \
didnt help.Most likely the issue is with signature. Let me know how I can trouble \
this issue. Any suggestion would be very helpful. Thank you for your time and looking \
forward for some guidance. Code \
-------------------------------------------------------------------------------------- \
------------------------------------------ attstmt.getAttributes().add(attr); assertion.getAttributeStatements().add(attstmt); AssertionWrapper \
assertionWrper = new AssertionWrapper(assertion); WSSecSAMLToken samlToken = new \
WSSecSAMLToken(); samlToken.build(soapDocument, assertionWrper, \
header); SoapMessageWithoutHeader = \
nodeToString(soapDocument); System.out.println("Anupam SOAP Message with SAML 2.0 \
Assertion : "+SoapMessageWithoutHeader); // Inserting the wsu:Timestamp \
WSSecTimestamp timestamp = new \
WSSecTimestamp(); timestamp.setTimeToLive(TIMESTAMP_VALIDATE_PERIOD); WSSecHeader \
timestampHeader = new \
WSSecHeader(); timestampHeader.insertSecurityHeader(soapDocument); timestamp.build(soapDocument, \
timestampHeader); SoapMessageWithoutHeader = \
nodeToString(soapDocument); System.out.println("Anupam SOAP Message with time stamp \
: "+SoapMessageWithoutHeader); System.out.println("Anupam path to key store \
"+pathtoKeyStore); WSSecSignature builder = new \
WSSecSignature(); builder.setUserInfo(keyAlias, \
pwdValue); builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); java.util.Properties \
prop = new java.util.Properties(); \
prop.setProperty("org.apache.ws.security.crypto.provider", \
"org.apache.ws.security.components.crypto.Merlin"); prop.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", \
"jks"); prop.setProperty("org.apache.ws.security.crypto.merlin.keystore.base64.encoded", \
"false"); prop.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", \
pwdValue); prop.setProperty("org.apache.ws.security.crypto.merlin.file", \
pathtoKeyStore); prop.setProperty(WSHandlerConstants.IS_BSP_COMPLIANT, \
"false"); //prop.setProperty(WSHandlerConstants.ALLOW_NAMESPACE_QUALIFIED_PASSWORD_TYPES, \
"true"); Crypto crypto = \
CryptoFactory.getInstance(prop); builder.prepare(soapDocument, crypto, header); \
Vector parts = new Vector();
parts.add(new WSEncryptionPart(TIMESTAMP_LOCALNAME, TIMESTAMP_QNAME, \
CONTENT)); parts.add(new \
WSEncryptionPart(builder.getBSTTokenId())); parts.add(new \
WSEncryptionPart(ASSERTION_LOCALNAME, ASSERTION_QNAME ,ELEMENT)); parts.add(new \
WSEncryptionPart(SOAPBODY_LOCALNAME,SOAPBODY_QNAME,CONTENT \
)); builder.setParts(parts); builder.prependBSTElementToHeader(header); build \
er.computeSignature(builder.addReferencesToSign(parts,header)); Proxy \
proxy = new Proxy(Proxy.Type.HTTP, new \
InetSocketAddress("63.66.64.232",8080)); String jNetURL1= "https://XXX/"; URL \
endpoint = new URL(jNetURL1); HttpURLConnection con = (HttpURLConnection) \
endpoint.openConnection(proxy); con.setRequestMethod("POST"); con.setRequestProperty("Content-type", \
"text/xml; charset=utf-8"); con.setRequestProperty("SOAPAction", \
"http://jnet.XXX/XX"); \
con.setDoInput(true); con.setDoOutput(true); OutputStream reqStream = \
con.getOutputStream(); if(con ==null){ System.out.println("Connection to \
Jnet is null"); } String SoapMessageWithSign = \
nodeToString(soapDocument); System.out.println("Anupam SOAP Message with after \
signature : "+SoapMessageWithSign); reqStream.write(SoapMessageWithSign.getBytes());
String jNetresponse=null; try { BufferedReader httpReader = new \
BufferedReader(new InputStreamReader( con.getInputStream())); String \
inputLine = null; StringBuffer buff = new \
StringBuffer(); System.out.println("value of httpreader \
"+httpReader.ready()); System.out.println("httpReader value \
"+httpReader.toString()); while ((inputLine = httpReader.readLine()) != null) \
{ buff.append(inputLine); System.out.println("input line "+inputLine); } \
jNetresponse = buff.toString(); //System.out.println("Anupam Post \
response:"+response); }catch(SOAPFaultException \
sfe){ System.out.println(sfe.getMessage()); } Best regards,
Anupam Nandan
--
Best regards,
Anupam Nandan201.920.0722
--
Colm O hEigeartaigh
Talend Community Coder
http://coders.talend.com
--
Best regards,
Anupam Nandan201.920.0722
[Attachment #3 (text/html)]
<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><br><br><br><div><hr id="stopSpelling">Date: \
Wed, 24 Sep 2014 13:08:15 -0400<br>Subject: Re: Web sphere 8.5 and WSS4J1. 6. 9 \
signing issue.<br>From: anupam.nandan@gmail.com<br>To: dev@ws.apache.org; \
coheigea@apache.org<br><br>Hi Colm <div><br></div><div>Thank you for your reply. \
I already tried with WSS4J 1.16.15 earlier. But same error. I was almost \
losing hope on this before your \
reply. </div><div><br></div><div><br></div><div>I will re try with 1.6.16 as \
soon as I get the setup again and let you \
know. </div><div><br></div><div><br></div><div>Thank you for your time \
. <span></span> <br>MG>if after changing libraries you are calling no joy \
..more than likely your private key is bad<br>MG>can we see the ASN.1 output of \
private key.... if for no other reason than to verify attributes are \
non-negative?<br>MG>Thanks and Regards,<br><br>On Wednesday, September 24, 2014, \
Colm O hEigeartaigh <<a \
href="mailto:coheigea@apache.org">coheigea@apache.org</a>> wrote:<br><blockquote \
class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex;"><div \
dir="ltr"><div><br></div>Could you try with a more recent version of WSS4J \
(1.6.16)?<br><br>Colm.<br></div><div class="ecxgmail_extra"><br><div \
class="ecxgmail_quote">On Tue, Sep 23, 2014 at 6:18 PM, Anupam Nandan <span \
dir="ltr"><<a target="_blank">anupam.nandan@gmail.com</a>></span> \
wrote:<br><blockquote class="ecxgmail_quote" style="border-left:1px #ccc \
solid;padding-left:1ex;">Hello <div><br></div><div>Can some one please help me \
on this ?</div><div><br></div><div>Thank you!<span></span><br><br>On Sunday, \
September 21, 2014, Anupam Nandan <<a \
target="_blank">anupam.nandan@gmail.com</a>> wrote:<br><blockquote \
class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex;"><div \
dir="ltr"><div><p style="padding:0px;border:0px;font-size:13.6000003814697px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation \
Sans','DejaVu Sans',sans-serif;line-height:17.8048000335693px;background-image:initial;background-repeat:initial;">Hi \
All, </p><p style="padding:0px;border:0px;font-size:13.6000003814697px;vertical-align:baseline;clear:both;font-family:Arial,'Liberation \
Sans','DejaVu Sans',sans-serif;line-height:17.8048000335693px;background-image:initial;background-repeat:initial;"><font \
color="#000000">I am trying to write a java client program (servlet), which will \
generate and sign the SOAP request with the keys provided by thrid party \
(keystore.jks). When I deploy the Servlet on tomcat it just works fine. But on web \
sphere 8.5 I am getting "</font><b><font color="#8e7cc3">RSA signature is not \
verified</font></b><font color="#000000">" . I tried debugging the issue but not sure \
what is going wrong.</font></p><p \
style="padding:0px;border:0px;font-size:13.6000003814697px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation \
Sans','DejaVu Sans',sans-serif;line-height:17.8048000335693px;background-image:initial;background-repeat:initial;">I \
tried finding answer online and added IS_BSP_COMPLIANT as false but didnt help.</p><p \
style="padding:0px;border:0px;font-size:13.6000003814697px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation \
Sans','DejaVu Sans',sans-serif;line-height:17.8048000335693px;background-image:initial;background-repeat:initial;">Most \
likely the issue is with signature. Let me know how I can trouble this issue. Any \
suggestion would be very helpful.</p><p \
style="padding:0px;border:0px;font-size:13.6000003814697px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation \
Sans','DejaVu Sans',sans-serif;line-height:17.8048000335693px;background-image:initial;background-repeat:initial;"><br></p><p \
style="padding:0px;border:0px;font-size:13.6000003814697px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation \
Sans','DejaVu Sans',sans-serif;line-height:17.8048000335693px;background-image:initial;background-repeat:initial;">Thank \
you for your time and looking forward for some guidance. </p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;">Code </span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;">------------------------------- \
-------------------------------------------------------------------------------------------------</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>attstmt.getAttributes().add(attr);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>assertion.getAttributeStatements().add(attstmt);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>AssertionWrapper assertionWrper = new \
AssertionWrapper(assertion);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>WSSecSAMLToken samlToken = new \
WSSecSAMLToken();</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>samlToken.build(soapDocument, assertionWrper, \
header);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>SoapMessageWithoutHeader = \
nodeToString(soapDocument);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>System.out.println("Anupam SOAP Message with \
SAML 2.0 Assertion : "+SoapMessageWithoutHeader);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>// Inserting the \
wsu:Timestamp</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><br></span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>WSSecTimestamp timestamp = new \
WSSecTimestamp();</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>timestamp.setTimeToLive(TIMESTAMP_VALIDATE_PERIOD);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><br></span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>WSSecHeader timestampHeader = new \
WSSecHeader();</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>timestampHeader.insertSecurityHeader(soapDocument);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>timestamp.build(soapDocument, \
timestampHeader); </span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>SoapMessageWithoutHeader = \
nodeToString(soapDocument);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>System.out.println("Anupam SOAP Message with \
time stamp : "+SoapMessageWithoutHeader);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>System.out.println("Anupam path to key store \
"+pathtoKeyStore);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>WSSecSignature builder = new \
WSSecSignature();</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>builder.setUserInfo(keyAlias, \
pwdValue);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE);</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><span \
style="white-space:pre-wrap;font-size:14px;line-height:17.8048000335693px;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, \
sans-serif"> </font></span></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="white-space:pre-wrap;"> </span>java.util.Properties prop = new \
java.util.Properties();</span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
color="#000000" face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><br></span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
face="Arial, Liberation Sans, DejaVu Sans, sans-serif"><span \
style="font-size:14px;line-height:17.8048000335693px;"><span \
style="color:rgb(0,0,0);white-space:pre-wrap;"> </span><b><font \
color="#ff9900">prop.setProperty("org.apache.ws.security.crypto.provider", \
"org.apache.ws.security.components.crypto.Merlin");</font></b></span></font></p><p \
style="padding:0px;border:0px;vertical-align:baseline;clear:both;background-image:initial;background-repeat:initial;"><font \
</font></span></div><span><font color="#888888">
</font></span></blockquote></div><span><font color="#888888"><br><br>-- <br>Best \
regards,<br>Anupam Nandan<div><a target="_blank">201.920.0722</a></div><br> \
</font></span></blockquote></div><br></div><br clear="all"><br>-- <br>Colm O \
hEigeartaigh<br><br>Talend Community Coder<br><a href="http://coders.talend.com" \
target="_blank">http://coders.talend.com</a><br> </blockquote></div><br><br>-- \
<br>Best regards,<br>Anupam Nandan<div>201.920.0722</div><br></div> \
</div></body> </html>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic