step1 method

BigInt step1(
  1. String userID,
  2. BigInt s,
  3. BigInt v
)

Implementation

BigInt step1(final String userID, final BigInt s, final BigInt v) {
  // Check arguments

  if (userID.trim().isEmpty) {
    throw IllegalArgumentException(
        "The user identity 'I' must not be null or empty");
  }

  this.userID = userID;
  this.s = s;
  this.v = v;

  if (state != SrpState.init) {
    throw IllegalStateException(
        "State violation: Session must be in INIT state");
  }

  Hash digest = config!.getMessageDigestInstance();
  k = SRP6Routines.computeK(digest, config!.N, config!.g);
  b = SRP6Routines.generatePrivateValue(config!.N, random);
  B = SRP6Routines.computePublicServerValue(config!.N, config!.g, k!, v, b!);
  state = SrpState.step1;

  updateLastActivityTime();

  return B!;
}