From: Nick Burch Date: Tue, 4 Nov 2014 23:22:50 +0000 (+0000) Subject: FilePassRecord type of 4 is now documented as the same as 2 & 3, see bug #35897 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3300ac2a56bf0a83f7f084c8f536eda1cc51a4f8;p=poi.git FilePassRecord type of 4 is now documented as the same as 2 & 3, see bug #35897 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1636776 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/hssf/record/FilePassRecord.java b/src/java/org/apache/poi/hssf/record/FilePassRecord.java index 32ad6787e2..59d144f8ce 100644 --- a/src/java/org/apache/poi/hssf/record/FilePassRecord.java +++ b/src/java/org/apache/poi/hssf/record/FilePassRecord.java @@ -45,6 +45,7 @@ public final class FilePassRecord extends StandardRecord { private static final int ENCRYPTION_OTHER_RC4 = 1; private static final int ENCRYPTION_OTHER_CAPI_2 = 2; private static final int ENCRYPTION_OTHER_CAPI_3 = 3; + private static final int ENCRYPTION_OTHER_CAPI_4 = 4; private byte[] _salt; private byte[] _encryptedVerifier; @@ -60,6 +61,7 @@ public final class FilePassRecord extends StandardRecord { break; case ENCRYPTION_OTHER_CAPI_2: case ENCRYPTION_OTHER_CAPI_3: + case ENCRYPTION_OTHER_CAPI_4: throw new EncryptedDocumentException( "HSSF does not currently support CryptoAPI encryption"); default: diff --git a/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java b/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java index 9083fbdf75..ff8e18937e 100644 --- a/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java +++ b/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java @@ -36,6 +36,7 @@ public class TestBiffViewer extends BaseXLSIteratingTest { SILENT_EXCLUDED.add("43493.xls"); // HSSFWorkbook cannot open it as well SILENT_EXCLUDED.add("password.xls"); SILENT_EXCLUDED.add("46904.xls"); + SILENT_EXCLUDED.add("35897-type4.xls"); // unsupported crypto api header SILENT_EXCLUDED.add("xor-encryption-abc.xls"); // unsupported XOR-encryption } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 575e3b4850..015c8c5950 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2460,6 +2460,13 @@ public final class TestBugs extends BaseTestBugzillaIssues { } finally { Biff8EncryptionKey.setCurrentUserPassword(null); } + + // One using the only-recently-documented encryption header type 4, + // and the RC4 CryptoAPI encryption header structure + try { + openSample("35897-type4.xls"); + fail("POI doesn't currently support the RC4 CryptoAPI encryption header structure"); + } catch (EncryptedDocumentException e) {} } @Test diff --git a/test-data/spreadsheet/35897-type4.xls b/test-data/spreadsheet/35897-type4.xls new file mode 100644 index 0000000000..c3eadbbc5f Binary files /dev/null and b/test-data/spreadsheet/35897-type4.xls differ