@@ -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