@@ -5310,9 +5310,15 @@ class PBKDF2Request : public AsyncWrap {
5310
5310
5311
5311
size_t self_size () const override { return sizeof (*this ); }
5312
5312
5313
- uv_work_t work_req_;
5313
+ static void Work (uv_work_t * work_req);
5314
+ void Work ();
5315
+
5316
+ static void After (uv_work_t * work_req, int status);
5317
+ void After (Local<Value> argv[2 ]);
5318
+ void After ();
5314
5319
5315
5320
private:
5321
+ uv_work_t work_req_;
5316
5322
const EVP_MD* digest_;
5317
5323
int error_;
5318
5324
int passlen_;
@@ -5325,48 +5331,52 @@ class PBKDF2Request : public AsyncWrap {
5325
5331
};
5326
5332
5327
5333
5328
- void EIO_PBKDF2 ( PBKDF2Request* req ) {
5329
- req-> set_error (PKCS5_PBKDF2_HMAC (
5330
- req-> pass (),
5331
- req-> passlen (),
5332
- reinterpret_cast <unsigned char *>(req-> salt ()),
5333
- req-> saltlen (),
5334
- req-> iter (),
5335
- req-> digest (),
5336
- req-> keylen (),
5337
- reinterpret_cast <unsigned char *>(req-> key ())));
5338
- OPENSSL_cleanse (req-> pass (), req-> passlen ());
5339
- OPENSSL_cleanse (req-> salt (), req-> saltlen ());
5334
+ void PBKDF2Request::Work ( ) {
5335
+ set_error (PKCS5_PBKDF2_HMAC (
5336
+ pass (),
5337
+ passlen (),
5338
+ reinterpret_cast <unsigned char *>(salt ()),
5339
+ saltlen (),
5340
+ iter (),
5341
+ digest (),
5342
+ keylen (),
5343
+ reinterpret_cast <unsigned char *>(key ())));
5344
+ OPENSSL_cleanse (pass (), passlen ());
5345
+ OPENSSL_cleanse (salt (), saltlen ());
5340
5346
}
5341
5347
5342
5348
5343
- void EIO_PBKDF2 (uv_work_t * work_req) {
5349
+ void PBKDF2Request::Work (uv_work_t * work_req) {
5344
5350
PBKDF2Request* req = ContainerOf (&PBKDF2Request::work_req_, work_req);
5345
- EIO_PBKDF2 ( req);
5351
+ req-> Work ( );
5346
5352
}
5347
5353
5348
5354
5349
- void EIO_PBKDF2After ( PBKDF2Request* req, Local<Value> argv[2 ]) {
5350
- if (req-> error ()) {
5351
- argv[0 ] = Undefined (req-> env ()->isolate ());
5352
- argv[1 ] = Encode (req-> env ()->isolate (), req-> key (), req-> keylen (), BUFFER);
5353
- OPENSSL_cleanse (req-> key (), req-> keylen ());
5355
+ void PBKDF2Request::After ( Local<Value> argv[2 ]) {
5356
+ if (error ()) {
5357
+ argv[0 ] = Undefined (env ()->isolate ());
5358
+ argv[1 ] = Encode (env ()->isolate (), key (), keylen (), BUFFER);
5359
+ OPENSSL_cleanse (key (), keylen ());
5354
5360
} else {
5355
- argv[0 ] = Exception::Error (req-> env ()->pbkdf2_error_string ());
5356
- argv[1 ] = Undefined (req-> env ()->isolate ());
5361
+ argv[0 ] = Exception::Error (env ()->pbkdf2_error_string ());
5362
+ argv[1 ] = Undefined (env ()->isolate ());
5357
5363
}
5358
5364
}
5359
5365
5360
5366
5361
- void EIO_PBKDF2After (uv_work_t * work_req, int status) {
5367
+ void PBKDF2Request::After () {
5368
+ HandleScope handle_scope (env ()->isolate ());
5369
+ Context::Scope context_scope (env ()->context ());
5370
+ Local<Value> argv[2 ];
5371
+ After (argv);
5372
+ MakeCallback (env ()->ondone_string (), arraysize (argv), argv);
5373
+ }
5374
+
5375
+
5376
+ void PBKDF2Request::After (uv_work_t * work_req, int status) {
5362
5377
CHECK_EQ (status, 0 );
5363
5378
PBKDF2Request* req = ContainerOf (&PBKDF2Request::work_req_, work_req);
5364
- Environment* env = req->env ();
5365
- HandleScope handle_scope (env->isolate ());
5366
- Context::Scope context_scope (env->context ());
5367
- Local<Value> argv[2 ];
5368
- EIO_PBKDF2After (req, argv);
5369
- req->MakeCallback (env->ondone_string (), arraysize (argv), argv);
5379
+ req->After ();
5370
5380
delete req;
5371
5381
}
5372
5382
@@ -5469,14 +5479,13 @@ void PBKDF2(const FunctionCallbackInfo<Value>& args) {
5469
5479
obj->Set (env->domain_string (), env->domain_array ()->Get (0 ));
5470
5480
uv_queue_work (env->event_loop (),
5471
5481
req->work_req (),
5472
- EIO_PBKDF2 ,
5473
- EIO_PBKDF2After );
5482
+ PBKDF2Request::Work ,
5483
+ PBKDF2Request::After );
5474
5484
} else {
5475
5485
env->PrintSyncTrace ();
5486
+ req->Work ();
5476
5487
Local<Value> argv[2 ];
5477
- EIO_PBKDF2 (req);
5478
- EIO_PBKDF2After (req, argv);
5479
-
5488
+ req->After (argv);
5480
5489
delete req;
5481
5490
5482
5491
if (argv[0 ]->IsObject ())
0 commit comments