From a1c4ffec201ccc77581905b9324c172c4ad8cb43 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 4 Aug 2022 20:27:38 +0530 Subject: [PATCH] Private raw key should be returned as a secret --- kitty/crypto.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kitty/crypto.c b/kitty/crypto.c index f18fea0e6..4beaa7aa8 100644 --- a/kitty/crypto.c +++ b/kitty/crypto.c @@ -178,11 +178,11 @@ static PyObject* elliptic_curve_key_get_private(EllipticCurveKey *self, void UNUSED *closure) { size_t len = 0; if (1 != EVP_PKEY_get_raw_private_key(self->key, NULL, &len)) return set_error_from_openssl("Could not get public key from EVP_PKEY"); - PyObject *ans = PyBytes_FromStringAndSize(NULL, len); + Secret *ans = alloc_secret(len); if (!ans) return NULL; if (mlock(PyBytes_AS_STRING(ans), len) != 0) { Py_CLEAR(ans); return PyErr_SetFromErrno(PyExc_OSError); } - if (1 != EVP_PKEY_get_raw_private_key(self->key, (unsigned char*)PyBytes_AS_STRING(ans), &len)) { Py_CLEAR(ans); return set_error_from_openssl("Could not get public key from EVP_PKEY"); } - return ans; + if (1 != EVP_PKEY_get_raw_private_key(self->key, (unsigned char*)ans->secret, &len)) { Py_CLEAR(ans); return set_error_from_openssl("Could not get public key from EVP_PKEY"); } + return (PyObject*)ans; }