diff --git a/setup.py b/setup.py
index 70ea551..7c23b00 100644
--- a/setup.py
+++ b/setup.py
@@ -36,7 +36,6 @@
 requirements = [
     "idna>=2.1",
     "asn1crypto>=0.21.0",
-    "packaging",
     "six>=1.4.1",
     "setuptools>=20.5",
 ]
diff --git a/src/cryptography/hazmat/primitives/ciphers/base.py b/src/cryptography/hazmat/primitives/ciphers/base.py
index 502d980..e9d55a1 100644
--- a/src/cryptography/hazmat/primitives/ciphers/base.py
+++ b/src/cryptography/hazmat/primitives/ciphers/base.py
@@ -147,7 +147,7 @@
 
     # cffi 1.7 supports from_buffer on bytearray, which is required. We can
     # remove this check in the future when we raise our minimum PyPy version.
-    if utils._version_check(cffi.__version__, "1.7"):
+    if cffi.__version_info__ >= (1, 7):
         def update_into(self, data, buf):
             if self._ctx is None:
                 raise AlreadyFinalized("Context was already finalized.")
@@ -195,7 +195,7 @@
 
     # cffi 1.7 supports from_buffer on bytearray, which is required. We can
     # remove this check in the future when we raise our minimum PyPy version.
-    if utils._version_check(cffi.__version__, "1.7"):
+    if cffi.__version_info__ >= (1, 7):
         def update_into(self, data, buf):
             self._check_limit(len(data))
             return self._ctx.update_into(data, buf)
diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py
index 40359c6..bec56d5 100644
--- a/src/cryptography/utils.py
+++ b/src/cryptography/utils.py
@@ -10,8 +10,6 @@
 import sys
 import warnings
 
-from packaging.version import parse
-
 
 # Several APIs were deprecated with no specific end-of-life date because of the
 # ubiquity of their use. They should not be removed until we agree on when that
@@ -104,11 +102,6 @@
         return len(bin(x)) - (2 + (x <= 0))
 
 
-def _version_check(version, required_version):
-    # This is used to check if we support update_into on CipherContext.
-    return parse(version) >= parse(required_version)
-
-
 class _DeprecatedValue(object):
     def __init__(self, value, message, warning_class):
         self.value = value
diff --git a/tests/hazmat/primitives/test_block.py b/tests/hazmat/primitives/test_block.py
index 11a7019..4c6ad18 100644
--- a/tests/hazmat/primitives/test_block.py
+++ b/tests/hazmat/primitives/test_block.py
@@ -17,7 +17,6 @@
 from cryptography.hazmat.primitives.ciphers import (
     Cipher, algorithms, base, modes
 )
-from cryptography.utils import _version_check
 
 from .utils import (
     generate_aead_exception_test, generate_aead_tag_exception_test
@@ -74,7 +73,7 @@
             decryptor.finalize()
 
     @pytest.mark.skipif(
-        not _version_check(cffi.__version__, '1.7'),
+        cffi.__version_info__ < (1, 7),
         reason="cffi version too old"
     )
     def test_use_update_into_after_finalize(self, backend):
diff --git a/tests/hazmat/primitives/test_ciphers.py b/tests/hazmat/primitives/test_ciphers.py
index 83952a8..7f51576 100644
--- a/tests/hazmat/primitives/test_ciphers.py
+++ b/tests/hazmat/primitives/test_ciphers.py
@@ -18,7 +18,6 @@
 from cryptography.hazmat.primitives.ciphers.algorithms import (
     AES, ARC4, Blowfish, CAST5, Camellia, IDEA, SEED, TripleDES
 )
-from cryptography.utils import _version_check
 
 from ...utils import (
     load_nist_vectors, load_vectors_from_file, raises_unsupported_algorithm
@@ -143,7 +142,7 @@
 
 
 @pytest.mark.skipif(
-    not _version_check(cffi.__version__, '1.7'),
+    cffi.__version_info__ < (1, 7),
     reason="cffi version too old"
 )
 @pytest.mark.supported(
@@ -241,7 +240,7 @@
 
 
 @pytest.mark.skipif(
-    _version_check(cffi.__version__, '1.7'),
+    cffi.__version_info__ >= (1, 7),
     reason="cffi version too new"
 )
 @pytest.mark.requires_backend_interface(interface=CipherBackend)
