From: Dmitry Volyntsev Date: Tue, 22 Sep 2026 00:04:12 +0000 (-0700) Subject: Webcrypto: clean up ECDSA conversion failures X-Git-Tag: 1.0.2~28 X-Git-Url: https://git.kaiwu.me/?a=commitdiff_plain;h=9da700ed38bd5198ab9f8a46ea8f1ac2ac18b0d3;p=njs.git Webcrypto: clean up ECDSA conversion failures While here, also report ECDSA signature encoding failures. --- diff --git a/external/njs_webcrypto_module.c b/external/njs_webcrypto_module.c index 46e3973c..1c8afc88 100644 --- a/external/njs_webcrypto_module.c +++ b/external/njs_webcrypto_module.c @@ -4556,25 +4556,20 @@ njs_convert_p1363_to_der(njs_vm_t *vm, EVP_PKEY *pkey, u_char *p1363, goto memory_error; } - r = BN_new(); + r = BN_bin2bn(p1363, n, NULL); if (njs_slow_path(r == NULL)) { goto memory_error; } - s = BN_new(); + s = BN_bin2bn(&p1363[n], n, NULL); if (njs_slow_path(s == NULL)) { + BN_free(r); goto memory_error; } - if (r != BN_bin2bn(p1363, n, r)) { - goto fail; - } - - if (s != BN_bin2bn(&p1363[n], n, s)) { - goto fail; - } - if (njs_ecdsa_sig_set0(ec_sig, r, s) != 1) { + BN_free(r); + BN_free(s); njs_webcrypto_error(vm, "njs_ecdsa_sig_set0() failed"); ret = NJS_ERROR; goto fail; @@ -4589,6 +4584,8 @@ njs_convert_p1363_to_der(njs_vm_t *vm, EVP_PKEY *pkey, u_char *p1363, len = i2d_ECDSA_SIG(ec_sig, &data); if (len < 0) { + njs_webcrypto_error(vm, "i2d_ECDSA_SIG() failed"); + ret = NJS_ERROR; goto fail; } @@ -4611,8 +4608,9 @@ done: memory_error: njs_vm_memory_error(vm); + ret = NJS_ERROR; - return NJS_ERROR; + goto fail; }