“断言失败:n> len <= 32”在pkcs11_softtoken_extra的montmul_vt.c部分

我的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 

这确实是PKCS#11 softtoken库中的一个问题。

问题已经修复在错误15707130/7033814(新/旧号码)下。

为了解决这个问题,你需要得到一个补丁修复15707130/7033814。 Solaris 10u11已经包含修复程序。

serverfault上的另一个答案( Solaris Zone中的强encryption )build议禁用“softtoken_extra”作为无关问题的解决scheme。 禁用它也解决了我的这个问题:

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

把它重新转载在每个案例中的“断言失败”错误