|
From: <pe...@us...> - 2003-09-22 19:24:13
|
Update of /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/signers/servlet
In directory sc8-pr-cvs1:/tmp/cvs-serv4908/src/java/org/neuclear/signers/servlet
Modified Files:
DemoSigningServlet.java SigningServlet.java
Log Message:
More fixes throughout to problems caused by renaming.
Index: DemoSigningServlet.java
===================================================================
RCS file: /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/signers/servlet/DemoSigningServlet.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** DemoSigningServlet.java 19 Sep 2003 14:41:32 -0000 1.1.1.1
--- DemoSigningServlet.java 22 Sep 2003 19:24:02 -0000 1.2
***************
*** 2,5 ****
--- 2,8 ----
* $Id$
* $Log$
+ * Revision 1.2 2003/09/22 19:24:02 pelle
+ * More fixes throughout to problems caused by renaming.
+ *
* Revision 1.1.1.1 2003/09/19 14:41:32 pelle
* First import into the neuclear project. This was originally under the SF neudist
***************
*** 99,104 ****
import org.neuclear.id.NSTools;
import org.neuclear.id.NameSpace;
! import org.neuclear.signers.SimpleSignerStore;
! import org.neuclear.utils.NeudistException;
import javax.servlet.ServletConfig;
--- 102,108 ----
import org.neuclear.id.NSTools;
import org.neuclear.id.NameSpace;
! import org.neudist.crypto.signerstores.SignerStore;
! import org.neudist.crypto.signerstores.SimpleSignerStore;
! import org.neudist.utils.NeudistException;
import javax.servlet.ServletConfig;
***************
*** 110,139 ****
import java.security.interfaces.RSAPrivateKey;
! public class DemoSigningServlet extends SigningServlet {
! private void buildTree() throws GeneralSecurityException,NeudistException,IOException {
! System.out.println("NEUDIST: Creating NameSpace Tree");
! kpg=KeyPairGenerator.getInstance("RSA");
! kpg.initialize(2048,new SecureRandom("Cartagena".getBytes()));
! PrivateKey signer=getTestKey();
! createNS("/test/one","password",signer);
! createNS("/test/two","password",signer);
}
! private RSAPrivateKey getTestKey() throws GeneralSecurityException,IOException {
! KeyStore ks=KeyStore.getInstance("Uber");
! FileInputStream in=new FileInputStream(context.getRealPath("/WEB-INF/testkeys.ks"));
! ks.load(in,"neuclear".toCharArray());
! return (RSAPrivateKey)ks.getKey("neu://test","neuclear".toCharArray());
}
! private void createNS(String name,String newPassword,PrivateKey signer) throws IOException, NeudistException, GeneralSecurityException {
! name=NSTools.normalizeNameURI(name);
! System.out.println("NEUDIST: Generating key and NameSpace for: "+name);
! KeyPair kp=kpg.generateKeyPair();
! ((org.neuclear.crypto.signerstores.SimpleSignerStore)getKeyStore()).addKey(name,newPassword.toCharArray(),kp.getPrivate());
System.out.println("NEUDIST: Creating NameSpace");
! NameSpace ns=new NameSpace(name,kp.getPublic(),"http://neuclear.org:8080/neudistframework/Store","http://neuclear.org:8080/neudistframework/Signer","http://neuclear.org:8080/neudistframework/Logger","");//TODO Fix these values
// id.addTarget(new TargetReference(id,,"store"));
System.out.println("NEUDIST: Signing");
--- 114,143 ----
import java.security.interfaces.RSAPrivateKey;
! public class DemoSigningServlet extends SigningServlet {
! private void buildTree() throws GeneralSecurityException, NeudistException, IOException {
! System.out.println("NEUDIST: Creating NameSpace Tree");
! kpg = KeyPairGenerator.getInstance("RSA");
! kpg.initialize(2048, new SecureRandom("Cartagena".getBytes()));
! PrivateKey signer = getTestKey();
! createNS("/test/one", "password", signer);
! createNS("/test/two", "password", signer);
}
! private RSAPrivateKey getTestKey() throws GeneralSecurityException, IOException {
! KeyStore ks = KeyStore.getInstance("Uber");
! FileInputStream in = new FileInputStream(context.getRealPath("/WEB-INF/testkeys.ks"));
! ks.load(in, "neuclear".toCharArray());
! return (RSAPrivateKey) ks.getKey("neu://test", "neuclear".toCharArray());
}
! private void createNS(String name, String newPassword, PrivateKey signer) throws IOException, NeudistException, GeneralSecurityException {
! name = NSTools.normalizeNameURI(name);
! System.out.println("NEUDIST: Generating key and NameSpace for: " + name);
! KeyPair kp = kpg.generateKeyPair();
! ((SimpleSignerStore) getKeyStore()).addKey(name, newPassword.toCharArray(), kp.getPrivate());
System.out.println("NEUDIST: Creating NameSpace");
! NameSpace ns = new NameSpace(name, kp.getPublic(), "http://neuclear.org:8080/neudistframework/Store", "http://neuclear.org:8080/neudistframework/Signer", "http://neuclear.org:8080/neudistframework/Logger", "");//TODO Fix these values
// id.addTarget(new TargetReference(id,,"store"));
System.out.println("NEUDIST: Signing");
***************
*** 146,150 ****
ns.sendObject();
} catch (InvalidNameSpaceException e) {
! System.out.println("NEUDIST: NameSpace Error: "+e.getLocalizedMessage());
}
}
--- 150,154 ----
ns.sendObject();
} catch (InvalidNameSpaceException e) {
! System.out.println("NEUDIST: NameSpace Error: " + e.getLocalizedMessage());
}
}
***************
*** 156,167 ****
} catch (GeneralSecurityException e) {
e.printStackTrace(System.out);
! } catch (IOException e) {
! e.printStackTrace(System.out);
! } catch (NeudistException e) {
! e.printStackTrace(System.out);
! }
}
! protected static org.neuclear.signers.SignerStore getKeyStore(File keyStoreFile, Object kspassword) throws GeneralSecurityException, IOException, NeudistException {
return new SimpleSignerStore(keyStoreFile);
}
--- 160,171 ----
} catch (GeneralSecurityException e) {
e.printStackTrace(System.out);
! } catch (IOException e) {
! e.printStackTrace(System.out);
! } catch (NeudistException e) {
! e.printStackTrace(System.out);
! }
}
! protected static SignerStore getKeyStore(File keyStoreFile, Object kspassword) throws GeneralSecurityException, IOException, NeudistException {
return new SimpleSignerStore(keyStoreFile);
}
Index: SigningServlet.java
===================================================================
RCS file: /cvsroot/neuclear/neuclear-id/src/java/org/neuclear/signers/servlet/SigningServlet.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** SigningServlet.java 19 Sep 2003 14:41:40 -0000 1.1.1.1
--- SigningServlet.java 22 Sep 2003 19:24:02 -0000 1.2
***************
*** 2,5 ****
--- 2,8 ----
* $Id$
* $Log$
+ * Revision 1.2 2003/09/22 19:24:02 pelle
+ * More fixes throughout to problems caused by renaming.
+ *
* Revision 1.1.1.1 2003/09/19 14:41:40 pelle
* First import into the neuclear project. This was originally under the SF neudist
***************
*** 122,135 ****
import org.neuclear.id.signrequest.SignatureRequest;
import org.neuclear.receiver.ReceiverServlet;
! import org.neuclear.signers.InvalidPassphraseException;
! import org.neuclear.signers.JCESignerStore;
! import org.neuclear.signers.NonExistingSignerException;
! import org.neuclear.signers.SignerStore;
! import org.neuclear.utils.NeudistException;
! import org.neuclear.utils.ServletTools;
! import org.neuclear.utils.Utility;
! import org.neuclear.xml.soap.SOAPException;
! import org.neuclear.xml.xmlsec.XMLSecTools;
! import org.neuclear.xml.xmlsec.XMLSecurityException;
import javax.servlet.ServletConfig;
--- 125,138 ----
import org.neuclear.id.signrequest.SignatureRequest;
import org.neuclear.receiver.ReceiverServlet;
! import org.neudist.crypto.signerstores.InvalidPassphraseException;
! import org.neudist.crypto.signerstores.JCESignerStore;
! import org.neudist.crypto.signerstores.NonExistingSignerException;
! import org.neudist.crypto.signerstores.SignerStore;
! import org.neudist.utils.NeudistException;
! import org.neudist.utils.ServletTools;
! import org.neudist.utils.Utility;
! import org.neudist.xml.soap.SOAPException;
! import org.neudist.xml.xmlsec.XMLSecTools;
! import org.neudist.xml.xmlsec.XMLSecurityException;
import javax.servlet.ServletConfig;
***************
*** 145,158 ****
import java.security.PrivateKey;
! public class SigningServlet extends ReceiverServlet {
! public void init(ServletConfig config) throws ServletException {
! System.out.println("NEUDIST: Initialising SigningServlet");
! super.init(config);
! context=config.getServletContext();
! try {
! System.out.println("NEUDIST: Initialising SigningServlet");
! title=Utility.denullString(config.getInitParameter("title").toString(),"NeuDist Signing Service");
! File keyStoreFile=new File(config.getServletContext().getRealPath(Utility.denullString(config.getInitParameter("keystore"),System.getProperty("user.home")+"/.neuclear/signers.ks")));
! System.out.println("NEUDIST: Using KeyStore: "+keyStoreFile.getAbsolutePath());
// ks=KeyStore.getInstance("JKS");
// char password[]=Utility.denullString(config.getInitParameter("keystore.passphrase"),"SuperDuper").toCharArray();
--- 148,161 ----
import java.security.PrivateKey;
! public class SigningServlet extends ReceiverServlet {
! public void init(ServletConfig config) throws ServletException {
! System.out.println("NEUDIST: Initialising SigningServlet");
! super.init(config);
! context = config.getServletContext();
! try {
! System.out.println("NEUDIST: Initialising SigningServlet");
! title = Utility.denullString(config.getInitParameter("title").toString(), "NeuDist Signing Service");
! File keyStoreFile = new File(config.getServletContext().getRealPath(Utility.denullString(config.getInitParameter("keystore"), System.getProperty("user.home") + "/.neuclear/signers.ks")));
! System.out.println("NEUDIST: Using KeyStore: " + keyStoreFile.getAbsolutePath());
// ks=KeyStore.getInstance("JKS");
// char password[]=Utility.denullString(config.getInitParameter("keystore.passphrase"),"SuperDuper").toCharArray();
***************
*** 160,166 ****
// System.out.println("NEUDIST: Creating KeyStore ");
// ks.load(null,password);
! if (ks==null) {
! ks=getKeyStore(keyStoreFile,config.getInitParameter("keystore.password"));
! }
// if (keyStoreFile.getParent()!=null)
// keyStoreFile.getParentFile().mkdirs();
--- 163,169 ----
// System.out.println("NEUDIST: Creating KeyStore ");
// ks.load(null,password);
! if (ks == null) {
! ks = getKeyStore(keyStoreFile, config.getInitParameter("keystore.password"));
! }
// if (keyStoreFile.getParent()!=null)
// keyStoreFile.getParentFile().mkdirs();
***************
*** 170,187 ****
// ks.load(new FileInputStream(keyStoreFile),password);
// }
! System.out.println("NEUDIST: Finished SigningServlet Init ");
! } catch (GeneralSecurityException e) {
! e.printStackTrace(System.out);
! } catch (IOException e) {
! e.printStackTrace(System.out);
! } catch (NeudistException e) {
! e.printStackTrace(System.out);
! }
! }
! protected static SignerStore getKeyStore(File keyStoreFile,String kspassword) throws GeneralSecurityException,IOException,NeudistException{
return new JCESignerStore(keyStoreFile, kspassword.toCharArray());
}
--- 173,190 ----
// ks.load(new FileInputStream(keyStoreFile),password);
// }
! System.out.println("NEUDIST: Finished SigningServlet Init ");
! } catch (GeneralSecurityException e) {
! e.printStackTrace(System.out);
! } catch (IOException e) {
! e.printStackTrace(System.out);
! } catch (NeudistException e) {
! e.printStackTrace(System.out);
! }
! }
! protected static SignerStore getKeyStore(File keyStoreFile, String kspassword) throws GeneralSecurityException, IOException, NeudistException {
return new JCESignerStore(keyStoreFile, kspassword.toCharArray());
}
***************
*** 191,238 ****
return ks;
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("NEUDIST: doPost()");
! if (request.getContentType().equals("text/xml")){
System.out.println("NEUDIST: call SOAP Servlet");
super.doPost(request, response);
return;
}
! response.setHeader("Pragma","no-cache");
! response.setDateHeader("Expires",0);
response.setContentType("text/html");
! PrintWriter out=response.getWriter();
! ServletTools.printHeader(out,request,title);
! String b64xml=request.getParameter("base64xml");
! String xml=request.getParameter("xml");
! String endpoint=request.getParameter("endpoint");
! String passphrase=request.getParameter("passphrase");
SignatureRequest sigreq;
NamedObject named;
! boolean isSigned=false;
! Element elem=null;
try {
if (!Utility.isEmpty(xml)) {
! elem=DocumentHelper.parseText(xml).getRootElement();
! } else if (!Utility.isEmpty(b64xml)) {
! elem=XMLSecTools.decodeElementBase64(b64xml);
! }
! sigreq=new SignatureRequest(elem);
! named=sigreq.getPayload();
! if (!Utility.isEmpty(passphrase)&&!Utility.isEmpty(request.getParameter("sign"))) {
out.println("Signing ...");
out.flush();
try {
! signObject(named,passphrase.toCharArray());
! isSigned=true;
out.println("<br>Done<br>");
} catch (InvalidNameSpaceException e) {
out.println("<br><font color=\"red\"><b>ERROR: Invalid NameSpace</b></font><br>");
! isSigned=false;
} catch (InvalidPassphraseException e) {
out.println("<br><font color=\"red\"><b>ERROR: Wrong Passphrase</b></font><br>");
! isSigned=false;
} catch (NonExistingSignerException e) {
out.println("<br><font color=\"red\"><b>ERROR: We Aren't Able to Sign for that NameSpace</b></font><br>");
! isSigned=false;
}
--- 194,242 ----
return ks;
}
+
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("NEUDIST: doPost()");
! if (request.getContentType().equals("text/xml")) {
System.out.println("NEUDIST: call SOAP Servlet");
super.doPost(request, response);
return;
}
! response.setHeader("Pragma", "no-cache");
! response.setDateHeader("Expires", 0);
response.setContentType("text/html");
! PrintWriter out = response.getWriter();
! ServletTools.printHeader(out, request, title);
! String b64xml = request.getParameter("base64xml");
! String xml = request.getParameter("xml");
! String endpoint = request.getParameter("endpoint");
! String passphrase = request.getParameter("passphrase");
SignatureRequest sigreq;
NamedObject named;
! boolean isSigned = false;
! Element elem = null;
try {
if (!Utility.isEmpty(xml)) {
! elem = DocumentHelper.parseText(xml).getRootElement();
! } else if (!Utility.isEmpty(b64xml)) {
! elem = XMLSecTools.decodeElementBase64(b64xml);
! }
! sigreq = new SignatureRequest(elem);
! named = sigreq.getPayload();
! if (!Utility.isEmpty(passphrase) && !Utility.isEmpty(request.getParameter("sign"))) {
out.println("Signing ...");
out.flush();
try {
! signObject(named, passphrase.toCharArray());
! isSigned = true;
out.println("<br>Done<br>");
} catch (InvalidNameSpaceException e) {
out.println("<br><font color=\"red\"><b>ERROR: Invalid NameSpace</b></font><br>");
! isSigned = false;
} catch (InvalidPassphraseException e) {
out.println("<br><font color=\"red\"><b>ERROR: Wrong Passphrase</b></font><br>");
! isSigned = false;
} catch (NonExistingSignerException e) {
out.println("<br><font color=\"red\"><b>ERROR: We Aren't Able to Sign for that NameSpace</b></font><br>");
! isSigned = false;
}
***************
*** 247,258 ****
// explwriter.write(((Explainable)named).explain());
out.print("<pre>");
! StringWriter sw=new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
! XMLWriter writer = new XMLWriter( sw, format );
! writer.write( elem );
out.write(sw.toString());
out.println("</pre></td></tr></table>");
! if(!isSigned) {
! out.println("<table bgcolor=\"#D0FFD0\"><tr><td bgcolor=\"#026A32\"><h4 style=\"color: white\">Do you wish to sign this?</h4></td></tr>");
out.println("<tr><td><form action=\"Signer\" method=\"POST\"><input name=\"base64xml\" value=\"");
out.println(XMLSecTools.encodeElementBase64(elem));
--- 251,262 ----
// explwriter.write(((Explainable)named).explain());
out.print("<pre>");
! StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
! XMLWriter writer = new XMLWriter(sw, format);
! writer.write(elem);
out.write(sw.toString());
out.println("</pre></td></tr></table>");
! if (!isSigned) {
! out.println("<table bgcolor=\"#D0FFD0\"><tr><td bgcolor=\"#026A32\"><h4 style=\"color: white\">Do you wish to sign this?</h4></td></tr>");
out.println("<tr><td><form action=\"Signer\" method=\"POST\"><input name=\"base64xml\" value=\"");
out.println(XMLSecTools.encodeElementBase64(elem));
***************
*** 260,265 ****
out.println(endpoint);
out.println("\" type=\"hidden\"/>\nPassphrase: <input name=\"passphrase\" type=\"password\" size=\"40\">");
! out.println(" <input type=\"submit\" name=\"sign\" value=\"Sign\"></form></td></tr></table>");
! } else if (!Utility.isEmpty(endpoint)) {
out.println("<h3><a href=\"");
out.println(endpoint);
--- 264,269 ----
out.println(endpoint);
out.println("\" type=\"hidden\"/>\nPassphrase: <input name=\"passphrase\" type=\"password\" size=\"40\">");
! out.println(" <input type=\"submit\" name=\"sign\" value=\"Sign\"></form></td></tr></table>");
! } else if (!Utility.isEmpty(endpoint)) {
out.println("<h3><a href=\"");
out.println(endpoint);
***************
*** 271,292 ****
} catch (DocumentException e) {
out.println("<br><font color=\"red\"><pre>");
! e.printStackTrace(out);
! out.println("</pre></font>");
} catch (NeudistException e) {
out.println("<br><font color=\"red\"><pre>");
! e.printStackTrace(out);
! out.println("</pre></font>");
! }
out.println("<p align\"left\"><img src=\"images/neubia40x40.png\"><br><a href=\"http://www.neubia.com\"><i>© 2002 Antilles Software Ventures SA</i></a></body></html>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
! response.setHeader("Pragma","no-cache");
! response.setDateHeader("Expires",0);
response.setContentType("text/html");
! System.out.println("NEUDIST: doGet()");
! PrintWriter out=response.getWriter();
! ServletTools.printHeader(out,request,title);
out.println("<form method=\"POST\" action=\"Signer\"><textarea name=\"xml\" cols=\"80\"rows=\"30\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"Confirm\"></form>");
out.println("</body></html>");
--- 275,296 ----
} catch (DocumentException e) {
out.println("<br><font color=\"red\"><pre>");
! e.printStackTrace(out);
! out.println("</pre></font>");
} catch (NeudistException e) {
out.println("<br><font color=\"red\"><pre>");
! e.printStackTrace(out);
! out.println("</pre></font>");
! }
out.println("<p align\"left\"><img src=\"images/neubia40x40.png\"><br><a href=\"http://www.neubia.com\"><i>© 2002 Antilles Software Ventures SA</i></a></body></html>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
! response.setHeader("Pragma", "no-cache");
! response.setDateHeader("Expires", 0);
response.setContentType("text/html");
! System.out.println("NEUDIST: doGet()");
! PrintWriter out = response.getWriter();
! ServletTools.printHeader(out, request, title);
out.println("<form method=\"POST\" action=\"Signer\"><textarea name=\"xml\" cols=\"80\"rows=\"30\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"Confirm\"></form>");
out.println("</body></html>");
***************
*** 296,306 ****
public Element receiveNamedObject(NamedObject obj, String soapAction) throws SOAPException {
try {
! signObject(obj,"hello".toCharArray());// TODO How do we get the passphrase here? Popup request?
return obj.getElement();
} catch (InvalidNameSpaceException e) {
! throw new SOAPException(e);
! } catch (InvalidPassphraseException e) {
! throw new SOAPException(e);
! } catch (NonExistingSignerException e) {
throw new SOAPException(e);
} catch (NeudistException e) {
--- 300,310 ----
public Element receiveNamedObject(NamedObject obj, String soapAction) throws SOAPException {
try {
! signObject(obj, "hello".toCharArray());// TODO How do we get the passphrase here? Popup request?
return obj.getElement();
} catch (InvalidNameSpaceException e) {
! throw new SOAPException(e);
! } catch (InvalidPassphraseException e) {
! throw new SOAPException(e);
! } catch (NonExistingSignerException e) {
throw new SOAPException(e);
} catch (NeudistException e) {
***************
*** 309,319 ****
}
! protected static void signObject(NamedObject obj, char passphrase[]) throws NeudistException, InvalidNameSpaceException, InvalidPassphraseException,NonExistingSignerException {
if (!obj.isSigned()) {
try {
! String parentName=NSTools.getParentNSURI(obj.getName());
! PrivateKey pk=ks.getKey(parentName,passphrase);
! if (pk==null)
! throw new NonExistingSignerException("Signing Service doesn't contain Signing keys for: "+parentName);
obj.sign(pk);
// obj.store();
--- 313,323 ----
}
! protected static void signObject(NamedObject obj, char passphrase[]) throws NeudistException, InvalidNameSpaceException, InvalidPassphraseException, NonExistingSignerException {
if (!obj.isSigned()) {
try {
! String parentName = NSTools.getParentNSURI(obj.getName());
! PrivateKey pk = ks.getKey(parentName, passphrase);
! if (pk == null)
! throw new NonExistingSignerException("Signing Service doesn't contain Signing keys for: " + parentName);
obj.sign(pk);
// obj.store();
***************
*** 328,331 ****
--- 332,336 ----
}
+
protected javax.servlet.ServletContext context;
private static SignerStore ks;
|