code: function server_getS(params, v_num, A_num, b_num, u_num) {
    assertIsBigInteger(v_num);
    assertIsBigInteger(A_num);
    assertIsBigInteger(b_num);
    assertIsBigInteger(u_num);
  //!  if (zero.greater(A_num) || N.lesser(A_num))
    if((zero.compareTo(A_num) > 0) && (N.compareTo(A_num) < 0))
      throw new Error("invalid client-supplied 'A', must be 1..N-1");
    var S_num = A_num.multiply(v_num.modPow(u_num, params.N)).modPow(b_num, params.N).mod(params.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