BigInt BnetSRP3::getServerSecret(BigInt& A, BigInt& v) { BigInt B = getServerSessionPublicKey(v); BigInt u = getScrambler(B); return ((A * v.powm(u, N)) % N).powm(b, N); }
void BnetSRP3::getServerSecret( mpz_ptr result, mpz_t& A, mpz_t& v ) { mpz_t B_, u; getServerSessionPublicKey(B_, v); getScrambler(u, B_); mpz_init(result); mpz_powm(result, v, u, N); mpz_mul(result, result, A); mpz_mod(result, result, N); mpz_powm(result, result, b, N); mpz_clear(B_); mpz_clear(u); }