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/03/06 01:53:10 UTC
svn commit: r1574732 - in /poi/trunk/src: java/org/apache/poi/poifs/crypt/
java/org/apache/poi/poifs/crypt/standard/
ooxml/java/org/apache/poi/xwpf/usermodel/
ooxml/testcases/org/apache/poi/poifs/crypt/
Author: kiwiwings
Date: Thu Mar 6 00:53:09 2014
New Revision: 1574732
URL: http://svn.apache.org/r1574732
Log:
Added MD4-option and some cleanups
Modified:
poi/trunk/src/java/org/apache/poi/poifs/crypt/HashAlgorithm.java
poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java
poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java
Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/HashAlgorithm.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/HashAlgorithm.java?rev=1574732&r1=1574731&r2=1574732&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/crypt/HashAlgorithm.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/crypt/HashAlgorithm.java Thu Mar 6 00:53:09 2014
@@ -29,6 +29,7 @@ public enum HashAlgorithm {
md5 ( "MD5", -1, "MD5", 16, "HmacMD5", false),
// although sunjc2 supports md2, hmac-md2 is only supported by bouncycastle
md2 ( "MD2", -1, "MD2", 16, "Hmac-MD2", true),
+ md4 ( "MD4", -1, "MD4", 16, "Hmac-MD4", true),
ripemd128("RipeMD128", -1, "RIPEMD-128", 16, "HMac-RipeMD128", true),
ripemd160("RipeMD160", -1, "RIPEMD-160", 20, "HMac-RipeMD160", true),
whirlpool("Whirlpool", -1, "WHIRLPOOL", 64, "HMac-Whirlpool", true),
Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java?rev=1574732&r1=1574731&r2=1574732&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java Thu Mar 6 00:53:09 2014
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import javax.crypto.Cipher;
@@ -61,7 +60,7 @@ public class StandardDecryptor extends D
byte encryptedVerifier[] = ver.getEncryptedVerifier();
byte verifier[] = cipher.doFinal(encryptedVerifier);
setVerifier(verifier);
- MessageDigest sha1 = MessageDigest.getInstance(ver.getHashAlgorithm().jceId);
+ MessageDigest sha1 = CryptoFunctions.getMessageDigest(ver.getHashAlgorithm());
byte[] calcVerifierHash = sha1.digest(verifier);
byte encryptedVerifierHash[] = ver.getEncryptedVerifierHash();
byte decryptedVerifierHash[] = cipher.doFinal(encryptedVerifierHash);
@@ -108,12 +107,8 @@ public class StandardDecryptor extends D
buff[i] = (byte) (buff[i] ^ hash[i]);
}
- try {
- MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
- return sha1.digest(buff);
- } catch (NoSuchAlgorithmException e) {
- throw new EncryptedDocumentException("hash algo not supported", e);
- }
+ MessageDigest sha1 = CryptoFunctions.getMessageDigest(HashAlgorithm.sha1);
+ return sha1.digest(buff);
}
/**
Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java?rev=1574732&r1=1574731&r2=1574732&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java Thu Mar 6 00:53:09 2014
@@ -85,7 +85,7 @@ public class StandardEncryptor extends E
try {
byte encryptedVerifier[] = cipher.doFinal(verifier);
- MessageDigest hashAlgo = MessageDigest.getInstance(ver.getHashAlgorithm().jceId);
+ MessageDigest hashAlgo = CryptoFunctions.getMessageDigest(ver.getHashAlgorithm());
byte calcVerifierHash[] = hashAlgo.digest(verifier);
// 2.3.3 EncryptionVerifier ...
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java?rev=1574732&r1=1574731&r2=1574732&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java Thu Mar 6 00:53:09 2014
@@ -205,7 +205,10 @@ public class XWPFSettings extends POIXML
providerType = STCryptProv.RSA_FULL;
sid = 1;
break;
- // md4 is not supported by JCE
+ case md4:
+ providerType = STCryptProv.RSA_FULL;
+ sid = 2;
+ break;
case md5:
providerType = STCryptProv.RSA_FULL;
sid = 3;
@@ -274,6 +277,7 @@ public class XWPFSettings extends POIXML
HashAlgorithm hashAlgo;
switch (sid.intValue()) {
case 1: hashAlgo = HashAlgorithm.md2; break;
+ case 2: hashAlgo = HashAlgorithm.md4; break;
case 3: hashAlgo = HashAlgorithm.md5; break;
case 4: hashAlgo = HashAlgorithm.sha1; break;
case 12: hashAlgo = HashAlgorithm.sha256; break;
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java?rev=1574732&r1=1574731&r2=1574732&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestDecryptor.java Thu Mar 6 00:53:09 2014
@@ -16,6 +16,9 @@
==================================================================== */
package org.apache.poi.poifs.crypt;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -23,17 +26,17 @@ import java.security.GeneralSecurityExce
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
-import junit.framework.TestCase;
-
import org.apache.poi.POIDataSamples;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.junit.Test;
/**
* @author Maxim Valyanskiy
* @author Gary King
*/
-public class TestDecryptor extends TestCase {
- public void testPasswordVerification() throws IOException, GeneralSecurityException {
+public class TestDecryptor {
+ @Test
+ public void passwordVerification() throws IOException, GeneralSecurityException {
POIFSFileSystem fs = new POIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx"));
EncryptionInfo info = new EncryptionInfo(fs);
@@ -43,7 +46,8 @@ public class TestDecryptor extends TestC
assertTrue(d.verifyPassword(Decryptor.DEFAULT_PASSWORD));
}
- public void testDecrypt() throws IOException, GeneralSecurityException {
+ @Test
+ public void decrypt() throws IOException, GeneralSecurityException {
POIFSFileSystem fs = new POIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx"));
EncryptionInfo info = new EncryptionInfo(fs);
@@ -55,7 +59,8 @@ public class TestDecryptor extends TestC
zipOk(fs, d);
}
- public void testAgile() throws IOException, GeneralSecurityException {
+ @Test
+ public void agile() throws IOException, GeneralSecurityException {
POIFSFileSystem fs = new POIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("protected_agile.docx"));
EncryptionInfo info = new EncryptionInfo(fs);
@@ -83,7 +88,9 @@ public class TestDecryptor extends TestC
}
}
}
- public void testDataLength() throws Exception {
+
+ @Test
+ public void dataLength() throws Exception {
POIFSFileSystem fs = new POIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("protected_agile.docx"));
EncryptionInfo info = new EncryptionInfo(fs);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org