consolidate dsa serialization loading tests and improve verifier
diff --git a/tests/hazmat/primitives/test_serialization.py b/tests/hazmat/primitives/test_serialization.py
index 6169dd8..8a7e7f6 100644
--- a/tests/hazmat/primitives/test_serialization.py
+++ b/tests/hazmat/primitives/test_serialization.py
@@ -25,7 +25,10 @@
 
 
 from .test_ec import _skip_curve_unsupported
-from .utils import _check_rsa_private_numbers, load_vectors_from_file
+from .utils import (
+    _check_dsa_private_numbers, _check_rsa_private_numbers,
+    load_vectors_from_file
+)
 from ...utils import raises_unsupported_algorithm
 
 
@@ -63,16 +66,27 @@
         if isinstance(key, interfaces.RSAPrivateKeyWithNumbers):
             _check_rsa_private_numbers(key.private_numbers())
 
-    def test_load_dsa_private_key(self, backend):
+    @pytest.mark.parametrize(
+        ("key_path", "password"),
+        [
+            (["Traditional_OpenSSL_Serialization", "dsa.1024.pem"], None),
+            (["Traditional_OpenSSL_Serialization", "dsa.2048.pem"], None),
+            (["Traditional_OpenSSL_Serialization", "dsa.3072.pem"], None),
+            (["PKCS8", "unenc-dsa-pkcs8.pem"], None),
+            (["PEM_Serialization", "dsa_private_key.pem"], b"123456"),
+        ]
+    )
+    def test_load_dsa_private_key(self, key_path, password, backend):
         key = load_vectors_from_file(
-            os.path.join(
-                "asymmetric", "PEM_Serialization", "dsa_private_key.pem"),
+            os.path.join("asymmetric", *key_path),
             lambda pemfile: load_pem_private_key(
-                pemfile.read().encode(), b"123456", backend
+                pemfile.read().encode(), password, backend
             )
         )
         assert key
         assert isinstance(key, interfaces.DSAPrivateKey)
+        if isinstance(key, interfaces.DSAPrivateKeyWithNumbers):
+            _check_dsa_private_numbers(key.private_numbers())
 
     @pytest.mark.parametrize(
         ("key_file", "password"),
@@ -179,26 +193,6 @@
         if isinstance(key, interfaces.RSAPrivateKeyWithNumbers):
             _check_rsa_private_numbers(key.private_numbers())
 
-    @pytest.mark.parametrize(
-        ("key_file", "password"),
-        [
-            ("dsa.1024.pem", None),
-            ("dsa.2048.pem", None),
-            ("dsa.3072.pem", None),
-        ]
-    )
-    def test_load_pem_dsa_private_key(self, key_file, password, backend):
-        key = load_vectors_from_file(
-            os.path.join(
-                "asymmetric", "Traditional_OpenSSL_Serialization", key_file),
-            lambda pemfile: load_pem_private_key(
-                pemfile.read().encode(), password, backend
-            )
-        )
-
-        assert key
-        assert isinstance(key, interfaces.DSAPrivateKey)
-
     def test_key1_pem_encrypted_values(self, backend):
         pkey = load_vectors_from_file(
             os.path.join(
diff --git a/tests/hazmat/primitives/utils.py b/tests/hazmat/primitives/utils.py
index 0c9af50..e148bc6 100644
--- a/tests/hazmat/primitives/utils.py
+++ b/tests/hazmat/primitives/utils.py
@@ -414,3 +414,10 @@
     assert skey.dmp1 == rsa.rsa_crt_dmp1(skey.d, skey.p)
     assert skey.dmq1 == rsa.rsa_crt_dmq1(skey.d, skey.q)
     assert skey.iqmp == rsa.rsa_crt_iqmp(skey.p, skey.q)
+
+
+def _check_dsa_private_numbers(skey):
+    assert skey
+    pkey = skey.public_numbers
+    params = pkey.parameter_numbers
+    assert pow(params.g, skey.x, params.p) == pkey.y