Package net.i2p.data

Class SigningPrivateKey

java.lang.Object
net.i2p.data.SimpleDataStructure
net.i2p.data.SigningPrivateKey
All Implemented Interfaces:
Destroyable, DataStructure
Direct Known Subclasses:
RSASigningPrivateCrtKey

public class SigningPrivateKey extends SimpleDataStructure implements Destroyable
Defines the SigningPrivateKey as defined by the I2P data structure spec. A signing private key is by default a 20 byte Integer. The private key represents only the exponent, not the primes, which are constant and defined in the crypto spec. This key varies from the PrivateKey in its usage (signing, not decrypting) As of release 0.9.8, keys of arbitrary length and type are supported. See SigType.
Author:
jrandom
  • Field Details

    • KEYSIZE_BYTES

      public static final int KEYSIZE_BYTES
  • Constructor Details

    • SigningPrivateKey

      public SigningPrivateKey()
    • SigningPrivateKey

      public SigningPrivateKey(SigType type)
      Since:
      0.9.8
    • SigningPrivateKey

      public SigningPrivateKey(byte[] data)
    • SigningPrivateKey

      public SigningPrivateKey(SigType type, byte[] data)
      Since:
      0.9.8
    • SigningPrivateKey

      public SigningPrivateKey(String base64Data) throws DataFormatException
      constructs from base64
      Parameters:
      base64Data - a string of base64 data (the output of .toBase64() called on a prior instance of SigningPrivateKey
      Throws:
      DataFormatException
  • Method Details

    • length

      public int length()
      Description copied from class: SimpleDataStructure
      The legal length of the byte array in this data structure
      Specified by:
      length in class SimpleDataStructure
    • getType

      public SigType getType()
      Since:
      0.9.8
    • toPublic

      public SigningPublicKey toPublic()
      Converts this signing private key to its public equivalent. As of 0.9.16, supports all key types.
      Returns:
      a SigningPublicKey object derived from this private key
      Throws:
      IllegalArgumentException - on bad key or unknown or unsupported type
    • blind

      public SigningPrivateKey blind(SigningPrivateKey alpha)
      Only for SigType EdDSA_SHA512_Ed25519
      Parameters:
      alpha - the secret data
      Throws:
      UnsupportedOperationException - unless supported
      Since:
      0.9.38
    • isOffline

      public boolean isOffline()
      Constant time
      Returns:
      true if all zeros
      Since:
      0.9.39 moved from PrivateKeyFile
    • destroy

      public void destroy()
      javax.security.auth.Destroyable interface
      Specified by:
      destroy in interface Destroyable
      Since:
      0.9.40
    • isDestroyed

      public boolean isDestroyed()
      javax.security.auth.Destroyable interface
      Specified by:
      isDestroyed in interface Destroyable
      Since:
      0.9.40
    • toString

      public String toString()
      Overrides:
      toString in class SimpleDataStructure
      Since:
      0.9.8
    • hashCode

      public int hashCode()
      Description copied from class: SimpleDataStructure
      We assume the data has enough randomness in it, so use the first 4 bytes for speed. If this is not the case, override in the extending class.
      Overrides:
      hashCode in class SimpleDataStructure
      Since:
      0.9.17
    • equals

      public boolean equals(Object obj)
      Description copied from class: SimpleDataStructure
      Warning - this returns true for two different classes with the same size and same data, e.g. SessionKey and SessionTag, but you wouldn't put them in the same Set, would you?
      Overrides:
      equals in class SimpleDataStructure
      Since:
      0.9.17