code: function(v, h, x, s) {
  	tmp1=new Int8Array(65);
  	tmp2=new Int8Array(33);
  	for (i = 0; i < 32; i++)
  	{
  		v[i] = 0;
  	}
  	curve25519_mula_small(v, x, 0, h, 32, -1);
  	curve25519_mula_small(v, v, 0, curve25519_order, 32, parseInt((15-v[31])/16));
  	curve25519_mula32(tmp1, v, s, 32, 1);
  	curve25519_divmod(tmp2, tmp1, 64, curve25519_order, 32);
  	w=0;
  	for (k = 0; k < 32; k++)
  	{
  		v[k] = tmp1[k];
  		w |= v[k];
  	}
  	return w !== 0;
  }
docs: /* Signature generation primitive, calculates (x-h)s mod q
  v  [out] signature value
  h  [in]  signature hash (of message, signature pub key, and context data)
  x  [in]  signature private key
  s  [in]  private key for signing
  returns true on success, false on failure (use different x or h)