--TEST-- Check for libsodium core ristretto255 --EXTENSIONS-- sodium --SKIPIF-- --FILE-- getMessage(), "\n"; } $s2 = sodium_crypto_scalarmult_ristretto255($r, $s); // _from_hash should produce a valid point $ru = random_bytes(64); $s3 = sodium_crypto_core_ristretto255_from_hash($ru); var_dump(sodium_crypto_core_ristretto255_is_valid_point($s3)); // Modular inverse should be valid too (???) //$r_invert = sodium_crypto_core_ristretto255_scalar_invert($r); //var_dump(sodium_crypto_core_ristretto255_is_valid_point($r_invert)); $s_plus = sodium_crypto_core_ristretto255_add($s, $s0); $s_minus = sodium_crypto_core_ristretto255_sub($s_plus, $s0); var_dump(hash_equals($s, $s_minus)); ?> --EXPECT-- bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) string(64) "3066f82a1a747d45120d1740f14358531a8f04bbffe6a819f86dfe50f44a0a46" bool(true) Result is identity element bool(true) bool(true)