@@ -332,6 +332,10 @@ void ComputeSecret(const FunctionCallbackInfo<Value>& args) {
332332 }
333333
334334 auto dp = dh.computeSecret (key);
335+ if (!dp) {
336+ return THROW_ERR_CRYPTO_OPERATION_FAILED (env,
337+ " Failed to compute shared secret" );
338+ }
335339
336340 Local<Value> buffer;
337341 if (DataPointerToBuffer (env, std::move (dp)).ToLocal (&buffer)) {
@@ -349,8 +353,8 @@ void SetPublicKey(const FunctionCallbackInfo<Value>& args) {
349353 if (!buf.CheckSizeInt32 ()) [[unlikely]]
350354 return THROW_ERR_OUT_OF_RANGE (env, " buf is too big" );
351355 BignumPointer num (buf.data (), buf.size ());
352- CHECK ( num);
353- CHECK (dh. setPublicKey ( std::move (num)) );
356+ if (! num || !dh. setPublicKey ( std::move (num)))
357+ return THROW_ERR_INVALID_ARG_VALUE (env, " Invalid public key " );
354358}
355359
356360void SetPrivateKey (const FunctionCallbackInfo<Value>& args) {
@@ -363,8 +367,8 @@ void SetPrivateKey(const FunctionCallbackInfo<Value>& args) {
363367 if (!buf.CheckSizeInt32 ()) [[unlikely]]
364368 return THROW_ERR_OUT_OF_RANGE (env, " buf is too big" );
365369 BignumPointer num (buf.data (), buf.size ());
366- CHECK ( num);
367- CHECK (dh. setPrivateKey ( std::move (num)) );
370+ if (! num || !dh. setPrivateKey ( std::move (num)))
371+ return THROW_ERR_INVALID_ARG_VALUE (env, " Invalid private key " );
368372}
369373
370374void Check (const FunctionCallbackInfo<Value>& args) {
0 commit comments