Switch to some more PyTuple APIs for simpler error handling
diff --git a/src/crypto/pkcs12.c b/src/crypto/pkcs12.c
index 66dbf63..f216349 100644
--- a/src/crypto/pkcs12.c
+++ b/src/crypto/pkcs12.c
@@ -147,14 +147,16 @@
         return NULL;
     if (cacerts == Py_None) {
         Py_INCREF(cacerts);
-    } else if ((len = PySequence_Length(cacerts)) >= 0) {  /* is iterable */
+    } else {
+        /* It's iterable */
         cacerts = PySequence_Tuple(cacerts);
-        if(cacerts == NULL) {
-            PyErr_SetString(PyExc_TypeError, "untupleable" /* failed to convert cacerts to a tuple */);
+        if (cacerts == NULL) {
             return NULL;
         }
+        len = PyTuple_Size(cacerts);
+
         /* Check is's a simple list filled only with X509 objects. */
-        for(i = 0; i < len; i++) {  /* For each CA cert */
+        for (i = 0; i < len; i++) {
             obj = PyTuple_GetItem(cacerts, i);
             if (PyObject_Type(obj) != (PyObject *) &crypto_X509_Type) {
                 Py_DECREF(cacerts);
@@ -162,9 +164,6 @@
                 return NULL;
             }
         }
-    } else {
-        PyErr_SetString(PyExc_TypeError, "must be iterable or None");
-        return NULL;
     }
 
     Py_DECREF(self->cacerts);