Fix for abstractproperty, and make things nicer
diff --git a/cryptography/utils.py b/cryptography/utils.py
index 818f4e8..e4ec6cc 100644
--- a/cryptography/utils.py
+++ b/cryptography/utils.py
@@ -13,6 +13,7 @@
 
 from __future__ import absolute_import, division, print_function
 
+import abc
 import inspect
 import sys
 
@@ -37,12 +38,16 @@
             raise InterfaceNotImplemented(
                 "{0} is missing a {1!r} method".format(klass, method)
             )
-        spec = getattr(iface, method)
-        actual = getattr(klass, method)
-        if inspect.getargspec(spec) != inspect.getargspec(actual):
+        if isinstance(getattr(iface, method), abc.abstractproperty):
+            # Can't properly verify these yet.
+            continue
+        spec = inspect.getargspec(getattr(iface, method))
+        actual = inspect.getargspec(getattr(klass, method))
+        if spec != actual:
             raise InterfaceNotImplemented(
-                "{0}.{1}'s signature differs from the expected".format(
-                    klass, method
+                "{0}.{1}'s signature differs from the expected. Expected: "
+                "{2!r}. Received: {3!r}".format(
+                    klass, method, spec, actual
                 )
             )
 
diff --git a/tests/test_interfaces.py b/tests/test_interfaces.py
index bcc1010..e24f4db 100644
--- a/tests/test_interfaces.py
+++ b/tests/test_interfaces.py
@@ -51,3 +51,18 @@
 
         with pytest.raises(InterfaceNotImplemented):
             verify_interface(SimpleInterface, NonImplementer)
+
+    def test_handles_abstract_property(self):
+        @six.add_metaclass(abc.ABCMeta)
+        class SimpleInterface(object):
+            @abc.abstractproperty
+            def property(self):
+                pass
+
+        @register_interface(SimpleInterface)
+        class NonImplementer(object):
+            @property
+            def property(self):
+                pass
+
+        verify_interface(SimpleInterface, NonImplementer)