Skip to content

Commit 1d9aa7a

Browse files
committed
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.
1 parent a4b9c58 commit 1d9aa7a

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
@@ -324,7 +324,7 @@ Sign.prototype.sign = function sign(options, encoding) {
324324
}
325325
}
326326

327-
var ret = this._handle.sign(toBuf(key), null, passphrase, rsaPadding,
327+
var ret = this._handle.sign(toBuf(key), passphrase, rsaPadding,
328328
pssSaltLength);
329329

330330
encoding = encoding || exports.DEFAULT_ENCODING;
@@ -374,7 +374,7 @@ Verify.prototype.verify = function verify(options, signature, sigEncoding) {
374374
}
375375
}
376376

377-
return this._handle.verify(toBuf(key), toBuf(signature, sigEncoding), null,
377+
return this._handle.verify(toBuf(key), toBuf(signature, sigEncoding),
378378
rsaPadding, pssSaltLength);
379379
};
380380

src/node_crypto.cc

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

42004200
unsigned int len = args.Length();
4201-
enum encoding encoding = BUFFER;
4202-
if (len >= 2) {
4203-
encoding = ParseEncoding(env->isolate(), args[1], BUFFER);
4204-
}
42054201

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

42084204
THROW_AND_RETURN_IF_NOT_BUFFER(args[0], "Data");
42094205
size_t buf_len = Buffer::Length(args[0]);
42104206
char* buf = Buffer::Data(args[0]);
42114207

4212-
CHECK(args[3]->IsInt32());
4213-
Maybe<int32_t> maybe_padding = args[3]->Int32Value(env->context());
4208+
CHECK(args[2]->IsInt32());
4209+
Maybe<int32_t> maybe_padding = args[2]->Int32Value(env->context());
42144210
CHECK(maybe_padding.IsJust());
42154211
int padding = maybe_padding.ToChecked();
42164212

4217-
CHECK(args[4]->IsInt32());
4218-
Maybe<int32_t> maybe_salt_len = args[4]->Int32Value(env->context());
4213+
CHECK(args[3]->IsInt32());
4214+
Maybe<int32_t> maybe_salt_len = args[3]->Int32Value(env->context());
42194215
CHECK(maybe_salt_len.IsJust());
42204216
int salt_len = maybe_salt_len.ToChecked();
42214217

@@ -4228,7 +4224,7 @@ void Sign::SignFinal(const FunctionCallbackInfo<Value>& args) {
42284224
Error err = sign->SignFinal(
42294225
buf,
42304226
buf_len,
4231-
len >= 3 && !args[2]->IsNull() ? *passphrase : nullptr,
4227+
len >= 2 && !args[1]->IsNull() ? *passphrase : nullptr,
42324228
&md_value,
42334229
&md_len,
42344230
padding,
@@ -4240,10 +4236,9 @@ void Sign::SignFinal(const FunctionCallbackInfo<Value>& args) {
42404236
return sign->CheckThrow(err);
42414237
}
42424238

4243-
Local<Value> rc = StringBytes::Encode(env->isolate(),
4244-
reinterpret_cast<const char*>(md_value),
4245-
md_len,
4246-
encoding);
4239+
Local<Object> rc = Buffer::Copy(env->isolate(),
4240+
reinterpret_cast<const char*>(md_value),
4241+
md_len).ToLocalChecked();
42474242
delete[] md_value;
42484243
args.GetReturnValue().Set(rc);
42494244
}
@@ -4446,42 +4441,22 @@ void Verify::VerifyFinal(const FunctionCallbackInfo<Value>& args) {
44464441

44474442
THROW_AND_RETURN_IF_NOT_STRING_OR_BUFFER(args[1], "Hash");
44484443

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

4470-
CHECK(args[3]->IsInt32());
4471-
Maybe<int32_t> maybe_padding = args[3]->Int32Value(env->context());
4447+
CHECK(args[2]->IsInt32());
4448+
Maybe<int32_t> maybe_padding = args[2]->Int32Value(env->context());
44724449
CHECK(maybe_padding.IsJust());
44734450
int padding = maybe_padding.ToChecked();
44744451

4475-
CHECK(args[4]->IsInt32());
4476-
Maybe<int32_t> maybe_salt_len = args[4]->Int32Value(env->context());
4452+
CHECK(args[3]->IsInt32());
4453+
Maybe<int32_t> maybe_salt_len = args[3]->Int32Value(env->context());
44774454
CHECK(maybe_salt_len.IsJust());
44784455
int salt_len = maybe_salt_len.ToChecked();
44794456

44804457
bool verify_result;
44814458
Error err = verify->VerifyFinal(kbuf, klen, hbuf, hlen, padding, salt_len,
44824459
&verify_result);
4483-
if (args[1]->IsString())
4484-
delete[] hbuf;
44854460
if (err != kSignOk)
44864461
return verify->CheckThrow(err);
44874462
args.GetReturnValue().Set(verify_result);

0 commit comments

Comments
 (0)