diff --git a/.travis/install.sh b/.travis/install.sh
index a840a9fda4f3fa1fe43f16b226a26a772110201c..4767316da4c8fc80c233641a6d52ffb23b9f54f1 100644
--- a/.travis/install.sh
+++ b/.travis/install.sh
@@ -7,7 +7,31 @@ then
     PIP_INSTALL_FLAGS="--user"
   fi
 fi
-$SCAPY_SUDO pip install $PIP_INSTALL_FLAGS cryptography ecdsa mock
+
+if python --version 2>&1 | grep -q PyPy; then
+  wget https://pypi.python.org/packages/82/f7/d6dfd7595910a20a563a83a762bf79a253c4df71759c3b228accb3d7e5e4/cryptography-1.7.1.tar.gz
+  tar zxf cryptography-1.7.1.tar.gz
+  cd cryptography-1.7.1
+  patch << EOF
+--- setup.py
++++ setup.py
+@@ -47,7 +47,7 @@ if sys.version_info < (3, 4):
+ if sys.version_info < (3, 3):
+     requirements.append("ipaddress")
+ 
+-if platform.python_implementation() == "PyPy":
++if False:
+     if sys.pypy_version_info < (2, 6):
+         raise RuntimeError(
+             "cryptography 1.0 is not compatible with PyPy < 2.6. Please "
+EOF
+  $SCAPY_SUDO pip install $PIP_INSTALL_FLAGS .
+  cd ../
+  rm -rf cryptography-*
+  $SCAPY_SUDO pip install $PIP_INSTALL_FLAGS ecdsa mock
+else
+  $SCAPY_SUDO pip install $PIP_INSTALL_FLAGS cryptography ecdsa mock
+fi
 
 # Install coverage
 if [ "$SCAPY_COVERAGE" = "yes" ]
diff --git a/.travis/test.sh b/.travis/test.sh
index f9cf530a177fb098a1fb052a2501d62bc14b11bb..18143ccc4290631dfc0dce6c933fef4a30a8f97d 100644
--- a/.travis/test.sh
+++ b/.travis/test.sh
@@ -18,6 +18,12 @@ then
   UT_FLAGS+=" -K combined_modes"
 fi
 
+if python --version 2>&1 | grep -q PyPy
+then
+  TRAVIS_PYPY="yes"
+  UT_FLAGS+=" -K wep "
+fi
+
 # Set PATH
 for _path in /sbin /usr/sbin /usr/local/sbin; do
   [ -d "$_path" ] && echo "$PATH" | grep -qvE "(^|:)$_path(:|$)" && export PATH="$PATH:$_path"
@@ -63,6 +69,11 @@ do
   then
     continue
   fi
+  if [ "$f" = "cert.uts" -o "$f" = "ipsec.uts" ] && [ "$TRAVIS_PYPY" = "yes" ]
+  then
+    # currently disabled
+    continue
+  fi
   $SCAPY_SUDO ./run_tests -q -F -t $f $UT_FLAGS || exit $?
 done