/** * Once the server sends the salt (value s in the docs), call this method to save the value * * @param salt salt from the server */ public void setSalt_s(BigInteger salt) { fPrivateKey_x = SRPUtils.makePrivateKey(fPassword, salt); fRandom_a = SRPUtils.random(fConstants); fCommonValue_S = null; fEvidenceValue_M1 = null; fSessionKey_K = null; // A = g^a fPublicKey_A = fConstants.primitiveRoot_g.modPow(fRandom_a, fConstants.largePrime_N); }
/** * @param constants constants to use * @param verifier the verifier as returned from {@link SRPFactory#makeVerifier(byte[])} */ public SRPServerSession(SRPConstants constants, SRPVerifier verifier) { fConstants = constants; fVerifier = verifier; fRandom_b = SRPUtils.random(fConstants); fSRP6_u = null; fPublicKey_A = null; fCommonValue_S = null; fEvidenceValue_M1 = null; fSessionKey_K = null; // B = 3v + g^b fPublicKey_B = fVerifier .verifier_v .multiply(constants.srp6Multiplier_k) .add(fConstants.primitiveRoot_g.modPow(fRandom_b, fConstants.largePrime_N)); }