Hi, Not sure that is good idea to save private keys in the database, but if you have a good reasons for that - just read private key from db, create java PrivateKey object and return it in getPrivateKey() methods of Crypto provider.
Regards, Andrei. > -----Original Message----- > From: Ted Roeloffzen [mailto:ted.roeloff...@gmail.com] > Sent: Donnerstag, 1. August 2013 12:46 > To: users > Subject: Re: CXF WS-security policy question > > Hi Andrei, > > The problem is that i don't have a keystore. > The certificate is loaded from the database. > > kind regards, > > Ted > > > 2013/7/30 Andrei Shakirin <ashaki...@talend.com> > > > Hi Ted, > > > > I see that your crypto provider returns null for private keys and says > > always false by verifyTrust(). > > If you manage your private keys in keystore, you should initialize > > default WSS4J Merlin crypto provider with that keystore and delegate > > getPrivateKey() calls to Merlin. > > verifyTrust() must validate certificate (you can just return true for > > quick test). > > > > As a sample look into XKMS Crypto provider implementation contributed > > with > > XKMS: > > https://svn.apache.org/repos/asf/cxf/trunk/services/xkms/xkms- > client/src/main/java/org/apache/cxf/xkms/crypto. > > > > Some information you will find in my blog: > > http://ashakirin.blogspot.de/2013/04/cxf-security-getting-certificates- > from.html. > > > > Regards, > > Andrei. > > > > From: Ted Roeloffzen [mailto:ted.roeloff...@gmail.com] > > Sent: Dienstag, 30. Juli 2013 11:51 > > To: Andrei Shakirin > > Subject: Re: CXF WS-security policy question > > > > Hi all, > > > > This is a code snippet of what i'm doing. > > > > public class TestCertificateProviderInterceptor extends > > AbstractPhaseInterceptor<Message> { > > public static class TestCertificateHolder extends CryptoBase > > { > > protected X509Certificate trustedCert; > > > > public TestCertificateHolder (X509Certificate trustedCert) > > { > > this.trustedCert = trustedCert; > > setDefaultX509Identifier(""); > > } > > > > @Override > > public X509Certificate[] getX509Certificates(CryptoType > > cryptoType){ > > X509Certificate[] certificates = {trustedCert}; > > return certificates; } > > > > @Override > > public String getX509Identifier(X509Certificate cert) > > { > > return null; > > } > > > > @Override > > public PrivateKey getPrivateKey(X509Certificate certificate, > > CallbackHandler callbackHandler) > > { > > return null; > > } > > > > @Override > > public PrivateKey getPrivateKey(String identifier, String password) > > { > > return null; > > } > > > > @Override > > @Deprecated > > public boolean verifyTrust(X509Certificate[] certs) > > { > > return false; > > } > > > > @Override > > public boolean verifyTrust(X509Certificate[] certs, boolean > > enableRevocation) > > { > > return false; > > } > > > > @Override > > public boolean verifyTrust(PublicKey publicKey) > > { > > return false; > > } > > > > } > > > > private CertificateHolder holder; > > > > public TestCertificateProviderInterceptor(CertificateHolder holder) > > { > > super(Phase.PRE_LOGICAL); > > this.holder = holder; > > } > > > > @Override > > public void handleMessage(Message message) throws Fault > > { > > TestCertificateHolder store = > > new TestCertificateHolder (holder.getCertificate()); > > > > message.getExchange().put(SecurityConstants.SIGNATURE_CRYPTO, > > store); > > } > > } > > Could it be a problem that I'm not overriding the standard > > implementation of the verifyTrust-methods? > > king regards, > > > > Ted Roeloffzen > > > > > > 2013/7/12 Andrei Shakirin <ashaki...@talend.com<mailto: > > ashaki...@talend.com>> > > Hi Ted, > > > > I used own CryptoBase extension for signature and encryption, so > > basically it should work. > > How you set the SIGNATURE_CRYPTO crypto, in configuration or in > > interceptor? Do you apply it to whole client or to message? > > > > Simple test case will be of course very helpful. Absolutely not a > > problem to get it in two weeks or later. > > > > Regards, > > Andrei. > > > > > -----Original Message----- > > > From: Ted Roeloffzen [mailto:ted.roeloff...@gmail.com<mailto: > > ted.roeloff...@gmail.com>] > > > Sent: Freitag, 12. Juli 2013 16:06 > > > To: users; Colm O hEigeartaigh > > > Subject: Re: CXF WS-security policy question > > > > > > Hi Colm, > > > > > > I hoped there would be a quick fix for the problem, because i'm > > > going on > > a > > > vacation tomorrow and won't be taking my laptop with me. > > > Because of my vacation i'm unable to create a test case or a patch. > > > If this problem is still there in 2 weeks, i would be happy to take > > > a > > look at it. > > > > > > kind regards, > > > > > > Ted > > > > > > > > > 2013/7/12 Colm O hEigeartaigh <cohei...@apache.org<mailto: > > cohei...@apache.org>> > > > > > > > Hi Ted, > > > > > > > > It's likely there are some bugs in the code surrounding the use of > > > > such a Crypto implementation. Would it be possible to share a > > > > test-case or are you interested in providing a patch for this issue? > > > > > > > > Colm. > > > > > > > > > > > > On Fri, Jul 12, 2013 at 2:41 PM, Ted Roeloffzen > > > > <ted.roeloff...@gmail.com<mailto:ted.roeloff...@gmail.com> > > > > >wrote: > > > > > > > > > Hi Andrei, > > > > > > > > > > Thanks for your advice. > > > > > I created a class thats implements Crypto, actually it extends > > > > CryptoBase, > > > > > but now i get the message: No callback handler and no password > > > > > available Do I have to repeat the same thing here? Just create > > > > > somewhat of a dummy implementation of CallbackHandler? > > > > > > > > > > Kind regards, > > > > > > > > > > Ted > > > > > > > > > > > > > > > 2013/7/12 Andrei Shakirin <ashaki...@talend.com<mailto: > > ashaki...@talend.com>> > > > > > > > > > > > Hi Ted, > > > > > > > > > > > > I assume that your CertificateStore object implements wss4j > > > > > > org.apache.ws.security.components.crypto .Crypto interface, > > > > > > does > > it? > > > > > > The reason why CXF needs SIGNATURE_USERNAME property is the > > > following: > > > > > > even single CXF client can be used by multiple users having > > > > > > different private and public keys. > > > > > > Therefore Crypto interface provides method > > > > > > getX509Certificates() with CryptoType argument, that specifies > > > > > > keystore alias (or other > > > > > > X509 > > > > > > identifier) to be used. > > > > > > > > > > > > If you always has only one user and single certificate, you > > > > > > can provide any non-empty value in > > > > > > Crypto.getDefaultX509Identifier() method and > > > > just > > > > > > ignore it in Crypto.getX509Certificates(). > > > > > > > > > > > > Regards, > > > > > > Andrei. > > > > > > > > > > > > > -----Original Message----- > > > > > > > From: Ted Roeloffzen [mailto:ted.roeloff...@gmail.com<mailto: > > ted.roeloff...@gmail.com>] > > > > > > > Sent: Freitag, 12. Juli 2013 11:31 > > > > > > > To: users > > > > > > > Subject: CXF WS-security policy question > > > > > > > > > > > > > > Hi All, > > > > > > > > > > > > > > I'm trying to create a webservice client that uses the > > > > > > > securitypolicy > > > > > > which is > > > > > > > specified in the WSDL. > > > > > > > As the certificate that is used for this client has to be > > > > > > > loaded from > > > > > the > > > > > > > database i created a Interceptor that sets the > > > > > > > SIGNATURE_CRYPTO > > > > > property > > > > > > > with a CertificateStore object that contains the correct > > certificate. > > > > > > > When i try to send a message i get the following error-message: > > > > > > > No configured signature username detected > > > > > > > > > > > > > > Because there is only one certificate in the > > > > > > > CertificateStore, there > > > > is > > > > > > no need > > > > > > > for a username. But nonetheless I get this error. > > > > > > > > > > > > > > Can anyone point me in the right direction? > > > > > > > > > > > > > > Greate many thanks. > > > > > > > > > > > > > > Kind regards, > > > > > > > > > > > > > > Ted Roeloffzen > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > Colm O hEigeartaigh > > > > > > > > Talend Community Coder > > > > http://coders.talend.com > > > > > > > >