如何调试NSS库函数中发生的事情?

时间:2015-07-06 17:57:24

标签: c++ debugging nss

我正在尝试在我的代码中复制NSS lib的PK11_PrivDecryptPKCS1函数的行为,以便我可以找出它失败的原因。它总是返回SECFailure

我看到here此函数会创建一个参数并调用pk11_PrivDecryptRaw。现在在pk11_PrivDecryptRaw(同一个文件,第833行)中,我看到如果可以在3个代码块中返回SECFailure

首先是key->keyType != rsaKey。所以我对key->keyType进行了调查,看到它等于rsaKey

下一部分是:

session = pk11_GetNewSession(slot,&owner);
(...)
crv = PK11_GETTAB(slot)->C_DecryptInit(session, mech, key->pkcs11ID);
if (crv != CKR_OK) {
    (...)
    return SECFailure;
}

所以我在我的代码中复制了这段代码,以便调试返回给crv的内容。当我试图这样做时,我找到了.h,其中一些符号在哪里。它无法找到“secmodi.h”,“secmodti.h”包含。我在libnss3-dev的源代码中找到了它们。

现在问题在于联系。我收到了错误

pk11_GetNewSession的未定义参考。我使用以下命令在整个/ usr / lib目录中搜索了这个函数:

find . -name \*.so -type f -print -exec readelf -s {} \; 2> /dev/null | grep "\.so\|PK11" 

但它没有找到它。我认为它应该是来自库的内部函数,而不是在.so。

上公开

如果我尝试将此调用替换为此函数内的代码,我的意思是

PK11_GETTAB(slot)->C_OpenSession(slot->slotID,CKF_SERIAL_SESSION,slot,pk11_notify,&session)

这次我得到pk11_notify的未定义参考。

我该如何调试?

0 个答案:

没有答案
相关问题