Class Biff8DecryptingStream
java.lang.Object
org.apache.poi.hssf.record.crypto.Biff8DecryptingStream
- All Implemented Interfaces:
BiffHeaderInput
,LittleEndianInput
public final class Biff8DecryptingStream
extends Object
implements BiffHeaderInput, LittleEndianInput
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionBiff8DecryptingStream
(InputStream in, int initialOffset, EncryptionInfo info) -
Method Summary
Modifier and TypeMethodDescriptionint
long
static boolean
isNeverEncryptedRecord
(int sid) TODO: Additionally, the lbPlyPos (position_of_BOF) field of the BoundSheet8 record MUST NOT be encrypted.byte
readByte()
int
Reads an unsigned short value without decryptingdouble
void
readFully
(byte[] buf) void
readFully
(byte[] buf, int off, int len) int
readInt()
long
readLong()
void
readPlain
(byte[] b, int off, int len) Usually acts the same asLittleEndianInput.readFully(byte[], int, int)
, but for an encrypted stream the raw (unencrypted) data is filledint
Reads an unsigned short value without decryptingshort
int
int
-
Field Details
-
RC4_REKEYING_INTERVAL
public static final int RC4_REKEYING_INTERVAL- See Also:
-
-
Constructor Details
-
Biff8DecryptingStream
public Biff8DecryptingStream(InputStream in, int initialOffset, EncryptionInfo info) throws RecordFormatException - Throws:
RecordFormatException
-
-
Method Details
-
available
public int available()- Specified by:
available
in interfaceBiffHeaderInput
- Specified by:
available
in interfaceLittleEndianInput
- Returns:
- the available bytes
-
readRecordSID
public int readRecordSID()Reads an unsigned short value without decrypting- Specified by:
readRecordSID
in interfaceBiffHeaderInput
- Returns:
- the record sid
-
readDataSize
public int readDataSize()Reads an unsigned short value without decrypting- Specified by:
readDataSize
in interfaceBiffHeaderInput
- Returns:
- the data size
-
readDouble
public double readDouble()- Specified by:
readDouble
in interfaceLittleEndianInput
-
readFully
public void readFully(byte[] buf) - Specified by:
readFully
in interfaceLittleEndianInput
-
readFully
public void readFully(byte[] buf, int off, int len) - Specified by:
readFully
in interfaceLittleEndianInput
-
readUByte
public int readUByte()- Specified by:
readUByte
in interfaceLittleEndianInput
-
readByte
public byte readByte()- Specified by:
readByte
in interfaceLittleEndianInput
-
readUShort
public int readUShort()- Specified by:
readUShort
in interfaceLittleEndianInput
-
readShort
public short readShort()- Specified by:
readShort
in interfaceLittleEndianInput
-
readInt
public int readInt()- Specified by:
readInt
in interfaceLittleEndianInput
-
readLong
public long readLong()- Specified by:
readLong
in interfaceLittleEndianInput
-
getPosition
public long getPosition()- Returns:
- the absolute position in the stream
-
isNeverEncryptedRecord
public static boolean isNeverEncryptedRecord(int sid) TODO: Additionally, the lbPlyPos (position_of_BOF) field of the BoundSheet8 record MUST NOT be encrypted.- Returns:
true
if record type specified by sid is never encrypted
-
readPlain
public void readPlain(byte[] b, int off, int len) Description copied from interface:LittleEndianInput
Usually acts the same asLittleEndianInput.readFully(byte[], int, int)
, but for an encrypted stream the raw (unencrypted) data is filled- Specified by:
readPlain
in interfaceLittleEndianInput
- Parameters:
b
- the byte array to receive the bytesoff
- the start offset into the byte arraylen
- the amount of bytes to fill
-