Class ArmorUtils


  • public final class ArmorUtils
    extends Object
    • Method Detail

      • toAsciiArmoredString

        @Nonnull
        public static String toAsciiArmoredString​(@Nonnull
                                                  org.bouncycastle.openpgp.PGPSecretKey secretKey)
                                           throws IOException
        Return the ASCII armored encoding of the given PGPSecretKey.
        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 given PGPPublicKey.
        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 given PGPSecretKeyRing.
        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 given PGPPublicKeyRing.
        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 given PGPSecretKeyRingCollection. The encoding will use per-key ASCII armors protecting each PGPSecretKeyRing 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 given PGPPublicKeyRingCollection. The encoding will use per-key ASCII armors protecting each PGPPublicKeyRing 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 data
        additionalHeaderValues - 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 the InputStream 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 given InputStream. The ASCII armor will include armor headers from the given header map.
        Parameters:
        inputStream - input stream of OpenPGP data
        additionalHeaderValues - 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 an ArmoredOutputStream prepared with headers for the given key ring, which wraps the given OutputStream. The armored output stream can be used to encode the key ring by calling PGPKeyRing.encode(OutputStream) with the armored output stream as an argument.
        Parameters:
        keyRing - key ring
        outputStream - 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 an ArmoredOutputStream wrapping the given OutputStream. The armored output stream will be prepared with armor headers given by header. Note: Since the armored output stream is retrieved from ArmoredOutputStreamFactory.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 wrap
        header - 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.
        use toAsciiArmoredStream(PGPKeyRing, OutputStream) instead TODO: Remove in 1.2.X
        Return an ArmoredOutputStream prepared with headers for the given key ring, which wraps the given OutputStream. The armored output stream can be used to encode the key ring by calling PGPKeyRing.encode(OutputStream) with the armored output stream as an argument.
        Parameters:
        keyRing - key ring
        outputStream - 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 the ArmoredOutputStream.
        Parameters:
        armor - armored output stream
        hashAlgorithm - 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 the ArmoredOutputStream.
        Parameters:
        armor - armored output stream
        comment - 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 the ArmoredOutputStream.
        Parameters:
        armor - armored output stream
        messageId - 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 given ArmoredInputStream.
        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 given ArmoredInputStream.
        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 given ArmoredInputStream.
        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 of HashAlgorithm enums extracted from the hash header entries of the given ArmoredInputStream.
        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 given ArmoredInputStream.
        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 given ArmoredInputStream.
        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 given ArmoredInputStream.
        Parameters:
        armor - armored input stream
        headerKey - 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. For PGPPublicKeyRingCollection(InputStream, KeyFingerPrintCalculator) or PGPSecretKeyRingCollection(InputStream, KeyFingerPrintCalculator) to read all PGPKeyRings properly, we apparently have to make sure that the InputStream that is given as constructor argument is a PGPUtil.BufferedInputStreamExt. Since PGPUtil.getDecoderStream(InputStream) will return an ArmoredInputStream 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