File: OpenSSL/crypto/crypto.c
Function: crypto_verify
Error: returning (PyObject*)NULL without setting an exception
663 static PyObject *
664 crypto_verify(PyObject *spam, PyObject *args) {
665     crypto_X509Obj *cert;
666     unsigned char *signature;
667     int sig_len;
668     char *data, *digest_name;
669     int err;
670     const EVP_MD *digest;
671     EVP_MD_CTX md_ctx;
672     EVP_PKEY *pkey;
673 
674 #ifdef PY3
675     if (!PyArg_ParseTuple(args, "O!" BYTESTRING_FMT "#" BYTESTRING_FMT "s:verify", &crypto_X509_Type, &cert, &signature, &sig_len, &data, &digest_name)) {
676 #else
677     if (!PyArg_ParseTuple(args, "O!t#ss:verify", &crypto_X509_Type, &cert, &signature, &sig_len, &data, &digest_name)) {
when PyArg_ParseTuple() succeeds
taking False path
678 #endif
679         return NULL;
680     }
681 
682     if ((digest = EVP_get_digestbyname(digest_name)) == NULL){
when treating unknown const struct EVP_MD * from OpenSSL/crypto/crypto.c:682 as non-NULL
taking False path
683         PyErr_SetString(PyExc_ValueError, "No such digest method");
684         return NULL;
685     }
686 
687     pkey = X509_get_pubkey(cert->x509);
688     if (pkey == NULL) {
when treating unknown struct EVP_PKEY * from OpenSSL/crypto/crypto.c:687 as non-NULL
taking False path
689         PyErr_SetString(PyExc_ValueError, "No public key");
690         return NULL;
691     }
692 
693     EVP_VerifyInit(&md_ctx, digest);
694     EVP_VerifyUpdate(&md_ctx, data, strlen((char*)data));
695     err = EVP_VerifyFinal(&md_ctx, signature, sig_len, pkey);
696     EVP_PKEY_free(pkey);
697 
698     if (err != 1) {
when considering range: -0x80000000 <= value <= 0
taking True path
699         exception_from_error_queue(crypto_Error);
700         return NULL;
701     }
702 
703     Py_INCREF(Py_None);
704     return Py_None;
705 }
returning (PyObject*)NULL without setting an exception
found 1 similar trace(s) to this