Different warning messages for different versions of Python
diff --git a/OpenSSL/SSL.py b/OpenSSL/SSL.py
index 5d9c360..8972097 100644
--- a/OpenSSL/SSL.py
+++ b/OpenSSL/SSL.py
@@ -1,5 +1,5 @@
-import warnings
-from sys import platform
+from warnings import warn
+from sys import platform, version_info
 from functools import wraps, partial
 from itertools import count
 from weakref import WeakValueDictionary
@@ -314,7 +314,12 @@
 
         # Backward compatibility
         if isinstance(cafile, _text_type):
-            warnings.warn("str object in cafile is no longer accepted, use bytes", DeprecationWarning)
+            if version_info.major == 2:
+                warn("unicode in cafile is no longer accepted, use bytes", DeprecationWarning)
+            elif version_info.major == 3:
+                warn("str in cafile is no longer accepted, use bytes", DeprecationWarning)
+            else:
+                warn("text in cafile is no longer accepted, use bytes", DeprecationWarning)
             cafile = cafile.encode('utf-8')
 
         if cafile is None:
@@ -980,7 +985,12 @@
 
         # Backward compatibility
         if isinstance(buf, _text_type):
-            warnings.warn("str object in buf is no longer accepted, use bytes", DeprecationWarning)
+            if version_info.major == 2:
+                warn("unicode in buf is no longer accepted, use bytes", DeprecationWarning)
+            elif version_info.major == 3:
+                warn("str in buf is no longer accepted, use bytes", DeprecationWarning)
+            else:
+                warn("text in buf is no longer accepted, use bytes", DeprecationWarning)
             buf = buf.encode('utf-8')
 
         if isinstance(buf, _memoryview):
@@ -1010,7 +1020,12 @@
 
         # Backward compatibility
         if isinstance(buf, _text_type):
-            warnings.warn("str object in buf is no longer accepted, use bytes", DeprecationWarning)
+            if version_info.major == 2:
+                warn("unicode in buf is no longer accepted, use bytes", DeprecationWarning)
+            elif version_info.major == 3:
+                warn("str in buf is no longer accepted, use bytes", DeprecationWarning)
+            else:
+                warn("text in buf is no longer accepted, use bytes", DeprecationWarning)
             buf = buf.encode('utf-8')
 
         if isinstance(buf, _memoryview):
@@ -1101,7 +1116,12 @@
 
         # Backward compatibility
         if isinstance(buf, _text_type):
-            warnings.warn("str object in buf is no longer accepted, use bytes", DeprecationWarning)
+            if version_info.major == 2:
+                warn("unicode in buf is no longer accepted, use bytes", DeprecationWarning)
+            elif version_info.major == 3:
+                warn("str in vuf is no longer accepted, use bytes", DeprecationWarning)
+            else:
+                warn("text in buf is no longer accepted, use bytes", DeprecationWarning)
             buf = buf.encode("ascii")
 
         if self._into_ssl is None:
diff --git a/OpenSSL/crypto.py b/OpenSSL/crypto.py
index e8b6d3c..b671d9e 100644
--- a/OpenSSL/crypto.py
+++ b/OpenSSL/crypto.py
@@ -1,4 +1,5 @@
-import warnings
+from warnings import warn
+from sys import version_info
 from time import time
 from base64 import b16encode
 from functools import partial
@@ -1956,7 +1957,12 @@
 
         # Backward compatibility
         if isinstance(passphrase, _text_type):
-            warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+            if version_info.major == 2:
+                warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+            elif version_info.major == 3:
+                warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+            else:
+                warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
             passphrase = passphrase.encode('utf-8')
 
         if self._cacerts is None:
@@ -2259,7 +2265,12 @@
 
     # Backward compatibility
     if isinstance(data, _text_type):
-        warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        if version_info.major == 2:
+            warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        elif version_info.major == 3:
+            warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        else:
+            warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
         data = data.encode('utf-8')
 
     digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest))
@@ -2299,7 +2310,12 @@
 
     # Backward compatibility
     if isinstance(data, _text_type):
-        warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        if version_info.major == 2:
+            warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        elif version_info.major == 3:
+            warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        else:
+            warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
         data = data.encode('utf-8')
 
     digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest))
@@ -2396,7 +2412,12 @@
 
     # Backward compatibility
     if isinstance(passphrase, _text_type):
-        warnings.warn("str object in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        if version_info.major == 2:
+            warn("unicode in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        elif version_info.major == 3:
+            warn("str in passphrase is no longer accepted, use bytes", DeprecationWarning)
+        else:
+            warn("text in passphrase is no longer accepted, use bytes", DeprecationWarning)
         passphrase = passphrase.encode('utf-8')
 
     if isinstance(buffer, _text_type):