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]