pkcs11_softtoken_extra 的 montmul_vt.c 部分中的“断言失败:n->len

pkcs11_softtoken_extra 的 montmul_vt.c 部分中的“断言失败:n->len

我的 Java 应用程序与以下设备建立 SSL 连接https://domains.live.com:443。将我的应用程序从 Solaris 9 移至 Solaris 10 时,这些 SSL 连接尝试导致 Solaris 库中出现断言错误:

Assertion failed: n->len <= 32, file /on10/build-nd/F10U10B17/usr/src/common/bignum/sun4v/montmul_vt.c, line 437

事实证明这不是 Java 问题。我设法解决了这个问题,但问题太模糊了,我想在这里提供答案,以造福 Google 和下一个人。

从核心文件来看,错误在于此处:

-----------------  lwp# 1 / thread# 1  --------------------
 ff2ce364 _lwp_kill (6, 0, ff3350c0, ff2ad954, ffffffff, 6) + 8
 ff242910 abort    (ffbfb4d8, 1, 0, edbe0, ff333558, 0) + 110
 ff242b4c _assert  (b34dca18, b34dca28, 1b5, b34f049c, ed8fc, ff257cd4) + 64
 b34d6338 big_mont_mul_yf (ffbfbadc, ffbfbd5c, ffbfc214, 1121754, 49c5d7f1, 40) +                0d10 big_mont_conv (ffbfc19c, ffbfc214, 1121754, 49c5d7f1, d54e0049, ffbfbd5c) + d4
 b34d1e68 big_modexp (ffbfc214, ffbfc214, 112177c, 1121754, ffbfbd5c, 0) + 138
 b34aaa10 soft_rsa_encrypt (112177c, 1236550, 200, ffbfca94, 1121728, 1121148) + 15c
 b34ab6b0 soft_rsa_verify_common (1121140, b538c8, 23, 1236550, 200, 1) + 60
 b3498ab8 C_Verify (1121140, b538c8, 23, 1236550, 200, 7) + 154
 b389a0a4 Java_sun_security_pkcs11_wrapper_PKCS11_C_1Verify (36594, ffbfd2dc,         b36b8ad0, 1121140, ffbfd2d0, ffbfd2cc) + 5c
 f8c0c280 * sun/security/pkcs11/wrapper/PKCS11.C_Verify(J[B[B)V+0

在核心文件上使用“pldd”,然后将其通过“/usr/ccs/bin/nm”,库文件被确定为:

/usr/lib/security/pkcs11_softtoken_extra.so.1

答案1

这确实是 PKCS#11 软令牌库中的一个问题。

该问题已在 bug 15707130/7033814(新/旧号码)下修复。

要修复该问题,您需要获取修复 15707130/7033814 的补丁。Solaris 10u11 已经包含该修复程序。

答案2

serverfault 上的另一个答案(Solaris 区域中的强加密) 建议禁用“softtoken_extra”作为不相关问题的解决方案。禁用它也为我解决了这个问题:

cryptoadm disable \
    provider=/usr/lib/security/\$ISA/pkcs11_softtoken_extra.so \
    mechanism=all

重新打开后,每次都会重现“断言失败”错误

相关内容