OwlAuthenticationFinish (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

org.bouncycastle.crypto.agreement.owl

## Class OwlAuthenticationFinish

- java.lang.Object
- - org.bouncycastle.crypto.agreement.owl.OwlAuthenticationFinish

-     public class OwlAuthenticationFinish
      extends java.lang.Object

  The payload sent by the client during the third pass of an Owl exchange.

  Each `OwlClient` creates and sends an instance of this payload to the `OwlServer` after validating the previous payload `OwlAuthenticationServerResponse`. The payload to send should be created via `OwlClient.authenticationFinish(OwlAuthenticationServerResponse)`.

  Each `OwlClient` must also validate the payload received from the `OwlServer`, which is done by the same function `OwlClient.authenticationFinish(OwlAuthenticationServerResponse)`.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `OwlAuthenticationFinish(java.lang.String clientId, ECPoint alpha, ECSchnorrZKP knowledgeProofForAlpha, java.math.BigInteger r)` Constructor of OwlAuthenticationFinish

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ECPoint` | `getAlpha()` Get the public key alpha = (x2 x pi) * [X1 + X3 + X4]. sent by the client in the third pass
    `java.lang.String` | `getClientId()` Get the client's identity (also known as username)
    `ECSchnorrZKP` | `getKnowledgeProofForAlpha()` Get the Schnorr zero-knowledge proof for the knowledge of the private key (x2 x pi) for the public key alpha
    `java.math.BigInteger` | `getR()` Get the response r as part of the zero-knowledge proof for proving the knowledge of t, r = x1 - t.h mod n where x1 is the ephemeral private key for the public key X1 sent in the first pass of Owl

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

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

- - ### Constructor Detail

    - #### OwlAuthenticationFinish

          public OwlAuthenticationFinish(java.lang.String clientId,
                                         ECPoint alpha,
                                         ECSchnorrZKP knowledgeProofForAlpha,
                                         java.math.BigInteger r)

      Constructor of OwlAuthenticationFinish
      Parameters:
        `clientId` - Client's identity
        `alpha` - The public key alpha sent by the client in the third pass
        `knowledgeProofForAlpha` - The zero-knowledge proof for the knowledge of the private key for alpha
        `r` - The response r for proving the knowledge of t=H(usrname||password) mod n.

  - ### Method Detail

    - #### getClientId

          public java.lang.String getClientId()

      Get the client's identity (also known as username)
      Returns:
        The client's identity

    - #### getAlpha

          public ECPoint getAlpha()

      Get the public key alpha = (x2 x pi) * [X1 + X3 + X4]. sent by the client in the third pass
      Returns:
        The public key alpha

    - #### getR

          public java.math.BigInteger getR()

      Get the response r as part of the zero-knowledge proof for proving the knowledge of t, r = x1 - t.h mod n where x1 is the ephemeral private key for the public key X1 sent in the first pass of Owl
      Returns:
        The response r sent by the client in the third pass

    - #### getKnowledgeProofForAlpha

          public ECSchnorrZKP getKnowledgeProofForAlpha()

      Get the Schnorr zero-knowledge proof for the knowledge of the private key (x2 x pi) for the public key alpha
      Returns:
        `ECSchnorrZKP`