Package net.i2p.data

Class SigningPublicKey

  • All Implemented Interfaces:
    DataStructure

    public class SigningPublicKey
    extends SimpleDataStructure
    Defines the SigningPublicKey as defined by the I2P data structure spec. A signing public key is by default 128 byte Integer. The public 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 (verifying signatures, not encrypting) As of release 0.9.8, keys of arbitrary length and type are supported. See SigType.
    Author:
    jrandom
    • Field Detail

      • KEYSIZE_BYTES

        public static final int KEYSIZE_BYTES
    • Constructor Detail

      • SigningPublicKey

        public SigningPublicKey()
      • SigningPublicKey

        public SigningPublicKey​(SigType type)
        Parameters:
        type - if null, type is unknown
        Since:
        0.9.8
      • SigningPublicKey

        public SigningPublicKey​(byte[] data)
      • SigningPublicKey

        public SigningPublicKey​(SigType type,
                                byte[] data)
        Parameters:
        type - if null, type is unknown
        Since:
        0.9.8
      • SigningPublicKey

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

      • create

        public static SigningPublicKey create​(byte[] data,
                                              int off)
        Pull from cache or return new. Deprecated - used only by deprecated Destination.readBytes(data, off)
        Throws:
        ArrayIndexOutOfBoundsException - if not enough bytes, FIXME should throw DataFormatException
        Since:
        0.8.3
      • 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
        Returns:
        if type unknown, the length of the data, or 128 if no data
      • getType

        public SigType getType()
        Returns:
        null if unknown
        Since:
        0.9.8
      • toTypedKey

        public SigningPublicKey toTypedKey​(KeyCertificate kcert)
        Up-convert this from an untyped (type 0) SPK to a typed SPK based on the Key Cert given. The type of the returned key will be null if the kcert sigtype is null.
        Throws:
        IllegalArgumentException - if this is already typed to a different type
        Since:
        0.9.12
      • getPadding

        public byte[] getPadding​(KeyCertificate kcert)
        Get the portion of this (type 0) SPK that is really padding based on the Key Cert type given, if any
        Returns:
        leading padding length > 0 or null if no padding or type is unknown
        Throws:
        IllegalArgumentException - if this is already typed to a different type
        Since:
        0.9.12
      • clearCache

        public static void clearCache()
        Since:
        0.9.17
      • 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