553 static PyObject *
554 crypto_load_pkcs12(PyObject *spam, PyObject *args)
555 {
556 int len;
557 char *buffer, *passphrase = NULL;
558 BIO *bio;
559 PKCS12 *p12;
560
561 if (!PyArg_ParseTuple(args, "s#|s:load_pkcs12", &buffer, &len, &passphrase))
when PyArg_ParseTuple() succeeds
taking False path
562 return NULL;
563
564 bio = BIO_new_mem_buf(buffer, len);
565 if ((p12 = d2i_PKCS12_bio(bio, NULL)) == NULL)
when treating unknown struct PKCS12 * from OpenSSL/crypto/crypto.c:565 as NULL
taking True path
566 {
567 BIO_free(bio);
568 exception_from_error_queue(crypto_Error);
569 return NULL;
570 }
571 BIO_free(bio);
572
573 return (PyObject *)crypto_PKCS12_New(p12, passphrase);
574 }
returning (PyObject*)NULL without setting an exception