Update tests to pass bytes to the {set,get}_not{Before,After} APIs; adjust the argument parser for the implementation of these APIs to accept only bytes on Py 3.x
diff --git a/OpenSSL/crypto/x509.c b/OpenSSL/crypto/x509.c
index 1dc6506..d5f5946 100644
--- a/OpenSSL/crypto/x509.c
+++ b/OpenSSL/crypto/x509.c
@@ -365,11 +365,17 @@
 @return: None\n\
 ";
 
+#ifdef PY3
+#define FMT(name) ("y" name)
+#else
+#define FMT(name) ("s" name)
+#endif
+
 static PyObject*
 crypto_X509_set_notBefore(crypto_X509Obj *self, PyObject *args)
 {
 	return _set_asn1_time(
-		"s:set_notBefore", X509_get_notBefore(self->x509), args);
+            FMT(":set_notBefore"), X509_get_notBefore(self->x509), args);
 }
 
 static char crypto_X509_set_notAfter_doc[] = "\n\
@@ -388,9 +394,11 @@
 crypto_X509_set_notAfter(crypto_X509Obj *self, PyObject *args)
 {
 	return _set_asn1_time(
-		"s:set_notAfter", X509_get_notAfter(self->x509), args);
+            FMT(":set_notAfter"), X509_get_notAfter(self->x509), args);
 }
 
+#undef FMT
+
 PyObject*
 _get_asn1_time(char *format, ASN1_TIME* timestamp, PyObject *args)
 {
diff --git a/OpenSSL/test/test_crypto.py b/OpenSSL/test/test_crypto.py
index 45ba055..a040412 100644
--- a/OpenSSL/test/test_crypto.py
+++ b/OpenSSL/test/test_crypto.py
@@ -241,6 +241,16 @@
 -----END X509 CRL-----
 """
 
+try:
+    bytes
+except NameError:
+    def b(s):
+        return s
+else:
+    def b(s):
+        return s.encode("ascii")
+
+
 class X509ExtTests(TestCase):
     """
     Tests for L{OpenSSL.crypto.X509Extension}.
@@ -1035,27 +1045,28 @@
         self.assertEqual(get(), None)
 
         # GMT (Or is it UTC?) -exarkun
-        when = "20040203040506Z"
+        when = b("20040203040506Z")
         set(when)
         self.assertEqual(get(), when)
 
         # A plus two hours and thirty minutes offset
-        when = "20040203040506+0530"
+        when = b("20040203040506+0530")
         set(when)
         self.assertEqual(get(), when)
 
         # A minus one hour fifteen minutes offset
-        when = "20040203040506-0115"
+        when = b("20040203040506-0115")
         set(when)
         self.assertEqual(get(), when)
 
         # An invalid string results in a ValueError
-        self.assertRaises(ValueError, set, "foo bar")
+        self.assertRaises(ValueError, set, b("foo bar"))
 
         # The wrong number of arguments results in a TypeError.
         self.assertRaises(TypeError, set)
-        self.assertRaises(TypeError, set, "20040203040506Z", "20040203040506Z")
-        self.assertRaises(TypeError, get, "foo bar")
+        self.assertRaises(TypeError, set, b("20040203040506Z"), b("20040203040506Z"))
+        self.assertRaises(TypeError, get, b("foo bar"))
+
 
     # XXX ASN1_TIME (not GENERALIZEDTIME)
 
@@ -1084,7 +1095,7 @@
         internally.
         """
         cert = load_certificate(FILETYPE_PEM, self.pemData)
-        self.assertEqual(cert.get_notBefore(), "20090325123658Z")
+        self.assertEqual(cert.get_notBefore(), b("20090325123658Z"))
 
 
     def test_get_notAfter(self):
@@ -1094,7 +1105,7 @@
         internally.
         """
         cert = load_certificate(FILETYPE_PEM, self.pemData)
-        self.assertEqual(cert.get_notAfter(), "20170611123658Z")
+        self.assertEqual(cert.get_notAfter(), b("20170611123658Z"))
 
 
     def test_gmtime_adj_notBefore_wrong_args(self):
@@ -1116,7 +1127,7 @@
         cert = load_certificate(FILETYPE_PEM, self.pemData)
         now = datetime.utcnow() + timedelta(seconds=100)
         cert.gmtime_adj_notBefore(100)
-        self.assertEqual(cert.get_notBefore(), now.strftime("%Y%m%d%H%M%SZ"))
+        self.assertEqual(cert.get_notBefore(), b(now.strftime("%Y%m%d%H%M%SZ")))
 
 
     def test_gmtime_adj_notAfter_wrong_args(self):
@@ -1138,7 +1149,7 @@
         cert = load_certificate(FILETYPE_PEM, self.pemData)
         now = datetime.utcnow() + timedelta(seconds=100)
         cert.gmtime_adj_notAfter(100)
-        self.assertEqual(cert.get_notAfter(), now.strftime("%Y%m%d%H%M%SZ"))
+        self.assertEqual(cert.get_notAfter(), b(now.strftime("%Y%m%d%H%M%SZ")))
 
 
     def test_has_expired_wrong_args(self):
@@ -1178,7 +1189,7 @@
         cert = X509()
         self.assertEqual(
             cert.digest("md5"),
-            "A8:EB:07:F8:53:25:0A:F2:56:05:C5:A5:C4:C4:C7:15")
+            b("A8:EB:07:F8:53:25:0A:F2:56:05:C5:A5:C4:C4:C7:15"))
 
 
     def test_invalid_digest_algorithm(self):