def test_ed25519_unavailable(): zero = 32 * b"\x00" with pytest.raises(UnavailableError): c.crypto_core_ed25519_is_valid_point(zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_add(zero, zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_sub(zero, zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_scalar_invert(zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_scalar_negate(zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_scalar_complement(zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_scalar_add(zero, zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_scalar_sub(zero, zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_scalar_mul(zero, zero) with pytest.raises(UnavailableError): c.crypto_core_ed25519_scalar_reduce(zero)
def test_ed25519_scalar_invert_negate_complement(): zero = 32 * b"\x00" one = b"\x01" + 31 * b"\x00" # random scalar modulo l sclr = c.randombytes(c.crypto_core_ed25519_SCALARBYTES) sclr = c.crypto_core_ed25519_scalar_add(sclr, zero) i = c.crypto_core_ed25519_scalar_invert(sclr) assert c.crypto_core_ed25519_scalar_mul(sclr, i) == one n = c.crypto_core_ed25519_scalar_negate(sclr) assert c.crypto_core_ed25519_scalar_add(sclr, n) == zero cp = c.crypto_core_ed25519_scalar_complement(sclr) assert c.crypto_core_ed25519_scalar_add(sclr, cp) == one