|
From: Pelle B. <pe...@us...> - 2004-04-12 15:50:54
|
Update of /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/signers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13806/src/java/org/neuclear/commons/crypto/signers Modified Files: DefaultSigner.java ServletSignerFactory.java Log Message: Refactored DefaultSigner to delegate to a JCESigner and not inherit. Index: ServletSignerFactory.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/signers/ServletSignerFactory.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ServletSignerFactory.java 2 Mar 2004 18:58:44 -0000 1.7 --- ServletSignerFactory.java 12 Apr 2004 15:37:01 -0000 1.8 *************** *** 27,31 **** * <tr><td>keeppassphrase</td><td>This asks for the service passphrase once at startup and remembers it through the lifetime of the signers</td></tr> * </table> ! * <p> * To use the factory. Do as follows within your servlets init() method: * <code>Signer signer=ServletSignerFactory.getInstance().createSigner(config);</code> --- 27,31 ---- * <tr><td>keeppassphrase</td><td>This asks for the service passphrase once at startup and remembers it through the lifetime of the signers</td></tr> * </table> ! * <p/> * To use the factory. Do as follows within your servlets init() method: * <code>Signer signer=ServletSignerFactory.getInstance().createSigner(config);</code> *************** *** 37,72 **** private ServletSignerFactory() { ! map=Collections.synchronizedMap(new HashMap()); } public synchronized Signer createSigner(ServletConfig config) throws FileNotFoundException, GeneralSecurityException, NeuClearException { ! final String keystore=ServletTools.getInitParam("keystore",config); ! final String keeppassphrase=ServletTools.getInitParam("keeppassphrase",config); ! final String agenttype=ServletTools.getInitParam("passphraseagent",config); ! final String serviceid = ServletTools.getInitParam("serviceid",config); ! final String hash = getConfigHash(keystore, keeppassphrase, agenttype,serviceid); if (map.containsKey(hash)) ! return (Signer)map.get(hash); ! final PassPhraseAgent coreagent=getAgent(agenttype); ! final PassPhraseAgent agent=createWrapperAgent(keeppassphrase, coreagent, serviceid); // If keystore is "test" setup the TestCaseSigner otherwise use the JCESigner ! final Signer signer=createSigner(keystore, agent); ! map.put(hash,signer); return signer; } private static final PassPhraseAgent createWrapperAgent(final String keeppassphrase, final PassPhraseAgent coreagent, final String serviceid) throws UserCancellationException { ! if (!Utility.isEmpty(keeppassphrase)&&keeppassphrase.equals("1")&&coreagent instanceof InteractiveAgent) ! return new AskAtStartupAgent((InteractiveAgent)coreagent,serviceid); return coreagent; } ! private static final JCESigner createSigner(final String keystore, final PassPhraseAgent agent) throws GeneralSecurityException, NeuClearException, FileNotFoundException { ! if (!Utility.isEmpty(keystore)){ if (keystore.toLowerCase().equals("test")) return new TestCaseSigner(agent); if (!keystore.toLowerCase().equals("default")) ! return new JCESigner(keystore,"jks", "SUN",agent); } return new DefaultSigner(agent); --- 37,73 ---- private ServletSignerFactory() { ! map = Collections.synchronizedMap(new HashMap()); } + public synchronized Signer createSigner(ServletConfig config) throws FileNotFoundException, GeneralSecurityException, NeuClearException { ! final String keystore = ServletTools.getInitParam("keystore", config); ! final String keeppassphrase = ServletTools.getInitParam("keeppassphrase", config); ! final String agenttype = ServletTools.getInitParam("passphraseagent", config); ! final String serviceid = ServletTools.getInitParam("serviceid", config); ! final String hash = getConfigHash(keystore, keeppassphrase, agenttype, serviceid); if (map.containsKey(hash)) ! return (Signer) map.get(hash); ! final PassPhraseAgent coreagent = getAgent(agenttype); ! final PassPhraseAgent agent = createWrapperAgent(keeppassphrase, coreagent, serviceid); // If keystore is "test" setup the TestCaseSigner otherwise use the JCESigner ! final Signer signer = createSigner(keystore, agent); ! map.put(hash, signer); return signer; } private static final PassPhraseAgent createWrapperAgent(final String keeppassphrase, final PassPhraseAgent coreagent, final String serviceid) throws UserCancellationException { ! if (!Utility.isEmpty(keeppassphrase) && keeppassphrase.equals("1") && coreagent instanceof InteractiveAgent) ! return new AskAtStartupAgent((InteractiveAgent) coreagent, serviceid); return coreagent; } ! private static final BrowsableSigner createSigner(final String keystore, final PassPhraseAgent agent) throws GeneralSecurityException, NeuClearException, FileNotFoundException { ! if (!Utility.isEmpty(keystore)) { if (keystore.toLowerCase().equals("test")) return new TestCaseSigner(agent); if (!keystore.toLowerCase().equals("default")) ! return new JCESigner(keystore, "jks", "SUN", agent); } return new DefaultSigner(agent); *************** *** 74,78 **** private static final PassPhraseAgent getAgent(final String agenttype) { ! if (!Utility.isEmpty(agenttype)){ if (agenttype.toLowerCase().equals("console")) return new ConsoleAgent(); --- 75,79 ---- private static final PassPhraseAgent getAgent(final String agenttype) { ! if (!Utility.isEmpty(agenttype)) { if (agenttype.toLowerCase().equals("console")) return new ConsoleAgent(); *************** *** 85,95 **** } ! private static final String getConfigHash(final String keystore, final String keeppassphrase, final String agenttype,final String serviceid) { ! return new String(CryptoTools.digest((keystore+keeppassphrase+agenttype).getBytes())); } ! public synchronized static ServletSignerFactory getInstance(){ ! if (instance==null) ! instance=new ServletSignerFactory(); return instance; } --- 86,96 ---- } ! private static final String getConfigHash(final String keystore, final String keeppassphrase, final String agenttype, final String serviceid) { ! return new String(CryptoTools.digest((keystore + keeppassphrase + agenttype).getBytes())); } ! public synchronized static ServletSignerFactory getInstance() { ! if (instance == null) ! instance = new ServletSignerFactory(); return instance; } Index: DefaultSigner.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-commons/src/java/org/neuclear/commons/crypto/signers/DefaultSigner.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DefaultSigner.java 19 Jan 2004 17:53:14 -0000 1.5 --- DefaultSigner.java 12 Apr 2004 15:37:01 -0000 1.6 *************** *** 1,8 **** --- 1,13 ---- package org.neuclear.commons.crypto.signers; + import org.neuclear.commons.crypto.CryptoException; import org.neuclear.commons.crypto.CryptoTools; import org.neuclear.commons.crypto.passphraseagents.PassPhraseAgent; import org.neuclear.commons.crypto.passphraseagents.UserCancellationException; + import java.security.KeyStoreException; + import java.security.PublicKey; + import java.util.Iterator; + /* NeuClear Distributed Transaction Clearing Platform *************** *** 25,28 **** --- 30,36 ---- $Id$ $Log$ + Revision 1.6 2004/04/12 15:37:01 pelle + Refactored DefaultSigner to delegate to a JCESigner and not inherit. + Revision 1.5 2004/01/19 17:53:14 pelle Various clean ups *************** *** 65,73 **** * Time: 3:22:17 PM */ ! public final class DefaultSigner extends JCESigner { ! public DefaultSigner(final PassPhraseAgent agent) throws UserCancellationException,InvalidPassphraseException { ! super(CryptoTools.DEFAULT_KEYSTORE, "jks", "SUN", agent); } } --- 73,127 ---- * Time: 3:22:17 PM */ ! public final class DefaultSigner implements BrowsableSigner { ! public DefaultSigner(final PassPhraseAgent agent) throws UserCancellationException, InvalidPassphraseException { ! signer = new JCESigner(CryptoTools.DEFAULT_KEYSTORE, "jks", "SUN", agent); ! ! } ! ! public final byte[] sign(final String name, final byte[] data) throws NonExistingSignerException, UserCancellationException { ! return signer.sign(name, data); ! } ! ! public final byte[] sign(final String name, final byte[] data, boolean incorrect) throws UserCancellationException, NonExistingSignerException { ! return signer.sign(name, data, incorrect); ! } ! ! public final boolean canSignFor(final String name) { ! return signer.canSignFor(name); ! } ! ! public final int getKeyType(final String name) { ! return signer.getKeyType(name); ! } ! ! public final PublicKey generateKey(final String alias) throws UserCancellationException { ! return signer.generateKey(alias); ! } ! ! public final PublicKey getPublicKey(final String name) throws NonExistingSignerException { ! return signer.getPublicKey(name); ! } ! ! public byte[] sign(byte data[], SetPublicKeyCallBack callback) throws UserCancellationException { ! return signer.sign(data, callback); ! } ! ! public byte[] sign(String name, char pass[], byte data[], SetPublicKeyCallBack callback) throws InvalidPassphraseException { ! return signer.sign(name, pass, data, callback); ! } + public void createKeyPair(String alias, char passphrase[]) throws CryptoException { + signer.createKeyPair(alias, passphrase); } + public void save() { + signer.save(); + } + + public Iterator iterator() throws KeyStoreException { + return signer.iterator(); + } + + private final JCESigner signer; + } |