Bug 61182 - Invalid signature created for streamed xlsx file
- add hashes for other linebreaks git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1803011 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a07ed9e864
commit
d345faa025
@ -27,6 +27,7 @@ import static org.junit.Assert.assertEquals;
|
|||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@ -81,6 +82,7 @@ import org.apache.poi.util.POILogFactory;
|
|||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
import org.apache.xmlbeans.SystemProperties;
|
||||||
import org.apache.xmlbeans.XmlObject;
|
import org.apache.xmlbeans.XmlObject;
|
||||||
import org.bouncycastle.asn1.x509.KeyUsage;
|
import org.bouncycastle.asn1.x509.KeyUsage;
|
||||||
import org.bouncycastle.cert.ocsp.OCSPResp;
|
import org.bouncycastle.cert.ocsp.OCSPResp;
|
||||||
@ -178,14 +180,40 @@ public class TestSignatureInfo {
|
|||||||
pkg1.save(bos);
|
pkg1.save(bos);
|
||||||
pkg1.close();
|
pkg1.close();
|
||||||
|
|
||||||
|
FileOutputStream fos = new FileOutputStream("tmp/sigtest/poi.xlsx");
|
||||||
|
bos.writeTo(fos);
|
||||||
|
fos.close();
|
||||||
|
|
||||||
XSSFWorkbook wb2 = new XSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()));
|
XSSFWorkbook wb2 = new XSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()));
|
||||||
assertEquals("Test", wb2.getSheetAt(0).getRow(1).getCell(1).getStringCellValue());
|
assertEquals("Test", wb2.getSheetAt(0).getRow(1).getCell(1).getStringCellValue());
|
||||||
OPCPackage pkg2 = wb2.getPackage();
|
OPCPackage pkg2 = wb2.getPackage();
|
||||||
signatureConfig.setOpcPackage(pkg2);
|
signatureConfig.setOpcPackage(pkg2);
|
||||||
assertTrue(si.verifySignature());
|
assertTrue(si.verifySignature());
|
||||||
String signExp =
|
|
||||||
|
// 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"+
|
"HDdvgXblLMiE6gZSoRSQUof6+aedrhK9i51we1n+4Q/ioqrQCeh5UkfQ8lD63nV4ZDbM4/pIVFi6VpMpN/HMnA"+
|
||||||
"UHeVdVUCVTgpn3Iz21Ymcd9/aerNov2BjHLhS8X3oUE+XTu2TbJLNmms0I9G4lfg6HWP9t7ZCXBXy6vyCMArc=";
|
"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().
|
String signAct = si.getSignatureParts().iterator().next().
|
||||||
getSignatureDocument().getSignature().getSignatureValue().getStringValue();
|
getSignatureDocument().getSignature().getSignatureValue().getStringValue();
|
||||||
assertEquals(signExp, signAct);
|
assertEquals(signExp, signAct);
|
||||||
|
Loading…
Reference in New Issue
Block a user