net.i2p.data

## Class KeysAndCert

- java.lang.Object
- - net.i2p.data.DataStructureImpl
  - - net.i2p.data.KeysAndCert

- All Implemented Interfaces:
    DataStructure
  Direct Known Subclasses:
    Destination, RouterIdentity

      public class KeysAndCert
      extends DataStructureImpl

  KeysAndCert has a public key, a signing key, and a certificate. In that order. We also store a cached Hash. Implemented in 0.8.2 and retrofitted over Destination and RouterIdentity. There's actually no difference between the two of them.
  Since:
    0.8.2
  Author:
    zzz

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Hash` | `__calculatedHash`
    `protected Certificate` | `_certificate`
    `protected PublicKey` | `_publicKey`
    `protected SigningPublicKey` | `_signingKey`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `KeysAndCert()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Hash` | `calculateHash()` Calculate the SHA256 value of this object (useful for a few scenarios)
    `boolean` | `equals(Object object)`
    `Certificate` | `getCertificate()`
    `Hash` | `getHash()`
    `PublicKey` | `getPublicKey()`
    `SigningPublicKey` | `getSigningPublicKey()`
    `int` | `hashCode()` the public key has enough randomness in it to use it by itself for speed
    `void` | `readBytes(InputStream in)` Load up the current object with data from the given stream.
    `void` | `setCertificate(Certificate cert)`
    `void` | `setPublicKey(PublicKey key)`
    `void` | `setSigningPublicKey(SigningPublicKey key)`
    `String` | `toString()`
    `void` | `writeBytes(OutputStream out)` Write out the data structure to the stream, using the format defined in the I2P data structure specification.

    - ### Methods inherited from class net.i2p.data.DataStructureImpl

      `fromBase64, fromByteArray, read, toBase64, toByteArray`

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

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### _publicKey

          protected PublicKey _publicKey

    - #### _signingKey

          protected SigningPublicKey _signingKey

    - #### _certificate

          protected Certificate _certificate

    - #### __calculatedHash

          protected Hash __calculatedHash

  - ### Constructor Detail

    - #### KeysAndCert

          public KeysAndCert()

  - ### Method Detail

    - #### getCertificate

          public Certificate getCertificate()

    - #### setCertificate

          public void setCertificate(Certificate cert)

    - #### getPublicKey

          public PublicKey getPublicKey()

    - #### setPublicKey

          public void setPublicKey(PublicKey key)

    - #### getSigningPublicKey

          public SigningPublicKey getSigningPublicKey()

    - #### setSigningPublicKey

          public void setSigningPublicKey(SigningPublicKey key)

    - #### readBytes

          public void readBytes(InputStream in)
                         throws DataFormatException,
                                IOException

      Description copied from interface: `DataStructure`
      Load up the current object with data from the given stream. Data loaded this way must match the I2P data structure specification.
      Parameters:
        `in` - stream to read from
      Throws:
        `DataFormatException` - if the data is improperly formatted
        `IOException` - if there was a problem reading the stream

    - #### writeBytes

          public void writeBytes(OutputStream out)
                          throws DataFormatException,
                                 IOException

      Description copied from interface: `DataStructure`
      Write out the data structure to the stream, using the format defined in the I2P data structure specification.
      Parameters:
        `out` - stream to write to
      Throws:
        `DataFormatException` - if the data was incomplete or not yet ready to be written
        `IOException` - if there was a problem writing to the stream

    - #### equals

          public boolean equals(Object object)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      the public key has enough randomness in it to use it by itself for speed
      Overrides:
        `hashCode` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### calculateHash

          public Hash calculateHash()

      Description copied from interface: `DataStructure`
      Calculate the SHA256 value of this object (useful for a few scenarios)
      Specified by:
        `calculateHash` in interface `DataStructure`
      Overrides:
        `calculateHash` in class `DataStructureImpl`
      Returns:
        SHA256 hash, or null if there were problems (data format or io errors)

    - #### getHash

          public Hash getHash()