import ecdsa import pytest from frostfs_api.client.signer import Signer from frostfs_api.client.verifier import Verifier from frostfs_api.crypto.key_extension import KeyExtension from tests.helpers.resources import WIF @pytest.mark.crypto class TestSignAndVerify: @pytest.mark.parametrize("message", [b"Hello Frostfs API", b""]) def test_sign_verify_success( self, client_signer: Signer, client_verifier: Verifier, client_key_extension: KeyExtension, message: bytes ): private_key = client_key_extension.get_private_key_from_wif(WIF) public_key = client_key_extension.get_public_key(private_key) signature = client_signer.sign_rfc6979(private_key, message) assert client_verifier.verify_rfc6979(public_key, message, signature) is True def test_verify_rfc6979_empty_key(self, client_verifier: Verifier): with pytest.raises(ValueError, match="Incorrect public key"): client_verifier.verify_rfc6979(b'', b"Test message", b"signature")