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 2014/08/02 02:51:56 UTC
svn commit: r1615273 - in /poi/trunk/src:
java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java
ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionInfoBuilder.java
ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java
Author: kiwiwings
Date: Sat Aug 2 00:51:56 2014
New Revision: 1615273
URL: http://svn.apache.org/r1615273
Log:
Another test for NPOIFS in-place writing support - probably the deletion of an entry causes the problem
Modified:
poi/trunk/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionInfoBuilder.java
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java
Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java?rev=1615273&r1=1615272&r2=1615273&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java Sat Aug 2 00:51:56 2014
@@ -69,7 +69,13 @@ public class DataSpaceMapUtils {
LittleEndianByteArrayOutputStream bos = new LittleEndianByteArrayOutputStream(buf, 0);
out.write(bos);
- return dir.createDocument(parts[parts.length-1], bos.getWriteIndex(), new POIFSWriterListener(){
+ String fileName = parts[parts.length-1];
+
+ if (dir.hasEntry(fileName)) {
+ dir.getEntry(fileName).delete();
+ }
+
+ return dir.createDocument(fileName, bos.getWriteIndex(), new POIFSWriterListener(){
public void processPOIFSWriterEvent(POIFSWriterEvent event) {
try {
event.getStream().write(buf, 0, event.getLimit());
Modified: poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionInfoBuilder.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionInfoBuilder.java?rev=1615273&r1=1615272&r2=1615273&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionInfoBuilder.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionInfoBuilder.java Sat Aug 2 00:51:56 2014
@@ -48,6 +48,7 @@ public class AgileEncryptionInfoBuilder
if (info.getVersionMajor() == EncryptionMode.agile.versionMajor
&& info.getVersionMinor() == EncryptionMode.agile.versionMinor) {
decryptor = new AgileDecryptor(this);
+ encryptor = new AgileEncryptor(this);
}
}
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java?rev=1615273&r1=1615272&r2=1615273&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java Sat Aug 2 00:51:56 2014
@@ -41,7 +41,10 @@ import org.apache.poi.poifs.filesystem.N
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.BoundedInputStream;
import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.TempFile;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.junit.Assume;
+import org.junit.Ignore;
import org.junit.Test;
public class TestEncryptor {
@@ -227,6 +230,38 @@ public class TestEncryptor {
assertThat(payloadExpected, equalTo(payloadActual));
}
+ @Test
+ @Ignore
+ public void testInPlaceRewrite() throws Exception {
+ File f = TempFile.createTempFile("protected_agile", ".docx");
+ // File f = new File("protected_agile.docx");
+ FileOutputStream fos = new FileOutputStream(f);
+ InputStream fis = POIDataSamples.getPOIFSInstance().openResourceAsStream("protected_agile.docx");
+ IOUtils.copy(fis, fos);
+ fis.close();
+ fos.close();
+
+ NPOIFSFileSystem fs = new NPOIFSFileSystem(f, false);
+
+ // decrypt the protected file - in this case it was encrypted with the default password
+ EncryptionInfo encInfo = new EncryptionInfo(fs);
+ Decryptor d = encInfo.getDecryptor();
+ boolean b = d.verifyPassword(Decryptor.DEFAULT_PASSWORD);
+ assertTrue(b);
+
+ // do some strange things with it ;)
+ XWPFDocument docx = new XWPFDocument(d.getDataStream(fs));
+ docx.getParagraphArray(0).insertNewRun(0).setText("POI was here! All your base are belong to us!");
+ docx.getParagraphArray(0).insertNewRun(1).addBreak();
+
+ // and encrypt it again
+ Encryptor e = encInfo.getEncryptor();
+ e.confirmPassword("AYBABTU");
+ docx.write(e.getDataStream(fs));
+
+ fs.close();
+ }
+
private void listEntry(DocumentNode de, String ext, String path) throws IOException {
path += "\\" + de.getName().replace('\u0006', '_');
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org