首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么PK11_GenerateRandom()会返回一个错误-8023?

为什么PK11_GenerateRandom()会返回一个错误-8023?
EN

Stack Overflow用户
提问于 2014-03-10 14:38:32
回答 1查看 912关注 0票数 0

我正在互联网上寻找PK11_GenerateRandom()函数的来源,看看为什么这个函数会失败。我有一个程序完美地使用了这个函数,但是当我们转向新版本的Linux时,它在分叉(fork())之后就失败了,因为我不认为NSS有问题,我怀疑我们做了一些错误的事情,这在以前的Linux版本中被忽略了,但是对于新的版本,存在一个问题。

OpenSSL包在‘好事’和‘坏’服务器上是相同的:

代码语言:javascript
运行
复制
OpenSSL 0.9.8e-fips-rhel5 01 Jul

然而,NSS rpm有所不同。“好”

代码语言:javascript
运行
复制
nss-3.12.2.0-2.el5

巴斯有这个版本

代码语言:javascript
运行
复制
nss-3.15.3-4.el5_10

“good”服务器使用了相当过时的Linux:

代码语言:javascript
运行
复制
Linux GOOD 2.6.18-128.el5 #1 SMP Wed Jan 21 08:45:05 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
Enterprise Linux Enterprise Linux Server release 5.3 (Carthage)
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

“坏”服务器是较新的:

代码语言:javascript
运行
复制
Linux BAD 2.6.18-371.4.1.el5 #1 SMP Wed Jan 29 11:05:49 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
Oracle Linux Server release 5.10
Red Hat Enterprise Linux Server release 5.10 (Tikanga)

任何线索,我可以找到来源,或什么可能是失败的原因(如来自fork()的副作用),将不胜感激。

  • 格雷格

编辑

这是代码,非常简单,我不认为它是必要的。

代码语言:javascript
运行
复制
/* random points to properly allocated memory, let=32 */
SECStatus rv = PK11_GenerateRandom((unsigned char *)random, (int)len);
if ( rv != SECSuccess )
    printf( "PK11_GenerateRandom error = %d\n", PR_GetError()) ;

当然,输出消息是:

代码语言:javascript
运行
复制
PK11_GenerateRandom error = -8023
  • 格雷格
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-10 16:19:36

PK11_GenerateRandom()函数的来源:http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/pk11wrap/pk11slot.c#2285

根据我的计算,-8023对应误差SEC_ERROR_PKCS11_DEVICE_ERROR

原因(感谢jariq的提示)在这里描述:bug.cgi?id=331096

在过去,分叉和继续使用PKCS11函数是可以的。他们决定不能这样做,现在的结论是,如果孩子在分叉后被期望使用这些函数,家长就不应该初始化这些函数。

PKCS11内部函数正在检查是否存在分叉(它们使用各种方法依赖于构建代码的平台)。例如,它们将进程的pid存储在内部内存中,并且在一些昂贵的函数中或调用不经常,它们将保存的pid与当前的getpid()进行比较。

解决我们的问题需要重新设计代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22303198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档