// Step INIT
System.out.println("Initialize server session");
SRP6CryptoParams config = getConfig("\t");
SRP6ServerSession server = new SRP6ServerSession(config);
// Step 1
System.out.println("Server session step 1");
System.out.print("\tEnter user identity 'I': ");
String I = readInput();
System.out.print("\tEnter password salt 's' (hex): ");
BigInteger s = readBigInteger();
System.out.print("\tEnter password verifier 'v' (hex): ");
BigInteger v = readBigInteger();
BigInteger B = server.step1(I, s, v);
System.out.println();
System.out.println("\tComputed public server value 'B' (hex): " + BigIntegerUtils.toHex(B));
System.out.println();
// Step 2
System.out.println("Server session step 2");
System.out.print("\tEnter client public value 'A' (hex): ");
BigInteger A = readBigInteger();
System.out.print("\tEnter client evidence message 'M1' (hex): ");
BigInteger M1 = readBigInteger();
BigInteger M2;
try {
M2 = server.step2(A, M1);
} catch (com.nimbusds.srp6.SRP6Exception e) {
System.out.println(e.getMessage());
return;