forgot cryptoapi encryption flags
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/hssf_cryptoapi@1755541 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
680683cf77
commit
5a486ec7c8
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package org.apache.poi.hssf.record;
|
package org.apache.poi.hssf.record;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.EncryptedDocumentException;
|
import org.apache.poi.EncryptedDocumentException;
|
||||||
@ -31,6 +32,7 @@ import org.apache.poi.poifs.crypt.xor.XOREncryptionVerifier;
|
|||||||
import org.apache.poi.util.HexDump;
|
import org.apache.poi.util.HexDump;
|
||||||
import org.apache.poi.util.LittleEndianByteArrayOutputStream;
|
import org.apache.poi.util.LittleEndianByteArrayOutputStream;
|
||||||
import org.apache.poi.util.LittleEndianOutput;
|
import org.apache.poi.util.LittleEndianOutput;
|
||||||
|
import org.apache.poi.util.LittleEndianOutputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Title: File Pass Record (0x002F) <p>
|
* Title: File Pass Record (0x002F) <p>
|
||||||
@ -42,12 +44,10 @@ public final class FilePassRecord extends StandardRecord implements Cloneable {
|
|||||||
private static final int ENCRYPTION_XOR = 0;
|
private static final int ENCRYPTION_XOR = 0;
|
||||||
private static final int ENCRYPTION_OTHER = 1;
|
private static final int ENCRYPTION_OTHER = 1;
|
||||||
|
|
||||||
private int encryptionType;
|
private final int encryptionType;
|
||||||
private EncryptionInfo encryptionInfo;
|
private EncryptionInfo encryptionInfo;
|
||||||
private int dataLength;
|
|
||||||
|
|
||||||
private FilePassRecord(FilePassRecord other) {
|
private FilePassRecord(FilePassRecord other) {
|
||||||
dataLength = other.dataLength;
|
|
||||||
encryptionType = other.encryptionType;
|
encryptionType = other.encryptionType;
|
||||||
try {
|
try {
|
||||||
encryptionInfo = other.encryptionInfo.clone();
|
encryptionInfo = other.encryptionInfo.clone();
|
||||||
@ -57,7 +57,6 @@ public final class FilePassRecord extends StandardRecord implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public FilePassRecord(RecordInputStream in) {
|
public FilePassRecord(RecordInputStream in) {
|
||||||
dataLength = in.remaining();
|
|
||||||
encryptionType = in.readUShort();
|
encryptionType = in.readUShort();
|
||||||
|
|
||||||
EncryptionMode preferredMode;
|
EncryptionMode preferredMode;
|
||||||
@ -79,6 +78,7 @@ public final class FilePassRecord extends StandardRecord implements Cloneable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void serialize(LittleEndianOutput out) {
|
public void serialize(LittleEndianOutput out) {
|
||||||
out.writeShort(encryptionType);
|
out.writeShort(encryptionType);
|
||||||
|
|
||||||
@ -99,6 +99,7 @@ public final class FilePassRecord extends StandardRecord implements Cloneable {
|
|||||||
case cryptoAPI:
|
case cryptoAPI:
|
||||||
out.writeShort(encryptionInfo.getVersionMajor());
|
out.writeShort(encryptionInfo.getVersionMajor());
|
||||||
out.writeShort(encryptionInfo.getVersionMinor());
|
out.writeShort(encryptionInfo.getVersionMinor());
|
||||||
|
out.writeInt(encryptionInfo.getEncryptionFlags());
|
||||||
((CryptoAPIEncryptionHeader)encryptionInfo.getHeader()).write(bos);
|
((CryptoAPIEncryptionHeader)encryptionInfo.getHeader()).write(bos);
|
||||||
((CryptoAPIEncryptionVerifier)encryptionInfo.getVerifier()).write(bos);
|
((CryptoAPIEncryptionVerifier)encryptionInfo.getVerifier()).write(bos);
|
||||||
break;
|
break;
|
||||||
@ -109,14 +110,20 @@ public final class FilePassRecord extends StandardRecord implements Cloneable {
|
|||||||
out.write(data, 0, bos.getWriteIndex());
|
out.write(data, 0, bos.getWriteIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("resource")
|
||||||
protected int getDataSize() {
|
protected int getDataSize() {
|
||||||
return dataLength;
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
LittleEndianOutputStream leos = new LittleEndianOutputStream(bos);
|
||||||
|
serialize(leos);
|
||||||
|
return bos.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public EncryptionInfo getEncryptionInfo() {
|
public EncryptionInfo getEncryptionInfo() {
|
||||||
return encryptionInfo;
|
return encryptionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public short getSid() {
|
public short getSid() {
|
||||||
return sid;
|
return sid;
|
||||||
}
|
}
|
||||||
@ -126,6 +133,7 @@ public final class FilePassRecord extends StandardRecord implements Cloneable {
|
|||||||
return new FilePassRecord(this);
|
return new FilePassRecord(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user