net.i2p.crypto.elgamal

## Class ElGamalSigEngine

- java.lang.Object
- - java.security.SignatureSpi
  - - java.security.Signature
    - - net.i2p.crypto.elgamal.ElGamalSigEngine

-     public final class ElGamalSigEngine
      extends Signature

  ElG signatures with SHA-256 ref: https://en.wikipedia.org/wiki/ElGamal_signature_scheme

- - ### Field Summary

    - ### Fields inherited from class java.security.Signature

      `SIGN, state, UNINITIALIZED, VERIFY`

    - ### Fields inherited from class java.security.SignatureSpi

      `appRandom`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ElGamalSigEngine()` No specific hash requested, allows any ElGamal key.
    `ElGamalSigEngine(MessageDigest digest)` Specific hash requested, only matching keys will be allowed.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `engineInitSign(PrivateKey privateKey)`
    `protected void` | `engineInitVerify(PublicKey publicKey)`
    `protected byte[]` | `engineSign()`
    `protected void` | `engineUpdate(byte b)`
    `protected void` | `engineUpdate(byte[] b, int off, int len)`
    `protected boolean` | `engineVerify(byte[] sigBytes)`

    - ### Methods inherited from class java.security.Signature

      `clone, getAlgorithm, getInstance, getInstance, getInstance, getParameter, getParameters, getProvider, initSign, initSign, initVerify, initVerify, setParameter, setParameter, sign, sign, toString, update, update, update, update, verify, verify`

    - ### Methods inherited from class java.security.SignatureSpi

      `engineGetParameter, engineGetParameters, engineInitSign, engineSetParameter, engineSetParameter, engineSign, engineUpdate, engineVerify`

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

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

- - ### Constructor Detail

    - #### ElGamalSigEngine

          public ElGamalSigEngine()

      No specific hash requested, allows any ElGamal key.

    - #### ElGamalSigEngine

          public ElGamalSigEngine(MessageDigest digest)

      Specific hash requested, only matching keys will be allowed.
      Parameters:
        `digest` - the hash algorithm that keys must have to sign or verify.

  - ### Method Detail

    - #### engineInitSign

          protected void engineInitSign(PrivateKey privateKey)
                                 throws InvalidKeyException

      Specified by:
        `engineInitSign` in class `SignatureSpi`
      Throws:
        `InvalidKeyException`

    - #### engineInitVerify

          protected void engineInitVerify(PublicKey publicKey)
                                   throws InvalidKeyException

      Specified by:
        `engineInitVerify` in class `SignatureSpi`
      Throws:
        `InvalidKeyException`

    - #### engineSign

          protected byte[] engineSign()
                               throws SignatureException

      Specified by:
        `engineSign` in class `SignatureSpi`
      Returns:
        ASN.1 R,S
      Throws:
        `SignatureException`

    - #### engineUpdate

          protected void engineUpdate(byte b)
                               throws SignatureException

      Specified by:
        `engineUpdate` in class `SignatureSpi`
      Throws:
        `SignatureException`

    - #### engineUpdate

          protected void engineUpdate(byte[] b,
                                      int off,
                                      int len)
                               throws SignatureException

      Specified by:
        `engineUpdate` in class `SignatureSpi`
      Throws:
        `SignatureException`

    - #### engineVerify

          protected boolean engineVerify(byte[] sigBytes)
                                  throws SignatureException

      Specified by:
        `engineVerify` in class `SignatureSpi`
      Parameters:
        `sigBytes` - ASN.1 R,S
      Throws:
        `SignatureException`