Bouncy Castle Cryptography Library 1.45

## org.bouncycastle.crypto.agreement.srp
Class SRP6Server

    java.lang.Object
      org.bouncycastle.crypto.agreement.srp.SRP6Server

    public class SRP6Server

extends java.lang.Object

Implements the server side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe. This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"

Field Summary
`protected java.math.BigInteger` `A`
`protected java.math.BigInteger` `b`
`protected java.math.BigInteger` `B`
`protected Digest` `digest`
`protected java.math.BigInteger` `g`
`protected java.math.BigInteger` `N`
`protected java.security.SecureRandom` `random`
`protected java.math.BigInteger` `S`
`protected java.math.BigInteger` `u`
`protected java.math.BigInteger` `v`

Constructor Summary
`SRP6Server()`

Method Summary
`java.math.BigInteger` `calculateSecret(java.math.BigInteger clientA)` Processes the client's credentials.
`java.math.BigInteger` `generateServerCredentials()` Generates the server's credentials that are to be sent to the client.
`void` `init(java.math.BigInteger N, java.math.BigInteger g, java.math.BigInteger v, Digest digest, java.security.SecureRandom random)` Initialises the server to accept a new client authentication attempt
`protected java.math.BigInteger` `selectPrivateValue()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### N

    protected java.math.BigInteger N

### g

    protected java.math.BigInteger g

### v

    protected java.math.BigInteger v

### random

    protected java.security.SecureRandom random

### digest

    protected Digest digest

### A

    protected java.math.BigInteger A

### b

    protected java.math.BigInteger b

### B

    protected java.math.BigInteger B

### u

    protected java.math.BigInteger u

### S

    protected java.math.BigInteger S

Constructor Detail

### SRP6Server

    public SRP6Server()

Method Detail

### init

    public void init(java.math.BigInteger N,
                     java.math.BigInteger g,
                     java.math.BigInteger v,
                     Digest digest,
                     java.security.SecureRandom random)

  Initialises the server to accept a new client authentication attempt

  Parameters:
    `N` - The safe prime associated with the client's verifier
    `g` - The group parameter associated with the client's verifier
    `v` - The client's verifier
    `digest` - The digest algorithm associated with the client's verifier
    `random` - For key generation

### generateServerCredentials

    public java.math.BigInteger generateServerCredentials()

  Generates the server's credentials that are to be sent to the client.

  Returns:
    The server's public value to the client

### calculateSecret

    public java.math.BigInteger calculateSecret(java.math.BigInteger clientA)
                                         throws CryptoException

  Processes the client's credentials. If valid the shared secret is generated and returned.

  Parameters:
    `clientA` - The client's credentials
  Returns:
    A shared secret BigInteger
  Throws:
    `CryptoException` - If client's credentials are invalid

### selectPrivateValue

    protected java.math.BigInteger selectPrivateValue()

Bouncy Castle Cryptography Library 1.45