Package org.pgpainless.util
Class CRCingArmoredInputStreamWrapper
java.lang.Object
java.io.InputStream
org.bouncycastle.bcpg.ArmoredInputStream
org.pgpainless.util.CRCingArmoredInputStreamWrapper
- All Implemented Interfaces:
Closeable
,AutoCloseable
public class CRCingArmoredInputStreamWrapper
extends org.bouncycastle.bcpg.ArmoredInputStream
Utility class that causes read(bytes, offset, length) to properly throw exceptions
caused by faulty CRC checksums.
Furthermore, this class swallows exceptions from BC's ArmoredInputStream that are caused
by missing CRC checksums.
-
Constructor Summary
ConstructorsConstructorDescriptionCRCingArmoredInputStreamWrapper
(org.bouncycastle.bcpg.ArmoredInputStream inputStream) -
Method Summary
Methods inherited from class org.bouncycastle.bcpg.ArmoredInputStream
setDetectMissingCRC
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Constructor Details
-
CRCingArmoredInputStreamWrapper
public CRCingArmoredInputStreamWrapper(org.bouncycastle.bcpg.ArmoredInputStream inputStream) throws IOException - Throws:
IOException
-
-
Method Details
-
isClearText
public boolean isClearText()- Overrides:
isClearText
in classorg.bouncycastle.bcpg.ArmoredInputStream
-
isEndOfStream
public boolean isEndOfStream()- Overrides:
isEndOfStream
in classorg.bouncycastle.bcpg.ArmoredInputStream
-
getArmorHeaderLine
- Overrides:
getArmorHeaderLine
in classorg.bouncycastle.bcpg.ArmoredInputStream
-
getArmorHeaders
- Overrides:
getArmorHeaders
in classorg.bouncycastle.bcpg.ArmoredInputStream
-
read
- Overrides:
read
in classorg.bouncycastle.bcpg.ArmoredInputStream
- Throws:
IOException
-
read
- Overrides:
read
in classInputStream
- Throws:
IOException
-
read
Reads up tolen
bytes of data from the input stream into an array of bytes. An attempt is made to read as many aslen
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 elementb[off]
, the next one intob[off+1]
, and so on. The number of bytes read is, at most, equal tolen
. NOTE: We need to override the custom behavior of Java'sInputStream.read(byte[], int, int)
, as the upstream method silently swallowsIOExceptions
. This would cause CRC checksum errors to go unnoticed.- Overrides:
read
in classorg.bouncycastle.bcpg.ArmoredInputStream
- 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:
IOException
- if an exception happens AT ANY POINT- See Also:
-
skip
- Overrides:
skip
in classInputStream
- Throws:
IOException
-
available
- Overrides:
available
in classorg.bouncycastle.bcpg.ArmoredInputStream
- Throws:
IOException
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classorg.bouncycastle.bcpg.ArmoredInputStream
- Throws:
IOException
-
mark
public void mark(int readlimit) - Overrides:
mark
in classInputStream
-
reset
- Overrides:
reset
in classInputStream
- Throws:
IOException
-
markSupported
public boolean markSupported()- Overrides:
markSupported
in classInputStream
-