Class EdDSAPrivateKey

  • All Implemented Interfaces:
    Serializable, Key, PrivateKey, Destroyable, EdDSAKey

    public class EdDSAPrivateKey
    extends Object
    implements EdDSAKey, PrivateKey
    An EdDSA private key.

    Warning: Private key encoding is based on the current curdle WG draft, and is subject to change. See getEncoded().

    For compatibility with older releases, decoding supports both the old and new draft specifications. See decode().

    Ref: https://tools.ietf.org/html/draft-ietf-curdle-pkix-04

    Old Ref: https://tools.ietf.org/html/draft-josefsson-pkix-eddsa-04

    Author:
    str4d
    See Also:
    Serialized Form
    • Method Detail

      • getEncoded

        public byte[] getEncoded()
        Returns the public key in its canonical encoding.

        This implements the following specs:

        • General encoding: https://tools.ietf.org/html/draft-ietf-curdle-pkix-04
        • Key encoding: https://tools.ietf.org/html/rfc8032

        This encodes the seed. It will return null if constructed from a spec which was directly constructed from H, in which case seed is null.

        For keys in older formats, decoding and then re-encoding is sufficient to migrate them to the canonical encoding.

        Relevant spec quotes:
          OneAsymmetricKey ::= SEQUENCE {
            version Version,
            privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
            privateKey PrivateKey,
            attributes [0] Attributes OPTIONAL,
            ...,
            [[2: publicKey [1] PublicKey OPTIONAL ]],
            ...
          }
        
          Version ::= INTEGER
          PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
          PrivateKey ::= OCTET STRING
          PublicKey ::= OCTET STRING
          Attributes ::= SET OF Attribute
        
          ... when encoding a OneAsymmetricKey object, the private key is wrapped
          in a CurvePrivateKey object and wrapped by the OCTET STRING of the
          'privateKey' field.
        
          CurvePrivateKey ::= OCTET STRING
        
          AlgorithmIdentifier  ::=  SEQUENCE  {
            algorithm   OBJECT IDENTIFIER,
            parameters  ANY DEFINED BY algorithm OPTIONAL
          }
        
          For all of the OIDs, the parameters MUST be absent.
        
          id-Ed25519   OBJECT IDENTIFIER ::= { 1 3 101 112 }
        
        Specified by:
        getEncoded in interface Key
        Returns:
        48 bytes for Ed25519, null for other curves
      • getParams

        public EdDSAParameterSpec getParams()
        Specified by:
        getParams in interface EdDSAKey
        Returns:
        a parameter specification representing the EdDSA domain parameters for the key.
      • getSeed

        public byte[] getSeed()
        Returns:
        will be null if constructed from a spec which was directly constructed from H
      • getH

        public byte[] getH()
        Returns:
        the hash of the seed
      • geta

        public byte[] geta()
        Returns:
        the private key
      • getAbyte

        public byte[] getAbyte()
        Returns:
        the public key
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object