<div dir="ltr"><div>Version: openssl 1.0.1u</div><div>OS: RHEL 6.5</div><div>Arch: x86_64 GNU/Linux</div><div><br></div><div><br></div><div>I'm getting a critical error when openssl try to sign the basic response. The overall basic response itself seems fine since openssl can still decode the response if i use -no_signature_verify...</div><div><br></div><div>Without it, i get:</div><div><div>Response Verify Failure</div><div>140479349708456:error:04091077:rsa routines:INT_RSA_VERIFY:wrong signature length:rsa_sign.c:186:</div><div>140479349708456:error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib:a_verify.c:218:</div><div>140479349708456:error:27069075:OCSP routines:OCSP_basic_verify:signature failure:ocsp_vfy.c:105:</div></div><div><br></div><div><br></div><div>Any hint on troubleshooting this would be great. Here is how I call the OCSP_basic_sign:</div><div><br></div><div><div>OCSP_BASICRESP *bresp;</div><div>X509 *signer;</div><div>EVP_PKEY *key;</div></div><div>...<br></div><div><div>OCSP_basic_sign(bresp,</div><div>                    signer, key,</div><div>                    EVP_sha1(),</div><div>                    NULL, 0);</div></div><div><br></div><div>But getting the following error internally from OCSP_basic_sign:</div><div><br></div><div>OPENSSL ERROR: error:0306E06C:bignum routines:BN_mod_inverse:no inverse<br></div><div>OPENSSL ERROR: error:0D0DC006:asn1 encoding routines:ASN1_item_sign_ctx:EVP lib<br></div><div><br></div><div>Running it through dbg, it failed at ASN1_item_sign_ctx In crypto/asn1/a_sign.c</div><div><br></div><div>303    if (!EVP_DigestSignUpdate(ctx, buf_in, inl)</div><div>304        || !EVP_DigestSignFinal(ctx, buf_out, &outl)) {</div><div>305        outl = 0;</div><div>306        ASN1err(ASN1_F_ASN1_ITEM_SIGN_CTX, ERR_R_EVP_LIB);</div><div>307        goto err;</div><div>308    }</div><div><br></div><div><br></div><div>(gdb) print inl</div><div>$1 = 284</div><div>(gdb) print outl<br></div><div>$2 = 256</div><div><div>(gdb) print *ctx</div><div>$4 = {digest = 0x7fb2ecf12b80, engine = 0x0, flags = 0, md_data = 0x7fb2ef1629d0, pctx = 0x7fb2ef162970,</div><div>  update = 0x7fb2ecc2515a <update>}</div><div>(gdb) print *ctx->digest</div><div>$5 = {type = 64, pkey_type = 65, md_size = 20, flags = 12, init = 0x7fb2ecc2513c <init>, update = 0x7fb2ecc2515a <update>,</div><div>  final = 0x7fb2ecc2518b <final>, copy = 0, cleanup = 0, sign = 0x7fb2ecbf0c70 <RSA_sign>, verify = 0x7fb2ecbf1568 <RSA_verify>,</div><div>  required_pkey_type = {6, 19, 0, 0, 0}, block_size = 64, ctx_size = 104, md_ctrl = 0}</div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div>