text: import os
  
  from cryptography.hazmat.primitives import hashes
  from cryptography.hazmat.primitives.asymmetric import ec
  from cryptography.hazmat.primitives.asymmetric.utils import (
      encode_dss_signature,
  )
  
  from tests.utils import load_fips_ecdsa_signing_vectors, load_vectors_from_file
  
  CRYPTOGRAPHY_HASH_TYPES = {
      "SHA-1": hashes.SHA1,
      "SHA-224": hashes.SHA224,
      "SHA-256": hashes.SHA256,
      "SHA-384": hashes.SHA384,
      "SHA-512": hashes.SHA512,
  }
  
  
  def verify_one_vector(vector):
      digest_algorithm = vector["digest_algorithm"]
      message = vector["message"]
      x = vector["x"]
      y = vector["y"]
      signature = encode_dss_signature(vector["r"], vector["s"])
  
      numbers = ec.EllipticCurvePublicNumbers(x, y, ec.SECP256K1())
  
      key = numbers.public_key()
  
      verifier = key.verifier(
          signature, ec.ECDSA(CRYPTOGRAPHY_HASH_TYPES[digest_algorithm]())
      )
      verifier.update(message)
      verifier.verify()
  
  
  def verify_vectors(vectors):
      for vector in vectors:
          verify_one_vector(vector)
  
  
  vector_path = os.path.join("asymmetric", "ECDSA", "SECP256K1", "SigGen.txt")
  
  secp256k1_vectors = load_vectors_from_file(
      vector_path, load_fips_ecdsa_signing_vectors
  )
  
  verify_vectors(secp256k1_vectors)
  