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 Modifier and Type Field Description static int
RC4_REKEYING_INTERVAL
-
Constructor Summary
Constructors Constructor Description Biff8DecryptingStream(InputStream in, int initialOffset, EncryptionInfo info)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
long
getPosition()
boolean
isCurrentRecordEncrypted()
static boolean
isNeverEncryptedRecord(int sid)
TODO: Additionally, the lbPlyPos (position_of_BOF) field of the BoundSheet8 record MUST NOT be encrypted.byte
readByte()
int
readDataSize()
Reads an unsigned short value without decryptingdouble
readDouble()
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
readRecordSID()
Reads an unsigned short value without decryptingshort
readShort()
int
readUByte()
int
readUShort()
-
-
-
Field Detail
-
RC4_REKEYING_INTERVAL
public static final int RC4_REKEYING_INTERVAL
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Biff8DecryptingStream
public Biff8DecryptingStream(InputStream in, int initialOffset, EncryptionInfo info) throws RecordFormatException
- Throws:
RecordFormatException
-
-
Method Detail
-
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 bysid
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
-
isCurrentRecordEncrypted
@Internal public boolean isCurrentRecordEncrypted()
-
-