code: function server_getS(params, v_num, A_num, b_num, u_num) {
    assertIsBignum(v_num);
    assertIsBignum(A_num);
    assertIsBignum(b_num);
    assertIsBignum(u_num);
    var N = params.N;
    if (zero.ge(A_num) || N.le(A_num))
      throw new Error("invalid client-supplied 'A', must be 1..N-1");
    var S_num = A_num.mul(v_num.powm(u_num, N)).powm(b_num, N).mod(N);
    return padToN(S_num, params);
  }
docs: /*
  The TLS premastersecret as calculated by the server
  
  params:
  params (obj)     group parameters, with .N, .g, .hash
  v (bignum)       verifier (stored on server)
  A (bignum)       ephemeral client public key (read from client)
  b (bignum)       server ephemeral private key (generated for session)
  
  returns: bignum