Package org.pgpainless.util
Class ArmorUtils
- java.lang.Object
-
- org.pgpainless.util.ArmorUtils
-
public final class ArmorUtils extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static String
HEADER_CHARSET
static String
HEADER_COMMENT
static String
HEADER_HASH
static String
HEADER_MESSAGEID
static String
HEADER_VERSION
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static void
addCommentHeader(org.bouncycastle.bcpg.ArmoredOutputStream armor, String comment)
Add an ASCII armor comment header entry into theArmoredOutputStream
.static void
addHashAlgorithmHeader(org.bouncycastle.bcpg.ArmoredOutputStream armor, HashAlgorithm hashAlgorithm)
Add an ASCII armor header entry about the used hash algorithm into theArmoredOutputStream
.static void
addMessageIdHeader(org.bouncycastle.bcpg.ArmoredOutputStream armor, String messageId)
Add an ASCII armor message-id header entry into theArmoredOutputStream
.static org.bouncycastle.bcpg.ArmoredOutputStream
createArmoredOutputStreamFor(org.bouncycastle.openpgp.PGPKeyRing keyRing, OutputStream outputStream)
Deprecated.usetoAsciiArmoredStream(PGPKeyRing, OutputStream)
instead TODO: Remove in 1.2.Xstatic List<String>
getArmorHeaderValues(org.bouncycastle.bcpg.ArmoredInputStream armor, String headerKey)
Return all ASCII armor header values of the given headerKey from the givenArmoredInputStream
.static List<String>
getCharsetHeaderValues(org.bouncycastle.bcpg.ArmoredInputStream armor)
Return all ASCII armor header values of type charset from the givenArmoredInputStream
.static List<String>
getCommentHeaderValues(org.bouncycastle.bcpg.ArmoredInputStream armor)
Extract all ASCII armor header values of type comment from the givenArmoredInputStream
.static InputStream
getDecoderStream(InputStream inputStream)
Hacky workaround for #96.static List<HashAlgorithm>
getHashAlgorithms(org.bouncycastle.bcpg.ArmoredInputStream armor)
Return a list ofHashAlgorithm
enums extracted from the hash header entries of the givenArmoredInputStream
.static List<String>
getHashHeaderValues(org.bouncycastle.bcpg.ArmoredInputStream armor)
Return all ASCII armor header values of type hash-algorithm from the givenArmoredInputStream
.static List<String>
getMessageIdHeaderValues(org.bouncycastle.bcpg.ArmoredInputStream armor)
Extract all ASCII armor header values of type message id from the givenArmoredInputStream
.static List<String>
getVersionHeaderValues(org.bouncycastle.bcpg.ArmoredInputStream armor)
Return all ASCII armor header values of type version from the givenArmoredInputStream
.static org.bouncycastle.bcpg.ArmoredOutputStream
toAsciiArmoredStream(OutputStream outputStream, MultiMap<String,String> header)
Create anArmoredOutputStream
wrapping the givenOutputStream
.static org.bouncycastle.bcpg.ArmoredOutputStream
toAsciiArmoredStream(org.bouncycastle.openpgp.PGPKeyRing keyRing, OutputStream outputStream)
Return anArmoredOutputStream
prepared with headers for the given key ring, which wraps the givenOutputStream
.static String
toAsciiArmoredString(byte[] bytes)
Return the ASCII armored encoding of the given OpenPGP data bytes.static String
toAsciiArmoredString(byte[] bytes, MultiMap<String,String> additionalHeaderValues)
Return the ASCII armored encoding of the given OpenPGP data bytes.static String
toAsciiArmoredString(InputStream inputStream)
Return the ASCII armored encoding of theInputStream
containing OpenPGP data.static String
toAsciiArmoredString(InputStream inputStream, MultiMap<String,String> additionalHeaderValues)
Return the ASCII armored encoding of the OpenPGP data from the givenInputStream
.static String
toAsciiArmoredString(org.bouncycastle.openpgp.PGPPublicKey publicKey)
Return the ASCII armored encoding of the givenPGPPublicKey
.static String
toAsciiArmoredString(org.bouncycastle.openpgp.PGPPublicKeyRing publicKeys)
Return the ASCII armored encoding of the givenPGPPublicKeyRing
.static String
toAsciiArmoredString(org.bouncycastle.openpgp.PGPPublicKeyRingCollection publicKeyRings)
Return the ASCII armored encoding of the givenPGPPublicKeyRingCollection
.static String
toAsciiArmoredString(org.bouncycastle.openpgp.PGPSecretKey secretKey)
Return the ASCII armored encoding of the givenPGPSecretKey
.static String
toAsciiArmoredString(org.bouncycastle.openpgp.PGPSecretKeyRing secretKeys)
Return the ASCII armored encoding of the givenPGPSecretKeyRing
.static String
toAsciiArmoredString(org.bouncycastle.openpgp.PGPSecretKeyRingCollection secretKeyRings)
Return the ASCII armored encoding of the givenPGPSecretKeyRingCollection
.
-
-
-
Field Detail
-
HEADER_COMMENT
public static final String HEADER_COMMENT
- See Also:
- Constant Field Values
-
HEADER_VERSION
public static final String HEADER_VERSION
- See Also:
- Constant Field Values
-
HEADER_MESSAGEID
public static final String HEADER_MESSAGEID
- See Also:
- Constant Field Values
-
HEADER_HASH
public static final String HEADER_HASH
- See Also:
- Constant Field Values
-
HEADER_CHARSET
public static final String HEADER_CHARSET
- See Also:
- Constant Field Values
-
-
Method Detail
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull org.bouncycastle.openpgp.PGPSecretKey secretKey) throws IOException
Return the ASCII armored encoding of the givenPGPSecretKey
.- Parameters:
secretKey
- secret key- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull org.bouncycastle.openpgp.PGPPublicKey publicKey) throws IOException
Return the ASCII armored encoding of the givenPGPPublicKey
.- Parameters:
publicKey
- public key- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull org.bouncycastle.openpgp.PGPSecretKeyRing secretKeys) throws IOException
Return the ASCII armored encoding of the givenPGPSecretKeyRing
.- Parameters:
secretKeys
- secret key ring- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull org.bouncycastle.openpgp.PGPPublicKeyRing publicKeys) throws IOException
Return the ASCII armored encoding of the givenPGPPublicKeyRing
.- Parameters:
publicKeys
- public key ring- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull org.bouncycastle.openpgp.PGPSecretKeyRingCollection secretKeyRings) throws IOException
Return the ASCII armored encoding of the givenPGPSecretKeyRingCollection
. The encoding will use per-key ASCII armors protecting eachPGPSecretKeyRing
individually. Those armors are then concatenated with newlines in between.- Parameters:
secretKeyRings
- secret key ring collection- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull org.bouncycastle.openpgp.PGPPublicKeyRingCollection publicKeyRings) throws IOException
Return the ASCII armored encoding of the givenPGPPublicKeyRingCollection
. The encoding will use per-key ASCII armors protecting eachPGPPublicKeyRing
individually. Those armors are then concatenated with newlines in between.- Parameters:
publicKeyRings
- public key ring collection- Returns:
- ascii armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull byte[] bytes) throws IOException
Return the ASCII armored encoding of the given OpenPGP data bytes.- Parameters:
bytes
- openpgp data- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull byte[] bytes, @Nullable MultiMap<String,String> additionalHeaderValues) throws IOException
Return the ASCII armored encoding of the given OpenPGP data bytes. The ASCII armor will include headers from the header map.- Parameters:
bytes
- OpenPGP dataadditionalHeaderValues
- header map- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull InputStream inputStream) throws IOException
Return the ASCII armored encoding of theInputStream
containing OpenPGP data.- Parameters:
inputStream
- input stream of OpenPGP data- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredString
@Nonnull public static String toAsciiArmoredString(@Nonnull InputStream inputStream, @Nullable MultiMap<String,String> additionalHeaderValues) throws IOException
Return the ASCII armored encoding of the OpenPGP data from the givenInputStream
. The ASCII armor will include armor headers from the given header map.- Parameters:
inputStream
- input stream of OpenPGP dataadditionalHeaderValues
- ASCII armor header map- Returns:
- ASCII armored encoding
- Throws:
IOException
- in case of an io error
-
toAsciiArmoredStream
@Nonnull public static org.bouncycastle.bcpg.ArmoredOutputStream toAsciiArmoredStream(@Nonnull org.bouncycastle.openpgp.PGPKeyRing keyRing, @Nonnull OutputStream outputStream)
Return anArmoredOutputStream
prepared with headers for the given key ring, which wraps the givenOutputStream
. The armored output stream can be used to encode the key ring by callingPGPKeyRing.encode(OutputStream)
with the armored output stream as an argument.- Parameters:
keyRing
- key ringoutputStream
- wrapped output stream- Returns:
- armored output stream
-
toAsciiArmoredStream
@Nonnull public static org.bouncycastle.bcpg.ArmoredOutputStream toAsciiArmoredStream(@Nonnull OutputStream outputStream, @Nullable MultiMap<String,String> header)
Create anArmoredOutputStream
wrapping the givenOutputStream
. The armored output stream will be prepared with armor headers given by header. Note: Since the armored output stream is retrieved fromArmoredOutputStreamFactory.get(OutputStream)
, it may already come with custom headers. Hence, the header entries given by header are appended below those already populated headers.- Parameters:
outputStream
- output stream to wrapheader
- map of header entries- Returns:
- armored output stream
-
createArmoredOutputStreamFor
@Deprecated @Nonnull public static org.bouncycastle.bcpg.ArmoredOutputStream createArmoredOutputStreamFor(@Nonnull org.bouncycastle.openpgp.PGPKeyRing keyRing, @Nonnull OutputStream outputStream)
Deprecated.usetoAsciiArmoredStream(PGPKeyRing, OutputStream)
instead TODO: Remove in 1.2.XReturn anArmoredOutputStream
prepared with headers for the given key ring, which wraps the givenOutputStream
. The armored output stream can be used to encode the key ring by callingPGPKeyRing.encode(OutputStream)
with the armored output stream as an argument.- Parameters:
keyRing
- key ringoutputStream
- wrapped output stream- Returns:
- armored output stream
-
addHashAlgorithmHeader
public static void addHashAlgorithmHeader(@Nonnull org.bouncycastle.bcpg.ArmoredOutputStream armor, @Nonnull HashAlgorithm hashAlgorithm)
Add an ASCII armor header entry about the used hash algorithm into theArmoredOutputStream
.- Parameters:
armor
- armored output streamhashAlgorithm
- hash algorithm- See Also:
- RFC 4880 - OpenPGP Message Format §6.2. Forming ASCII Armor
-
addCommentHeader
public static void addCommentHeader(@Nonnull org.bouncycastle.bcpg.ArmoredOutputStream armor, @Nonnull String comment)
Add an ASCII armor comment header entry into theArmoredOutputStream
.- Parameters:
armor
- armored output streamcomment
- free-text comment- See Also:
- RFC 4880 - OpenPGP Message Format §6.2. Forming ASCII Armor
-
addMessageIdHeader
public static void addMessageIdHeader(@Nonnull org.bouncycastle.bcpg.ArmoredOutputStream armor, @Nonnull String messageId)
Add an ASCII armor message-id header entry into theArmoredOutputStream
.- Parameters:
armor
- armored output streammessageId
- message id- See Also:
- RFC 4880 - OpenPGP Message Format §6.2. Forming ASCII Armor
-
getCommentHeaderValues
@Nonnull public static List<String> getCommentHeaderValues(@Nonnull org.bouncycastle.bcpg.ArmoredInputStream armor)
Extract all ASCII armor header values of type comment from the givenArmoredInputStream
.- Parameters:
armor
- armored input stream- Returns:
- list of comment headers
-
getMessageIdHeaderValues
@Nonnull public static List<String> getMessageIdHeaderValues(@Nonnull org.bouncycastle.bcpg.ArmoredInputStream armor)
Extract all ASCII armor header values of type message id from the givenArmoredInputStream
.- Parameters:
armor
- armored input stream- Returns:
- list of message-id headers
-
getHashHeaderValues
@Nonnull public static List<String> getHashHeaderValues(@Nonnull org.bouncycastle.bcpg.ArmoredInputStream armor)
Return all ASCII armor header values of type hash-algorithm from the givenArmoredInputStream
.- Parameters:
armor
- armored input stream- Returns:
- list of hash headers
-
getHashAlgorithms
@Nonnull public static List<HashAlgorithm> getHashAlgorithms(@Nonnull org.bouncycastle.bcpg.ArmoredInputStream armor)
Return a list ofHashAlgorithm
enums extracted from the hash header entries of the givenArmoredInputStream
.- Parameters:
armor
- armored input stream- Returns:
- list of hash algorithms from the ASCII header
-
getVersionHeaderValues
@Nonnull public static List<String> getVersionHeaderValues(@Nonnull org.bouncycastle.bcpg.ArmoredInputStream armor)
Return all ASCII armor header values of type version from the givenArmoredInputStream
.- Parameters:
armor
- armored input stream- Returns:
- list of version headers
-
getCharsetHeaderValues
@Nonnull public static List<String> getCharsetHeaderValues(@Nonnull org.bouncycastle.bcpg.ArmoredInputStream armor)
Return all ASCII armor header values of type charset from the givenArmoredInputStream
.- Parameters:
armor
- armored input stream- Returns:
- list of charset headers
-
getArmorHeaderValues
@Nonnull public static List<String> getArmorHeaderValues(@Nonnull org.bouncycastle.bcpg.ArmoredInputStream armor, @Nonnull String headerKey)
Return all ASCII armor header values of the given headerKey from the givenArmoredInputStream
.- Parameters:
armor
- armored input streamheaderKey
- ASCII armor header key- Returns:
- list of values for the header key
-
getDecoderStream
@Nonnull public static InputStream getDecoderStream(@Nonnull InputStream inputStream) throws IOException
Hacky workaround for #96. ForPGPPublicKeyRingCollection(InputStream, KeyFingerPrintCalculator)
orPGPSecretKeyRingCollection(InputStream, KeyFingerPrintCalculator)
to read all PGPKeyRings properly, we apparently have to make sure that theInputStream
that is given as constructor argument is a PGPUtil.BufferedInputStreamExt. SincePGPUtil.getDecoderStream(InputStream)
will return anArmoredInputStream
if the underlying input stream contains armored data, we first dearmor the data ourselves to make sure that the end-result is a PGPUtil.BufferedInputStreamExt.- Parameters:
inputStream
- input stream- Returns:
- BufferedInputStreamExt
- Throws:
IOException
- in case of an IO error
-
-