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 2016/08/08 21:00:10 UTC
svn commit: r1755541 -
/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/record/FilePassRecord.java
Author: kiwiwings
Date: Mon Aug 8 21:00:10 2016
New Revision: 1755541
URL: http://svn.apache.org/viewvc?rev=1755541&view=rev
Log:
forgot cryptoapi encryption flags
Modified:
poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/record/FilePassRecord.java
Modified: poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/record/FilePassRecord.java
URL: http://svn.apache.org/viewvc/poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/record/FilePassRecord.java?rev=1755541&r1=1755540&r2=1755541&view=diff
==============================================================================
--- poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/record/FilePassRecord.java (original)
+++ poi/branches/hssf_cryptoapi/src/java/org/apache/poi/hssf/record/FilePassRecord.java Mon Aug 8 21:00:10 2016
@@ -17,6 +17,7 @@
package org.apache.poi.hssf.record;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.poi.EncryptedDocumentException;
@@ -31,6 +32,7 @@ import org.apache.poi.poifs.crypt.xor.XO
import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndianByteArrayOutputStream;
import org.apache.poi.util.LittleEndianOutput;
+import org.apache.poi.util.LittleEndianOutputStream;
/**
* Title: File Pass Record (0x002F) <p>
@@ -42,12 +44,10 @@ public final class FilePassRecord extend
private static final int ENCRYPTION_XOR = 0;
private static final int ENCRYPTION_OTHER = 1;
- private int encryptionType;
+ private final int encryptionType;
private EncryptionInfo encryptionInfo;
- private int dataLength;
private FilePassRecord(FilePassRecord other) {
- dataLength = other.dataLength;
encryptionType = other.encryptionType;
try {
encryptionInfo = other.encryptionInfo.clone();
@@ -57,7 +57,6 @@ public final class FilePassRecord extend
}
public FilePassRecord(RecordInputStream in) {
- dataLength = in.remaining();
encryptionType = in.readUShort();
EncryptionMode preferredMode;
@@ -79,7 +78,8 @@ public final class FilePassRecord extend
}
}
- public void serialize(LittleEndianOutput out) {
+ @Override
+ public void serialize(LittleEndianOutput out) {
out.writeShort(encryptionType);
byte data[] = new byte[1024];
@@ -99,6 +99,7 @@ public final class FilePassRecord extend
case cryptoAPI:
out.writeShort(encryptionInfo.getVersionMajor());
out.writeShort(encryptionInfo.getVersionMinor());
+ out.writeInt(encryptionInfo.getEncryptionFlags());
((CryptoAPIEncryptionHeader)encryptionInfo.getHeader()).write(bos);
((CryptoAPIEncryptionVerifier)encryptionInfo.getVerifier()).write(bos);
break;
@@ -109,14 +110,20 @@ public final class FilePassRecord extend
out.write(data, 0, bos.getWriteIndex());
}
- protected int getDataSize() {
- return dataLength;
+ @Override
+ @SuppressWarnings("resource")
+ protected int getDataSize() {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ LittleEndianOutputStream leos = new LittleEndianOutputStream(bos);
+ serialize(leos);
+ return bos.size();
}
public EncryptionInfo getEncryptionInfo() {
return encryptionInfo;
}
+ @Override
public short getSid() {
return sid;
}
@@ -126,7 +133,8 @@ public final class FilePassRecord extend
return new FilePassRecord(this);
}
- public String toString() {
+ @Override
+ public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("[FILEPASS]\n");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org