org.bouncycastle.bcpg
Class ArmoredInputStream
java.lang.Object
|
+--java.io.InputStream
|
+--org.bouncycastle.bcpg.ArmoredInputStream
- public class ArmoredInputStream
- extends java.io.InputStream
reader for Base64 armored objects - read the headers and then start returning
bytes when the data is reached. An IOException is thrown if the CRC check
is detected and fails.
By default a missing CRC will not cause an exception. To force CRC detection use:
ArmoredInputStream aIn = []
aIn.setDetectMissingCRC(true);
Constructor Summary |
ArmoredInputStream(java.io.InputStream in)
Create a stream for reading a PGP armoured message, parsing up to a header
and then reading the data that follows. |
ArmoredInputStream(java.io.InputStream in,
boolean hasHeaders)
Create an armoured input stream which will assume the data starts
straight away, or parse for headers first depending on the value of
hasHeaders. |
Methods inherited from class java.io.InputStream |
mark, markSupported, read, reset, skip |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ArmoredInputStream
public ArmoredInputStream(java.io.InputStream in)
throws java.io.IOException
- Create a stream for reading a PGP armoured message, parsing up to a header
and then reading the data that follows.
- Parameters:
in
-
ArmoredInputStream
public ArmoredInputStream(java.io.InputStream in,
boolean hasHeaders)
throws java.io.IOException
- Create an armoured input stream which will assume the data starts
straight away, or parse for headers first depending on the value of
hasHeaders.
- Parameters:
in
- hasHeaders
- true if headers are to be looked for, false otherwise.
available
public int available()
throws java.io.IOException
- Overrides:
available
in class java.io.InputStream
isClearText
public boolean isClearText()
- Returns:
- true if we are inside the clear text section of a PGP
signed message.
isEndOfStream
public boolean isEndOfStream()
- Returns:
- true if the stream is actually at end of file.
getArmorHeaderLine
public java.lang.String getArmorHeaderLine()
- Return the armor header line (if there is one)
- Returns:
- the armor header line, null if none present.
getArmorHeaders
public java.lang.String[] getArmorHeaders()
- Return the armor headers (the lines after the armor header line),
- Returns:
- an array of armor headers, null if there aren't any.
read
public int read()
throws java.io.IOException
- Overrides:
read
in class java.io.InputStream
read
public int read(byte[] b,
int off,
int len)
throws java.io.IOException
- Reads up to len bytes of data from the input stream into
an array of bytes. An attempt is made to read as many as
len bytes, but a smaller number may be read.
The number of bytes actually read is returned as an integer.
The first byte read is stored into element b[off], the
next one into b[off+1], and so on. The number of bytes read
is, at most, equal to len.
NOTE: We need to override the custom behavior of Java's
InputStream.read(byte[], int, int)
,
as the upstream method silently swallows IOExceptions
.
This would cause CRC checksum errors to go unnoticed.
- Overrides:
read
in class java.io.InputStream
- Parameters:
b
- byte arrayoff
- offset at which we start writing data to the arraylen
- number of bytes we write into the array- Returns:
- total number of bytes read into the buffer
- Throws:
java.io.IOException
- if an exception happens AT ANY POINT- See Also:
- Related BC bug report
close
public void close()
throws java.io.IOException
- Overrides:
close
in class java.io.InputStream
setDetectMissingCRC
public void setDetectMissingCRC(boolean detectMissing)
- Deprecated. use Builder class for configuring this.
- Change how the stream should react if it encounters missing CRC checksum.
The default value is false (ignore missing CRC checksums). If the behavior is set to true,
an
IOException
will be thrown if a missing CRC checksum is encountered.
- Parameters:
detectMissing
- false if ignore missing CRC sums, true for exception
builder
public static ArmoredInputStream.Builder builder()