Author: kiwiwings
Date: Tue Jul 25 22:42:22 2017
New Revision: 1803011

URL: http://svn.apache.org/viewvc?rev=1803011&view=rev
Log:
Bug 61182 - Invalid signature created for streamed xlsx file
- add hashes for other linebreaks

Modified:
    
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java?rev=1803011&r1=1803010&r2=1803011&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java 
Tue Jul 25 22:42:22 2017
@@ -27,6 +27,7 @@ import static org.junit.Assert.assertEqu
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -81,6 +82,7 @@ import org.apache.poi.util.POILogFactory
 import org.apache.poi.util.POILogger;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.apache.xmlbeans.SystemProperties;
 import org.apache.xmlbeans.XmlObject;
 import org.bouncycastle.asn1.x509.KeyUsage;
 import org.bouncycastle.cert.ocsp.OCSPResp;
@@ -178,14 +180,40 @@ public class TestSignatureInfo {
         pkg1.save(bos);
         pkg1.close();
         
+        FileOutputStream fos = new FileOutputStream("tmp/sigtest/poi.xlsx");
+        bos.writeTo(fos);
+        fos.close();
+        
         XSSFWorkbook wb2 = new XSSFWorkbook(new 
ByteArrayInputStream(bos.toByteArray()));
         assertEquals("Test", 
wb2.getSheetAt(0).getRow(1).getCell(1).getStringCellValue());
         OPCPackage pkg2 = wb2.getPackage();
         signatureConfig.setOpcPackage(pkg2);
         assertTrue(si.verifySignature());
-        String signExp =
-            
"HDdvgXblLMiE6gZSoRSQUof6+aedrhK9i51we1n+4Q/ioqrQCeh5UkfQ8lD63nV4ZDbM4/pIVFi6VpMpN/HMnA"+
-            
"UHeVdVUCVTgpn3Iz21Ymcd9/aerNov2BjHLhS8X3oUE+XTu2TbJLNmms0I9G4lfg6HWP9t7ZCXBXy6vyCMArc=";
+        
+        // xmlbeans adds line-breaks depending on the system setting, so we 
get different
+        // test results on Unix/Mac/Windows
+        // if the xml documents eventually change, this test needs to be run 
with the
+        // separator set to the various system configurations
+        String sep = SystemProperties.getProperty( "line.separator" );
+        String signExp;
+        assumeTrue("Hashes only known for Windows/Unix/Mac", sep == null || 
"\n".equals(sep) || "\r\n".equals(sep) || "\r".equals(sep));
+        if (sep == null || "\n".equals(sep)) {
+            // Unix
+            signExp =
+                
"HDdvgXblLMiE6gZSoRSQUof6+aedrhK9i51we1n+4Q/ioqrQCeh5UkfQ8lD63nV4ZDbM4/pIVFi6VpMpN/HMnA"+
+                
"UHeVdVUCVTgpn3Iz21Ymcd9/aerNov2BjHLhS8X3oUE+XTu2TbJLNmms0I9G4lfg6HWP9t7ZCXBXy6vyCMArc=";
+        } else if ("\r\n".equals(sep)){
+            // Windows
+            signExp =
+                
"jVW6EPMywZ8jr4+I4alDosXzqrVuDG4wTdrr+la8QVbXfLm6HOh9AUFlo5yUZuWo/1gXrrkc34UTYNzuslyrOx"+
+                
"KqadPOIRKUssJzdCh/hKeTxs/YtyWkpGHggrUjrF/vUUIeIXRHo+1DCAh6ptoicviH/I/Dtoa5NgkEHVuOHk8=";
+        } else {
+            // Mac
+            signExp =
+                
"GSaOQp2eVRkQl2GJgWxoxFdCadJJnmmKeoQtIwGrP3zzk+BnLeytGLN3bqmwCTjvtG7DyxENS+92e2xq/MiC9b"+
+                
"CtNUfXfCdM0M8fzAny/Ewn9HckIsxjBztmsryt/OZQaKu52VU0ohQu7bG+cGPzcM+qTEss+GUbD0sVAoC34HM=";
+        }
+        
         String signAct = si.getSignatureParts().iterator().next().
             
getSignatureDocument().getSignature().getSignatureValue().getStringValue();
         assertEquals(signExp, signAct);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to