Patch from Andreas Beeker from bug #53475 - Switch XWPF test to JUnit 4, so that we can skip one part of the tests if the JVM doesn't support larger keys

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1544121 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2013-11-21 11:18:23 +00:00
parent d1118ce0d5
commit 44c9f41cc9
3 changed files with 82 additions and 81 deletions

View File

@ -194,6 +194,7 @@ public class AgileDecryptor extends Decryptor {
private Cipher getCipher(SecretKey key, byte[] vec)
throws GeneralSecurityException {
String name = null;
String chain = null;
@ -209,6 +210,11 @@ public class AgileDecryptor extends Decryptor {
throw new EncryptedDocumentException("Unsupported algorithm");
}
// Ensure the JCE policies files allow for this sized key
if (Cipher.getMaxAllowedKeyLength(name) < _info.getHeader().getKeySize()) {
throw new EncryptedDocumentException("Export Restrictions in place - please install JCE Unlimited Strength Jurisdiction Policy files");
}
switch (verifier.getCipherMode()) {
case EncryptionHeader.MODE_CBC:
chain = "CBC";

View File

@ -17,9 +17,6 @@
package org.apache.poi.xwpf;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.poi.xwpf.extractor.TestXWPFWordExtractor;
import org.apache.poi.xwpf.model.TestXWPFHeaderFooterPolicy;
import org.apache.poi.xwpf.usermodel.TestXWPFDocument;
@ -31,30 +28,28 @@ import org.apache.poi.xwpf.usermodel.TestXWPFPictureData;
import org.apache.poi.xwpf.usermodel.TestXWPFRun;
import org.apache.poi.xwpf.usermodel.TestXWPFStyles;
import org.apache.poi.xwpf.usermodel.TestXWPFTable;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
/**
* Collects all tests for <tt>org.apache.poi.xwpf</tt> and sub-packages.
*
* @author Josh Micich
*/
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestXWPFBugs.class,
TestXWPFDocument.class,
TestXWPFWordExtractor.class,
TestXWPFHeaderFooterPolicy.class,
TestXWPFHeader.class,
TestXWPFHeadings.class,
TestXWPFParagraph.class,
TestXWPFRun.class,
TestXWPFTable.class,
TestXWPFStyles.class,
TestXWPFPictureData.class,
TestXWPFNumbering.class,
TestAllExtendedProperties.class,
TestPackageCorePropertiesGetKeywords.class
})
public final class AllXWPFTests {
public static Test suite() {
TestSuite result = new TestSuite(AllXWPFTests.class.getName());
result.addTestSuite(TestXWPFBugs.class);
result.addTestSuite(TestXWPFDocument.class);
result.addTestSuite(TestXWPFWordExtractor.class);
result.addTestSuite(TestXWPFHeaderFooterPolicy.class);
result.addTestSuite(TestXWPFHeader.class);
result.addTestSuite(TestXWPFHeadings.class);
result.addTestSuite(TestXWPFParagraph.class);
result.addTestSuite(TestXWPFRun.class);
result.addTestSuite(TestXWPFTable.class);
result.addTestSuite(TestXWPFStyles.class);
result.addTestSuite(TestXWPFPictureData.class);
result.addTestSuite(TestXWPFNumbering.class);
result.addTestSuite(TestAllExtendedProperties.class);
result.addTestSuite(TestPackageCorePropertiesGetKeywords.class);
return result;
}
}

View File

@ -1,12 +1,15 @@
package org.apache.poi.xwpf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.InputStream;
import junit.framework.TestCase;
import javax.crypto.Cipher;
import org.apache.poi.POIDataSamples;
import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionHeader;
@ -14,15 +17,16 @@ import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.junit.Assume;
import org.junit.Test;
public class TestXWPFBugs extends TestCase {
public class TestXWPFBugs {
/**
* A word document that's encrypted with non-standard
* Encryption options, and no cspname section. See bug 53475
*/
public void test53475NoCSPName() throws Exception {
try {
Biff8EncryptionKey.setCurrentUserPassword("solrcell");
@Test
public void bug53475NoCSPName() throws Exception {
File file = POIDataSamples.getDocumentInstance().getFile("bug53475-password-is-solrcell.docx");
NPOIFSFileSystem filesystem = new NPOIFSFileSystem(file, true);
@ -45,18 +49,17 @@ public class TestXWPFBugs extends TestCase {
assertNotNull(text);
assertEquals("This is password protected Word document.", text.trim());
ex.close();
} finally {
Biff8EncryptionKey.setCurrentUserPassword(null);
}
}
/**
* A word document with aes-256, i.e. aes is always 128 bit (= 128 bit block size),
* but the key can be 128/192/256 bits
*/
public void test53475_aes256() throws Exception {
try {
Biff8EncryptionKey.setCurrentUserPassword("pass");
@Test
public void bug53475_aes256() throws Exception {
int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
Assume.assumeTrue("Please install JCE Unlimited Strength Jurisdiction Policy files for AES 256", maxKeyLen == 2147483647);
File file = POIDataSamples.getDocumentInstance().getFile("bug53475-password-is-pass.docx");
NPOIFSFileSystem filesystem = new NPOIFSFileSystem(file, true);
@ -81,8 +84,5 @@ public class TestXWPFBugs extends TestCase {
// I know ... a stupid typo, maybe next time ...
assertEquals("The is a password protected document.", text.trim());
ex.close();
} finally {
Biff8EncryptionKey.setCurrentUserPassword(null);
}
}
}