SHA-2 family support
diff --git a/cryptography/primitives/hashes.py b/cryptography/primitives/hashes.py
index d74287f..d004c45 100644
--- a/cryptography/primitives/hashes.py
+++ b/cryptography/primitives/hashes.py
@@ -46,3 +46,27 @@
     name = "sha1"
     digest_size = 20
     block_size = 64
+
+
+class SHA224(BaseHash):
+    name = "sha224"
+    digest_size = 28
+    block_size = 64
+
+
+class SHA256(BaseHash):
+    name = "sha256"
+    digest_size = 32
+    block_size = 64
+
+
+class SHA384(BaseHash):
+    name = "sha384"
+    digest_size = 48
+    block_size = 128
+
+
+class SHA512(BaseHash):
+    name = "sha512"
+    digest_size = 64
+    block_size = 128
diff --git a/tests/primitives/test_hash_vectors.py b/tests/primitives/test_hash_vectors.py
index 9a925e2..d0fe46d 100644
--- a/tests/primitives/test_hash_vectors.py
+++ b/tests/primitives/test_hash_vectors.py
@@ -33,3 +33,59 @@
         only_if=lambda api: api.supports_hash(hashes.SHA1),
         skip_message="Does not support SHA1",
     )
+
+
+class TestSHA224(object):
+    test_SHA224 = generate_hash_test(
+        load_hash_vectors_from_file,
+        os.path.join("NIST", "SHABYTE"),
+        [
+            "SHA224LongMsg.rsp",
+            "SHA224ShortMsg.rsp",
+        ],
+        hashes.SHA224,
+        only_if=lambda api: api.supports_hash(hashes.SHA224),
+        skip_message="Does not support SHA224",
+    )
+
+
+class TestSHA256(object):
+    test_SHA256 = generate_hash_test(
+        load_hash_vectors_from_file,
+        os.path.join("NIST", "SHABYTE"),
+        [
+            "SHA256LongMsg.rsp",
+            "SHA256ShortMsg.rsp",
+        ],
+        hashes.SHA256,
+        only_if=lambda api: api.supports_hash(hashes.SHA256),
+        skip_message="Does not support SHA256",
+    )
+
+
+class TestSHA384(object):
+    test_SHA384 = generate_hash_test(
+        load_hash_vectors_from_file,
+        os.path.join("NIST", "SHABYTE"),
+        [
+            "SHA384LongMsg.rsp",
+            "SHA384ShortMsg.rsp",
+        ],
+        hashes.SHA384,
+        only_if=lambda api: api.supports_hash(hashes.SHA384),
+        skip_message="Does not support SHA384",
+    )
+
+
+class TestSHA512(object):
+    test_SHA512 = generate_hash_test(
+        load_hash_vectors_from_file,
+        os.path.join("NIST", "SHABYTE"),
+        [
+            "SHA512LongMsg.rsp",
+            "SHA512ShortMsg.rsp",
+        ],
+        hashes.SHA512,
+        only_if=lambda api: api.supports_hash(hashes.SHA512),
+        skip_message="Does not support SHA512",
+    )
diff --git a/tests/primitives/test_hashes.py b/tests/primitives/test_hashes.py
index 4ad5c89..2f2dd1c 100644
--- a/tests/primitives/test_hashes.py
+++ b/tests/primitives/test_hashes.py
@@ -26,3 +26,43 @@
         only_if=lambda api: api.supports_hash(hashes.SHA1),
         skip_message="Does not support SHA1",
     )
+
+
+class TestSHA224(object):
+    test_SHA224 = generate_base_hash_test(
+        hashes.SHA224,
+        digest_size=28,
+        block_size=64,
+        only_if=lambda api: api.supports_hash(hashes.SHA224),
+        skip_message="Does not support SHA224",
+    )
+
+
+class TestSHA256(object):
+    test_SHA256 = generate_base_hash_test(
+        hashes.SHA256,
+        digest_size=32,
+        block_size=64,
+        only_if=lambda api: api.supports_hash(hashes.SHA256),
+        skip_message="Does not support SHA256",
+    )
+
+
+class TestSHA384(object):
+    test_SHA384 = generate_base_hash_test(
+        hashes.SHA384,
+        digest_size=48,
+        block_size=128,
+        only_if=lambda api: api.supports_hash(hashes.SHA384),
+        skip_message="Does not support SHA384",
+    )
+
+
+class TestSHA512(object):
+    test_SHA512 = generate_base_hash_test(
+        hashes.SHA512,
+        digest_size=64,
+        block_size=128,
+        only_if=lambda api: api.supports_hash(hashes.SHA512),
+        skip_message="Does not support SHA512",
+    )