aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/testcases
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2021-03-17 22:51:58 +0000
committerAndreas Beeker <kiwiwings@apache.org>2021-03-17 22:51:58 +0000
commit2ceb5ff55346ee97c3541c9e7bcd8bc5847be9b4 (patch)
tree54b5728fae97e9f0d125db9265b8800b1e786b91 /src/ooxml/testcases
parent393d3a3ce98b06560b3e6cd0fb4d0ce60f355eaa (diff)
downloadpoi-2ceb5ff55346ee97c3541c9e7bcd8bc5847be9b4.tar.gz
poi-2ceb5ff55346ee97c3541c9e7bcd8bc5847be9b4.zip
#65192 - Allow change of EncryptionMode
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1887764 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/testcases')
-rw-r--r--src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java
index 548e12ced9..bf5aebb590 100644
--- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java
+++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestHxxFEncryption.java
@@ -23,23 +23,34 @@ import static org.apache.poi.POIDataSamples.getSpreadSheetInstance;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.stream.Stream;
+import org.apache.poi.hssf.model.WorkbookRecordList;
+import org.apache.poi.hssf.record.FilePassRecord;
+
import org.apache.poi.POIDataSamples;
import org.apache.poi.POIDocument;
import org.apache.poi.extractor.ExtractorFactory;
import org.apache.poi.extractor.POITextExtractor;
+import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.crypt.EncryptionInfo;
+import org.apache.poi.poifs.crypt.EncryptionMode;
+import org.apache.poi.poifs.crypt.binaryrc4.BinaryRC4EncryptionHeader;
import org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIEncryptionHeader;
import org.apache.poi.poifs.storage.RawDataUtil;
+import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
@@ -167,4 +178,38 @@ class TestHxxFEncryption {
Biff8EncryptionKey.setCurrentUserPassword(null);
}
}
+
+ @Test
+ public void changeEncryptionMode() throws IOException {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream(10_000);
+
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ wb.createSheet().createRow(1).createCell(1).setCellValue("Test");
+ Biff8EncryptionKey.setCurrentUserPassword("test1");
+ wb.write(bos);
+ }
+
+ try (HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+ assertEquals(EncryptionMode.cryptoAPI, wb.getEncryptionMode());
+ wb.setEncryptionMode(EncryptionMode.binaryRC4);
+ Biff8EncryptionKey.setCurrentUserPassword("test2");
+ bos.reset();
+ wb.write(bos);
+ }
+
+ try (HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+ assertEquals(EncryptionMode.binaryRC4, wb.getEncryptionMode());
+ wb.setEncryptionMode(null);
+ bos.reset();
+ wb.write(bos);
+ }
+
+ assertNull(Biff8EncryptionKey.getCurrentUserPassword());
+
+ try (HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(bos.toByteArray()))) {
+ assertNull(wb.getEncryptionMode());
+ wb.setEncryptionMode(null);
+ assertEquals("Test", wb.getSheetAt(0).getRow(1).getCell(1).getStringCellValue());
+ }
+ }
}