Skip to content

Commit eaa0542

Browse files
tniessenjasnell
authored andcommitted
crypto: remove unused C++ parameter in sign/verify
Removes code in node_crypto.cc in Sign::SignFinal and Verify::VerifyFinal which allowed to convert between buffers and strings based on given encodings. The code is unused as crypto.js only passes in and expects buffers and does the conversion itself. The encoding parameter was removed from both methods. PR-URL: #12397 Reviewed-By: Sam Roberts <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 9e26347 commit eaa0542

File tree

2 files changed

+17
-42
lines changed

2 files changed

+17
-42
lines changed

lib/crypto.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ Sign.prototype.sign = function sign(options, encoding) {
326326
}
327327
}
328328

329-
var ret = this._handle.sign(toBuf(key), null, passphrase, rsaPadding,
329+
var ret = this._handle.sign(toBuf(key), passphrase, rsaPadding,
330330
pssSaltLength);
331331

332332
encoding = encoding || exports.DEFAULT_ENCODING;
@@ -376,7 +376,7 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) {
376376
}
377377
}
378378

379-
return this._handle.verify(toBuf(key), toBuf(signature, sigEncoding), null,
379+
return this._handle.verify(toBuf(key), toBuf(signature, sigEncoding),
380380
rsaPadding, pssSaltLength);
381381
};
382382

src/node_crypto.cc

+15-40
Original file line numberDiff line numberDiff line change
@@ -4194,24 +4194,20 @@ void Sign::SignFinal(const FunctionCallbackInfo<Value>& args) {
41944194
unsigned int md_len;
41954195

41964196
unsigned int len = args.Length();
4197-
enum encoding encoding = BUFFER;
4198-
if (len >= 2) {
4199-
encoding = ParseEncoding(env->isolate(), args[1], BUFFER);
4200-
}
42014197

4202-
node::Utf8Value passphrase(env->isolate(), args[2]);
4198+
node::Utf8Value passphrase(env->isolate(), args[1]);
42034199

42044200
THROW_AND_RETURN_IF_NOT_BUFFER(args[0], "Data");
42054201
size_t buf_len = Buffer::Length(args[0]);
42064202
char* buf = Buffer::Data(args[0]);
42074203

4208-
CHECK(args[3]->IsInt32());
4209-
Maybe<int32_t> maybe_padding = args[3]->Int32Value(env->context());
4204+
CHECK(args[2]->IsInt32());
4205+
Maybe<int32_t> maybe_padding = args[2]->Int32Value(env->context());
42104206
CHECK(maybe_padding.IsJust());
42114207
int padding = maybe_padding.ToChecked();
42124208

4213-
CHECK(args[4]->IsInt32());
4214-
Maybe<int32_t> maybe_salt_len = args[4]->Int32Value(env->context());
4209+
CHECK(args[3]->IsInt32());
4210+
Maybe<int32_t> maybe_salt_len = args[3]->Int32Value(env->context());
42154211
CHECK(maybe_salt_len.IsJust());
42164212
int salt_len = maybe_salt_len.ToChecked();
42174213

@@ -4224,7 +4220,7 @@ void Sign::SignFinal(const FunctionCallbackInfo<Value>& args) {
42244220
Error err = sign->SignFinal(
42254221
buf,
42264222
buf_len,
4227-
len >= 3 && !args[2]->IsNull() ? *passphrase : nullptr,
4223+
len >= 2 && !args[1]->IsNull() ? *passphrase : nullptr,
42284224
&md_value,
42294225
&md_len,
42304226
padding,
@@ -4236,10 +4232,9 @@ void Sign::SignFinal(const FunctionCallbackInfo<Value>& args) {
42364232
return sign->CheckThrow(err);
42374233
}
42384234

4239-
Local<Value> rc = StringBytes::Encode(env->isolate(),
4240-
reinterpret_cast<const char*>(md_value),
4241-
md_len,
4242-
encoding);
4235+
Local<Object> rc = Buffer::Copy(env->isolate(),
4236+
reinterpret_cast<const char*>(md_value),
4237+
md_len).ToLocalChecked();
42434238
delete[] md_value;
42444239
args.GetReturnValue().Set(rc);
42454240
}
@@ -4442,42 +4437,22 @@ void Verify::VerifyFinal(const FunctionCallbackInfo<Value>& args) {
44424437

44434438
THROW_AND_RETURN_IF_NOT_STRING_OR_BUFFER(args[1], "Hash");
44444439

4445-
enum encoding encoding = UTF8;
4446-
if (args.Length() >= 3) {
4447-
encoding = ParseEncoding(env->isolate(), args[2], UTF8);
4448-
}
4449-
4450-
ssize_t hlen = StringBytes::Size(env->isolate(), args[1], encoding);
4451-
4452-
// only copy if we need to, because it's a string.
4453-
char* hbuf;
4454-
if (args[1]->IsString()) {
4455-
hbuf = new char[hlen];
4456-
ssize_t hwritten = StringBytes::Write(env->isolate(),
4457-
hbuf,
4458-
hlen,
4459-
args[1],
4460-
encoding);
4461-
CHECK_EQ(hwritten, hlen);
4462-
} else {
4463-
hbuf = Buffer::Data(args[1]);
4464-
}
4440+
char* hbuf = Buffer::Data(args[1]);
4441+
ssize_t hlen = Buffer::Length(args[1]);
44654442

4466-
CHECK(args[3]->IsInt32());
4467-
Maybe<int32_t> maybe_padding = args[3]->Int32Value(env->context());
4443+
CHECK(args[2]->IsInt32());
4444+
Maybe<int32_t> maybe_padding = args[2]->Int32Value(env->context());
44684445
CHECK(maybe_padding.IsJust());
44694446
int padding = maybe_padding.ToChecked();
44704447

4471-
CHECK(args[4]->IsInt32());
4472-
Maybe<int32_t> maybe_salt_len = args[4]->Int32Value(env->context());
4448+
CHECK(args[3]->IsInt32());
4449+
Maybe<int32_t> maybe_salt_len = args[3]->Int32Value(env->context());
44734450
CHECK(maybe_salt_len.IsJust());
44744451
int salt_len = maybe_salt_len.ToChecked();
44754452

44764453
bool verify_result;
44774454
Error err = verify->VerifyFinal(kbuf, klen, hbuf, hlen, padding, salt_len,
44784455
&verify_result);
4479-
if (args[1]->IsString())
4480-
delete[] hbuf;
44814456
if (err != kSignOk)
44824457
return verify->CheckThrow(err);
44834458
args.GetReturnValue().Set(verify_result);

0 commit comments

Comments
 (0)