Package org.bouncycastle.openpgp

## Class PGPObjectFactory

- java.lang.Object
- - org.bouncycastle.openpgp.PGPObjectFactory

- All Implemented Interfaces:
    `java.lang.Iterable`, `org.bouncycastle.util.Iterable`
  Direct Known Subclasses:
    `BcPGPObjectFactory`, `JcaPGPObjectFactory`

      public class PGPObjectFactory
      extends java.lang.Object
      implements org.bouncycastle.util.Iterable

  General class for reading a PGP object stream.

  Note: if this class finds a `PGPPublicKey` or a `PGPSecretKey` it will create a `PGPPublicKeyRing`, or a `PGPSecretKeyRing` for each key found. If all you are trying to do is read a key ring file use either `PGPPublicKeyRingCollection` or `PGPSecretKeyRingCollection`.

  This factory supports reading the following types of objects:

  - `PacketTags.SIGNATURE` - produces a `PGPSignatureList`
  - `PacketTags.SECRET_KEY` - produces a `PGPSecretKeyRing`
  - `PacketTags.PUBLIC_KEY` - produces a `PGPPublicKeyRing`
  - `PacketTags.PUBLIC_SUBKEY` - produces a `PGPPublicKey`
  - `PacketTags.COMPRESSED_DATA` - produces a `PGPCompressedData`
  - `PacketTags.LITERAL_DATA` - produces a `PGPLiteralData`
  - `PacketTags.PUBLIC_KEY_ENC_SESSION` - produces a `PGPEncryptedDataList`
  - `PacketTags.SYMMETRIC_KEY_ENC_SESSION` - produces a `PGPEncryptedDataList`
  - `PacketTags.ONE_PASS_SIGNATURE` - produces a `PGPOnePassSignatureList`
  - `PacketTags.MARKER` - produces a `PGPMarker`

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PGPObjectFactory​(byte[] bytes, KeyFingerPrintCalculator fingerPrintCalculator)` | Create an object factory suitable for reading PGP objects such as keys, key rings and key ring collections, or PGP encrypted data.
    `PGPObjectFactory​(java.io.InputStream in, KeyFingerPrintCalculator fingerPrintCalculator)` | Create an object factory suitable for reading PGP objects such as keys, key rings and key ring collections, or PGP encrypted data.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.util.Iterator` | `iterator()` | Support method for Iterable where available.
    `java.lang.Object` | `nextObject()` | Return the next object in the stream, or `null` if the end of stream is reached.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### PGPObjectFactory

          public PGPObjectFactory​(java.io.InputStream in,
                                  KeyFingerPrintCalculator fingerPrintCalculator)

      Create an object factory suitable for reading PGP objects such as keys, key rings and key ring collections, or PGP encrypted data.
      Parameters:
        `in` - stream to read PGP data from.
        `fingerPrintCalculator` - calculator to use in key finger print calculations.

    - #### PGPObjectFactory

          public PGPObjectFactory​(byte[] bytes,
                                  KeyFingerPrintCalculator fingerPrintCalculator)

      Create an object factory suitable for reading PGP objects such as keys, key rings and key ring collections, or PGP encrypted data.
      Parameters:
        `bytes` - PGP encoded data.
        `fingerPrintCalculator` - calculator to use in key finger print calculations.

  - ### Method Detail

    - #### nextObject

          public java.lang.Object nextObject()
                                      throws java.io.IOException

      Return the next object in the stream, or `null` if the end of stream is reached.
      Returns:
        one of the supported objects - see class docs for details.
      Throws:
        `java.io.IOException` - if an error occurs reading from the wrapped stream or parsing data.

    - #### iterator

          public java.util.Iterator iterator()

      Support method for Iterable where available.
      Specified by:
        `iterator` in interface `java.lang.Iterable`
      Specified by:
        `iterator` in interface `org.bouncycastle.util.Iterable`