118 lines
3.6 KiB
Diff
118 lines
3.6 KiB
Diff
|
From b4279d5328b8746d7c87e24e196f31f99df06392 Mon Sep 17 00:00:00 2001
|
|||
|
From: Kamil Dudka <kdudka@redhat.com>
|
|||
|
Date: Wed, 18 Jan 2023 16:20:28 +0100
|
|||
|
Subject: [PATCH 1/3] pobject: logout when a new encrypted private key is
|
|||
|
loaded
|
|||
|
|
|||
|
This forces CKFW to call pem_mdSession_Login() each time we load a new
|
|||
|
encrypted private key into nss-pem. Otherwise it would be called only
|
|||
|
for the first encrypted private key and an attempt to use the other keys
|
|||
|
would fail later on with: `The key does not support the requested
|
|||
|
operation.`
|
|||
|
|
|||
|
Bug: https://bugzilla.redhat.com/2121064
|
|||
|
|
|||
|
Upstream-commit: 25312ae55da718690fb68a13cfc709efcab17162
|
|||
|
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
|||
|
---
|
|||
|
src/pobject.c | 1 +
|
|||
|
1 file changed, 1 insertion(+)
|
|||
|
|
|||
|
diff --git a/src/pobject.c b/src/pobject.c
|
|||
|
index a86640e..bd9d330 100644
|
|||
|
--- a/src/pobject.c
|
|||
|
+++ b/src/pobject.c
|
|||
|
@@ -1267,6 +1267,7 @@ pem_CreateObject
|
|||
|
/* FIXME: dirty hack relying on NSS internals */
|
|||
|
CK_SESSION_HANDLE hSession =
|
|||
|
NSSCKFWInstance_FindSessionHandle(fwInstance, fwSession);
|
|||
|
+ NSSCKFWC_Logout(fwInstance, hSession);
|
|||
|
NSSCKFWInstance_DestroySessionHandle(fwInstance, hSession);
|
|||
|
} else {
|
|||
|
*pError = CKR_KEY_UNEXTRACTABLE;
|
|||
|
--
|
|||
|
2.39.2
|
|||
|
|
|||
|
|
|||
|
From d85beb202c9fd6d976f8dced54b32b994a0f8181 Mon Sep 17 00:00:00 2001
|
|||
|
From: Kamil Dudka <kdudka@redhat.com>
|
|||
|
Date: Wed, 18 Jan 2023 16:28:30 +0100
|
|||
|
Subject: [PATCH 2/3] psession: find the key to decrypt in reverse order
|
|||
|
|
|||
|
If we attempt to decrypt a key that is already decrypted, curl fails
|
|||
|
with a misleading error: `Unable to load client key: Incorrect
|
|||
|
password`.
|
|||
|
|
|||
|
In practice, we usually want to decrypt the key that was loaded the last
|
|||
|
time. Reversing the order of search through the global array makes
|
|||
|
nss-pem work in a scenario where 2 distinct encrypted private keys are
|
|||
|
used.
|
|||
|
|
|||
|
Bug: https://bugzilla.redhat.com/2121064
|
|||
|
|
|||
|
Upstream-commit: b29f61b52ef622c071b0451255a84b081511bc7b
|
|||
|
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
|||
|
---
|
|||
|
src/psession.c | 2 +-
|
|||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|||
|
|
|||
|
diff --git a/src/psession.c b/src/psession.c
|
|||
|
index 13a5e5d..1aebd81 100644
|
|||
|
--- a/src/psession.c
|
|||
|
+++ b/src/psession.c
|
|||
|
@@ -256,7 +256,7 @@ pem_mdSession_Login
|
|||
|
token_needsLogin[slotID - 1] = PR_FALSE;
|
|||
|
|
|||
|
/* Find the right key object */
|
|||
|
- list_for_each_entry(curObj, &pem_objs, gl_list) {
|
|||
|
+ list_for_each_entry_reverse(curObj, &pem_objs, gl_list) {
|
|||
|
if ((slotID == curObj->slotID) && (curObj->type == pemBareKey)) {
|
|||
|
io = curObj;
|
|||
|
break;
|
|||
|
--
|
|||
|
2.39.2
|
|||
|
|
|||
|
|
|||
|
From f1087f6ab4e6514c0dbc8cfa320ca207bfa78f7b Mon Sep 17 00:00:00 2001
|
|||
|
From: Kamil Dudka <kdudka@redhat.com>
|
|||
|
Date: Thu, 16 Feb 2023 15:55:15 +0100
|
|||
|
Subject: [PATCH 3/3] pobject: include <nssckfwc.h> to avoid implicit function
|
|||
|
declaration
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|||
|
```
|
|||
|
src/pobject.c: In function ‘pem_CreateObject’:
|
|||
|
src/pobject.c:1249:13: warning: implicit declaration of function ‘NSSCKFWC_Logout’ [-Wimplicit-function-declaration]
|
|||
|
1249 | NSSCKFWC_Logout(fwInstance, hSession);
|
|||
|
| ^~~~~~~~~~~~~~~
|
|||
|
```
|
|||
|
|
|||
|
This is a follow-up commit to nss-pem-1.0.8-5-g25312ae which introduced
|
|||
|
the warning.
|
|||
|
|
|||
|
Closes: https://github.com/kdudka/nss-pem/pull/15
|
|||
|
|
|||
|
Upstream-commit: 9e160fce7a3aa0e6167400b0dc5cbb7f400585c1
|
|||
|
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
|||
|
---
|
|||
|
src/pobject.c | 1 +
|
|||
|
1 file changed, 1 insertion(+)
|
|||
|
|
|||
|
diff --git a/src/pobject.c b/src/pobject.c
|
|||
|
index bd9d330..1d918dd 100644
|
|||
|
--- a/src/pobject.c
|
|||
|
+++ b/src/pobject.c
|
|||
|
@@ -46,6 +46,7 @@
|
|||
|
|
|||
|
#include <blapi.h>
|
|||
|
#include <certt.h>
|
|||
|
+#include <nssckfwc.h>
|
|||
|
#include <pk11pub.h>
|
|||
|
#include <secasn1.h>
|
|||
|
|
|||
|
--
|
|||
|
2.39.2
|
|||
|
|