Author: psharples
Date: Wed Aug 22 17:52:30 2012
New Revision: 1376159

URL: http://svn.apache.org/viewvc?rev=1376159&view=rev
Log:
Fixed problem with the schema path for the digsig verification.  In a 
development setup the schema is nested down under the /src folder.  However, a 
release build (war, standalone etc) will not have a /src folder.  So updated 
the code to take a reference obtained from the servlet context, which gets a 
real runtime path, found under the WEB-INF folder.

Modified:
    
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
    incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
    
incubator/wookie/trunk/src/org/apache/wookie/util/digitalsignature/DigitalSignatureProcessor.java

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java?rev=1376159&r1=1376158&r2=1376159&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java 
Wed Aug 22 17:52:30 2012
@@ -270,6 +270,9 @@ public class WidgetsController extends C
         fac.setStartPageProcessor(new StartPageProcessor());
         if (VERIFYSIGNATURE) {
             KeyStore keyStore = KeyStore.getInstance("JKS");
+            String digSigSchema = getServletContext()
+            
.getRealPath("/WEB-INF/classes/org/apache/wookie/util/digitalsignature/xmldsig-core-schema.xsd");
+
             InputStream stream = 
getServletContext().getResourceAsStream("/WEB-INF/classes/" + KEYSTORE);
             if (stream == null) {
                 stream = 
getServletContext().getResourceAsStream("/WEB-INF/classes/" + "generated-" + 
KEYSTORE);
@@ -281,13 +284,13 @@ public class WidgetsController extends C
                 keyStore.store(fos, PASSWORD.toCharArray());
                 fos.close();
                 fac.setDigitalSignatureParser(new 
DigitalSignatureProcessor(keyStore,
-                        REJECTINVALID, REJECTUNTRUSTED));
+                        digSigSchema, REJECTINVALID, REJECTUNTRUSTED));
                 _logger.info(localizedMessages.getString("WidgetHotDeploy.4"));
             } else {
                 keyStore.load(stream, PASSWORD.toCharArray());
                 stream.close();
                 fac.setDigitalSignatureParser(new 
DigitalSignatureProcessor(keyStore,
-                        REJECTINVALID, REJECTUNTRUSTED));
+                        digSigSchema, REJECTINVALID, REJECTUNTRUSTED));
             }
         }
         W3CWidget widgetModel = fac.parse(zipFile);

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java?rev=1376159&r1=1376158&r2=1376159&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
Wed Aug 22 17:52:30 2012
@@ -199,6 +199,8 @@ public class ContextListener implements 
                             fac.setStartPageProcessor(new 
StartPageProcessor());
                             if (VERIFYSIGNATURE) {
                                 KeyStore keyStore = 
KeyStore.getInstance("JKS");
+                                String digSigSchema = context
+                                        
.getRealPath("/WEB-INF/classes/org/apache/wookie/util/digitalsignature/xmldsig-core-schema.xsd");
                                 InputStream stream = 
context.getResourceAsStream("/WEB-INF/classes/" + KEYSTORE);
                                 if (stream == null) {
                                     stream = 
context.getResourceAsStream("/WEB-INF/classes/" + "generated-" + KEYSTORE);
@@ -210,13 +212,13 @@ public class ContextListener implements 
                                     keyStore.store(fos, 
PASSWORD.toCharArray());
                                     fos.close();
                                     fac.setDigitalSignatureParser(new 
DigitalSignatureProcessor(keyStore,
-                                            REJECTINVALID, REJECTUNTRUSTED));
+                                            digSigSchema, REJECTINVALID, 
REJECTUNTRUSTED));
                                     
_logger.info(localizedMessages.getString("WidgetHotDeploy.4"));
                                 } else {
                                     keyStore.load(stream, 
PASSWORD.toCharArray());
                                     stream.close();
                                     fac.setDigitalSignatureParser(new 
DigitalSignatureProcessor(keyStore,
-                                            REJECTINVALID, REJECTUNTRUSTED));
+                                            digSigSchema, REJECTINVALID, 
REJECTUNTRUSTED));
                                 }
                             }
 

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/util/digitalsignature/DigitalSignatureProcessor.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/util/digitalsignature/DigitalSignatureProcessor.java?rev=1376159&r1=1376158&r2=1376159&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/util/digitalsignature/DigitalSignatureProcessor.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/util/digitalsignature/DigitalSignatureProcessor.java
 Wed Aug 22 17:52:30 2012
@@ -64,10 +64,12 @@ public class DigitalSignatureProcessor i
   // certificate located in the trusted keystore.
   private boolean rejectUntrusted;
   private HashSet<String> filesList = new HashSet<String>();
+  private String signatureSchemaFile;
 
-  public DigitalSignatureProcessor(KeyStore keyStore, boolean rejectInvalid,
+  public DigitalSignatureProcessor(KeyStore keyStore, String schemaPath, 
boolean rejectInvalid,
       boolean rejectUntrusted) {
     this.keystore = keyStore;
+    this.signatureSchemaFile = schemaPath;
     this.rejectInvalid = rejectInvalid;
     this.rejectUntrusted = rejectUntrusted;
     // to make it default to reject invalid signatures if signatures with
@@ -176,8 +178,6 @@ public class DigitalSignatureProcessor i
       throws Exception {
     boolean schemaValidate = true;
     boolean isValid = false;
-    final String signatureSchemaFile = 
"src/org/apache/wookie/util/digitalsignature/xmldsig-core"
-        + "-schema.xsd";
 
     if (schemaValidate) {
       _logger.debug("Doing schema validation.");


Reply via email to