mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-11-27 06:42:05 +01:00
KeyRingReader: Fix reading PGPKeyRingCollections
This commit is contained in:
parent
fb82f711d8
commit
ce0bf970d6
1 changed files with 22 additions and 2 deletions
|
@ -27,6 +27,7 @@ import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
|
||||||
import org.bouncycastle.openpgp.PGPSecretKeyRing;
|
import org.bouncycastle.openpgp.PGPSecretKeyRing;
|
||||||
import org.bouncycastle.openpgp.PGPSecretKeyRingCollection;
|
import org.bouncycastle.openpgp.PGPSecretKeyRingCollection;
|
||||||
import org.bouncycastle.openpgp.PGPUtil;
|
import org.bouncycastle.openpgp.PGPUtil;
|
||||||
|
import org.bouncycastle.openpgp.operator.KeyFingerPrintCalculator;
|
||||||
import org.pgpainless.implementation.ImplementationFactory;
|
import org.pgpainless.implementation.ImplementationFactory;
|
||||||
|
|
||||||
public class KeyRingReader {
|
public class KeyRingReader {
|
||||||
|
@ -96,7 +97,7 @@ public class KeyRingReader {
|
||||||
public static PGPPublicKeyRingCollection readPublicKeyRingCollection(@Nonnull InputStream inputStream)
|
public static PGPPublicKeyRingCollection readPublicKeyRingCollection(@Nonnull InputStream inputStream)
|
||||||
throws IOException, PGPException {
|
throws IOException, PGPException {
|
||||||
return new PGPPublicKeyRingCollection(
|
return new PGPPublicKeyRingCollection(
|
||||||
PGPUtil.getDecoderStream(inputStream),
|
getDecoderStream(inputStream),
|
||||||
ImplementationFactory.getInstance().getKeyFingerprintCalculator());
|
ImplementationFactory.getInstance().getKeyFingerprintCalculator());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +110,7 @@ public class KeyRingReader {
|
||||||
public static PGPSecretKeyRingCollection readSecretKeyRingCollection(@Nonnull InputStream inputStream)
|
public static PGPSecretKeyRingCollection readSecretKeyRingCollection(@Nonnull InputStream inputStream)
|
||||||
throws IOException, PGPException {
|
throws IOException, PGPException {
|
||||||
return new PGPSecretKeyRingCollection(
|
return new PGPSecretKeyRingCollection(
|
||||||
PGPUtil.getDecoderStream(inputStream),
|
getDecoderStream(inputStream),
|
||||||
ImplementationFactory.getInstance().getKeyFingerprintCalculator());
|
ImplementationFactory.getInstance().getKeyFingerprintCalculator());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,4 +133,23 @@ public class KeyRingReader {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hacky workaround for #96.
|
||||||
|
* For {@link PGPPublicKeyRingCollection#PGPPublicKeyRingCollection(InputStream, KeyFingerPrintCalculator)}
|
||||||
|
* or {@link PGPSecretKeyRingCollection#PGPSecretKeyRingCollection(InputStream, KeyFingerPrintCalculator)}
|
||||||
|
* to read all PGPKeyRings properly, we apparently have to make sure that the {@link InputStream} that is given
|
||||||
|
* as constructor argument is a {@link PGPUtil.BufferedInputStreamExt}.
|
||||||
|
* Since {@link PGPUtil#getDecoderStream(InputStream)} will return an {@link org.bouncycastle.bcpg.ArmoredInputStream}
|
||||||
|
* if the underlying input stream contains armored data, we have to nest two method calls to make sure that the
|
||||||
|
* end-result is a {@link PGPUtil.BufferedInputStreamExt}.
|
||||||
|
*
|
||||||
|
* This is a hacky solution.
|
||||||
|
*
|
||||||
|
* @param inputStream input stream
|
||||||
|
* @return BufferedInputStreamExt
|
||||||
|
*/
|
||||||
|
private static InputStream getDecoderStream(InputStream inputStream) throws IOException {
|
||||||
|
return PGPUtil.getDecoderStream(PGPUtil.getDecoderStream(inputStream));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue