Hi Alessandro,

I'm sorry, but I cannot answer to your question. I'm new to wss4j
(about a week) and I'm trying now to do something programatically. All
I've managed to do is to set the parameter's through the wsdd
configuration files, and make it work.

I hope someone with more experience will read this thread and answer to you.

Regards,
Emanuel

On 2/9/06, Alessandro Gilardoni <[EMAIL PROTECTED]> wrote:
> Hi Emanuel,
> i'm trying to sign a message (programmatically with 2ss4j) and to send
> to a server that must verify it with wss4j.
> I sign the message programmatically while the server is deployed with a
> deployment descriptor. I always have a signature verification fault.
> To sign the message and verify it on the client side i need to set up
> the actor (WSSignEnvelope builder = new WSSignEnvelope("some sort of
> actor"); ) otherwise the verification fails also on the client side
>  if i do on the client side:
>
>                        Document doc =
> unsignedEnvelope.getSOAPEnvelope().getAsDocument();
>                        WSSignEnvelope builder = new WSSignEnvelope();
>                        builder.setUserInfo(privateKeyAlias,
> privateKeyPass);
>
> builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); // This
> does embed the certificate.
>                        Document signedDoc = builder.build(doc, crypto);
>                        Message signedMsg = (Message)
> SOAPUtil.toSOAPMessage(signedDoc);
>                        Document Doc1 =
> signedMsg.getSOAPEnvelope().getAsDocument();
>                        verify(Doc1);
>
> i have a signature verification fault, but if a put an actor
> (WSSignEnvelope builder = new WSSignEnvelope("client");) the signature
> verification it's ok .....but not on the server side....
> any hints ?
> sorry to send a very long e-mail but no one answer to my previous emails...
> best regards.
> last question: it's possible to decrypt a soapmessage programmatically ?
> HOW ?
>
>
> Alessandro
>
>
>
>
>
> Emanuel Haisiuc ha scritto:
> > I've managed to get it working by setting the user parameter in the
> > wsdd file to match the alias of the searched certificate in the
> > keystore. In the PWCallback class I'm setting the password for that
> > certificate. And it works fine :)
> >
> > Emanuel
> >
> >
> >
> > On 2/8/06, [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>*
> > <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
> >
> >
> >     I think the answer may depend on how you are using Axis/WSS4J.
> >      I'm not using any config files, and doing everything in a
> >     handler.  Here's an example of my code, but I'm no expert so this
> >     could be a really bad (but working) example ;-)
> >
> >     You can see I set the cert alias and password both in my
> >     Properties object for the Crypto, and via the
> >     WSSignEnvelope.setKeyIdentifier() method.  Not sure if this is
> >     necessary or the best way, but it works for me.  I haven't made
> >     time for "code cleanup" yet.
> >
> >                             [...snip...]
> >                             Message requestMessage =
> >     msgContext.getRequestMessage();
> >                             SOAPEnvelope unsignedEnvelope =
> >     requestMessage.getSOAPEnvelope();
> >                             Document doc =
> >     unsignedEnvelope.getAsDocument ();
> >
> >                             // WSS4J Start
> >     ---------------------------------------------
> >
> >                             /*
> >                              * Instantiate Crypto for WSS4J via
> >     dynamic methods. Domino agents
> >                              * can't see file resources, plus we need
> >     to compute the keystore
> >                              * location anyway.
> >                              */
> >                             String cryptoClassName = "
> >     org.apache.ws.security.components.crypto.BouncyCastle"; //
> >     "org.apache.ws.security.components.crypto.Merlin"
> >                             Properties properties = new Properties();
> >
> >     properties.put("org.apache.ws.security.crypto.provider",
> >     cryptoClassName);
> >
> >     properties.put("org.apache.ws.security.crypto.merlin.keystore.type",
> >     keystoreType);
> >
> >     properties.put("org.apache.ws.security.crypto.merlin.keystore.password
> >     ", keystorePass);
> >
> >     properties.put("org.apache.ws.security.crypto.merlin.keystore.alias",
> >     privateKeyAlias);
> >
> >     properties.put("org.apache.ws.security.crypto.merlin.alias.password",
> >     privateKeyPass);
> >
> >     properties.put("org.apache.ws.security.crypto.merlin.file ",
> >     keystoreFile);
> >                             Crypto crypto =
> >     CryptoFactory.getInstance(cryptoClassName, properties);
> >
> >                             WSSignEnvelope builder = new
> >     WSSignEnvelope();
> >                             builder.setUserInfo(privateKeyAlias,
> >     privateKeyPass);
> >                             // builder.setKeyIdentifierType
> >     (WSConstants.ISSUER_SERIAL); // Doesn't embed the certificate.
> >
> >     builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); //
> >     This does embed the certificate.
> >                             WSSAddUsernameToken usernameToken = new
> >     WSSAddUsernameToken();
> >                             builder.setUsernameToken (usernameToken);
> >                             Document signedDoc = builder.build(doc,
> >     crypto);
> >
> >                             /*
> >                              * Convert the resulting document into a
> >     message first. The
> >                              * toSOAPMessage() method performs the
> >     necessary c14n call to
> >                              * properly set up the signed document and
> >     convert it into a SOAP
> >                              * message.
> >                              */
> >                             Message signedMsg = (Message)
> >     SOAPUtil.toSOAPMessage(signedDoc);
> >                             if ( logger.isDebugEnabled()) {
> >                                     logger.debug("Signed message:");
> >
> >     XMLUtils.PrettyElementToWriter(signedMsg.getSOAPEnvelope().getAsDOM(),
> >     new PrintWriter(System.out));
> >                             }
> >
> >                             /*
> >                              * Extract as a document again if need
> >     further processing. signedDoc =
> >                              * signedMsg.getSOAPEnvelope
> >     ().getAsDocument();
> >                              */
> >
> >                             /*
> >                              * Set signed message as current message.
> >                              */
> >                             msgContext.setCurrentMessage(signedMsg);
> >
> >                             // WSS4J End
> >     ---------------------------------------------
> >                             [...snip...]
> >
> >
> >
> >
> >     *Emanuel Haisiuc <[EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>>*
> >
> >     02/08/2006 11:31 AM
> >
> >
> >     To
> >       "[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>" <
> >     [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>,
> >     [email protected] <mailto:[email protected]>
> >     cc
> >
> >     Subject
> >       Re: Exception: General security error (Unexpected number of
> >     X509Data: for Signature)
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >     I have the same sense about this one.
> >
> >     My question is: how do I indicate to the client which key to use
> >     from the keystore?
> >
> >     Is the "user" parameter from the handler in the client's
> >     configuration wsdd file used to identify the certificate to be
> >     used from the keystore?
> >
> >     Hope my questins make sense.
> >
> >     Thank you!
> >
> >     Emanuel
> >
> >
> >     On 2/8/06, [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> >     < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
> >
> >     When I got that error, it was because the machine I was running on
> >     didn't have the certificate in the keystore.  In your case that
> >     would be the cert " ehpubcert".
> >
> >
> >
> >     *Emanuel Haisiuc <* [EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>*>*
> >
> >     02/08/2006 10:24 AM
> >
> >
> >     To
> >       [EMAIL PROTECTED] <mailto:[email protected]>
> >     cc
> >
> >
> >     Subject
> >       Exception: General security error (Unexpected number of X509Data:
> >     for Signature)
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >     Hi!
> >
> >     I'm getting this exception when trying to run my client:
> >
> >     08.02.2006 18:16:30
> >     org.apache.ws.security.components.crypto.CryptoFactory loadClass
> >     INFO: Using Crypto Engine [
> >     org.apache.ws.security.components.crypto.Merlin]
> >     Unable to make the call to method: WSHandler: Signature: error during
> >     message procesingorg.apache.ws.security.WSSecurity
> >     Exception: General security error (Unexpected number of X509Data:
> >     for Signature)
> >
> >     My cliend's wsdd file is:
> >
> >     <deployment xmlns=" _http://xml.apache.org/axis/wsdd/_";
> >     xmlns:java=" _http://xml.apache.org/axis/wsdd/providers/java_";>
> >                    <transport name="http"
> >     pivot="java:org.apache.axis.transport.http.HTTPSender " />
> >                    <globalConfiguration>
> >                                     <requestFlow>
> >                                                      <handler
> >     type="java: org.apache.ws.axis.security.WSDoAllSender ">
> >
> >     <parameter name="action" value="Signature" />
> >
> >     <parameter name="signaturePropFile" value=" cx509sign.props" />
> >
> >     <parameter name="signatureKeyIdentifier" value="DirectReference" />
> >
> >     <parameter name="passwordCallbackClass"
> >     value="javawsx509signingclient.PWCallback" />
> >
> >     <parameter name="user" value="manu" />
> >                                                      </handler>
> >                                     </requestFlow>
> >                    </globalConfiguration>
> >     </deployment>
> >
> >     where cx509sign.props is:
> >
> >     
> > org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
> >
> >     org.apache.ws.security.crypto.merlin.keystore.type=jks
> >     org.apache.ws.security.crypto.merlin.keystore.password=foobar
> >     org.apache.ws.security.crypto.merlin.keystore.alias=ehpubcert
> >     org.apache.ws.security.crypto.merlin.alias.password=foobar
> >     org.apache.ws.security.crypto.merlin.file=c:/publicks/pubkeystore
> >
> >     Pubkeystore listing is:
> >
> >     C:\publicks>keytool -list -keystore pubkeystore
> >     Enter keystore password:  foobar
> >
> >     Keystore type: jks
> >     Keystore provider: SUN
> >
> >     Your keystore contains 1 entry
> >
> >     ehpubcert, 08.02.2006, keyEntry,
> >     Certificate fingerprint (MD5):
> >     5E:87:4F:3A:48:78:4C:33:1A:03:F9:7C:2E:DE:98:81
> >
> >     What should I look for and what, to make it work?
> >
> >     Thank you!
> >
> >     Emanuel
> >
> >     ---------------------------------------------------------------------
> >     To unsubscribe, e-mail: [EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>
> >     For additional commands, e-mail: [EMAIL PROTECTED] _
> >     <mailto:[EMAIL PROTECTED]>
> >
> >
> >
> >
> > ------------------------------------------------------------------------
> >
> > No virus found in this incoming message.
> > Checked by AVG Free Edition.
> > Version: 7.1.375 / Virus Database: 267.15.3/254 - Release Date: 08/02/2006
> >
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to