You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2015/11/20 23:38:27 UTC
svn commit: r1715438 - in /poi: site/src/documentation/content/xdocs/
trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/
trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/
trunk/test-data/xmldsign/
Author: kiwiwings
Date: Fri Nov 20 22:38:27 2015
New Revision: 1715438
URL: http://svn.apache.org/viewvc?rev=1715438&view=rev
Log:
#58630 - Signing failed after deletion of first sheet
Added:
poi/trunk/test-data/xmldsign/bug58630.xlsx (with props)
Modified:
poi/site/src/documentation/content/xdocs/status.xml
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/OOXMLSignatureFacet.java
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
Modified: poi/site/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1715438&r1=1715437&r2=1715438&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Fri Nov 20 22:38:27 2015
@@ -40,6 +40,7 @@
</devs>
<release version="3.14-beta1" date="2015-11-??">
+ <action dev="PD" type="fix" fixes-bug="58630">Signing failed after deletion of first sheet</action>
<action dev="PD" type="fix" fixes-bug="55955">Filling an existing ppt table stopped working with 3.9</action>
<action dev="PD" type="fix" fixes-bug="54210">When saving PPT to PNG, some text is rendered backwards</action>
<action dev="PD" type="fix" fixes-bug="53189">Shapes drawn wrongly when ppt file converted to image</action>
Modified: poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/OOXMLSignatureFacet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/OOXMLSignatureFacet.java?rev=1715438&r1=1715437&r2=1715438&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/OOXMLSignatureFacet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/OOXMLSignatureFacet.java Fri Nov 20 22:38:27 2015
@@ -33,7 +33,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
-import java.util.TimeZone;
import javax.xml.XMLConstants;
import javax.xml.crypto.XMLStructure;
@@ -113,6 +112,7 @@ public class OOXMLSignatureFacet extends
references.add(reference);
}
+ @SuppressWarnings("resource")
protected void addManifestReferences(List<Reference> manifestReferences)
throws XMLSignatureException {
@@ -149,7 +149,10 @@ public class OOXMLSignatureFacet extends
parameterSpec.addRelationshipReference(relationship.getId());
// TODO: find a better way ...
- String partName = baseUri + relationship.getTargetURI().toString();
+ String partName = relationship.getTargetURI().toString();
+ if (!partName.startsWith(baseUri)) {
+ partName = baseUri + partName;
+ }
try {
partName = new URI(partName).normalize().getPath().replace('\\', '/');
LOG.log(POILogger.DEBUG, "part name: " + partName);
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=1715438&r1=1715437&r2=1715438&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 Fri Nov 20 22:38:27 2015
@@ -28,6 +28,8 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -68,11 +70,13 @@ import org.apache.poi.poifs.crypt.dsig.s
import org.apache.poi.poifs.crypt.dsig.services.RevocationDataService;
import org.apache.poi.poifs.crypt.dsig.services.TimeStampService;
import org.apache.poi.poifs.crypt.dsig.services.TimeStampServiceValidator;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.util.DocumentHelper;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.LocaleUtil;
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.XmlObject;
import org.bouncycastle.asn1.x509.KeyUsage;
@@ -240,6 +244,7 @@ public class TestSignatureInfo {
public void testManipulation() throws Exception {
// sign & validate
String testFile = "hello-world-unsigned.xlsx";
+ @SuppressWarnings("resource")
OPCPackage pkg = OPCPackage.open(copy(testdata.getFile(testFile)), PackageAccess.READ_WRITE);
sign(pkg, "Test", "CN=Test", 1);
@@ -379,6 +384,7 @@ public class TestSignatureInfo {
try {
si.confirmSignature();
} catch (RuntimeException e) {
+ pkg.close();
// only allow a ConnectException because of timeout, we see this in Jenkins from time to time...
if(e.getCause() == null) {
throw e;
@@ -546,6 +552,32 @@ public class TestSignatureInfo {
}
}
}
+
+ @Test
+ public void bug58630() throws Exception {
+ // test deletion of sheet 0 and signing
+ File tpl = copy(testdata.getFile("bug58630.xlsx"));
+ SXSSFWorkbook wb1 = new SXSSFWorkbook((XSSFWorkbook)WorkbookFactory.create(tpl), 10);
+ wb1.setCompressTempFiles(true);
+ wb1.removeSheetAt(0);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ wb1.write(os);
+ wb1.close();
+ OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(os.toByteArray()));
+
+ initKeyPair("Test", "CN=Test");
+ SignatureConfig signatureConfig = new SignatureConfig();
+ signatureConfig.setKey(keyPair.getPrivate());
+ signatureConfig.setSigningCertificateChain(Collections.singletonList(x509));
+ signatureConfig.setOpcPackage(pkg);
+
+ SignatureInfo si = new SignatureInfo();
+ si.setSignatureConfig(signatureConfig);
+ si.confirmSignature();
+ assertTrue("invalid signature", si.verifySignature());
+
+ pkg.close();
+ }
private void sign(OPCPackage pkgCopy, String alias, String signerDn, int signerCount) throws Exception {
Added: poi/trunk/test-data/xmldsign/bug58630.xlsx
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/xmldsign/bug58630.xlsx?rev=1715438&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/xmldsign/bug58630.xlsx
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org