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