crypto: make pbkdf2() compatible with domains

This commit is contained in:
Ben Noordhuis 2012-09-03 23:15:30 +02:00
parent d1eff9ab68
commit 7d0543c128
2 changed files with 9 additions and 9 deletions

View File

@ -4201,7 +4201,7 @@ struct pbkdf2_req {
size_t iter; size_t iter;
char* key; char* key;
size_t keylen; size_t keylen;
Persistent<Function> callback; Persistent<Object> obj;
}; };
void void
@ -4236,16 +4236,13 @@ EIO_PBKDF2After(uv_work_t* req) {
argv[1] = Local<Value>::New(Undefined()); argv[1] = Local<Value>::New(Undefined());
} }
// XXX There should be an object connected to this that MakeCallback(request->obj, "ondone", ARRAY_SIZE(argv), argv);
// we can attach a domain onto.
MakeCallback(Context::GetCurrent()->Global(),
request->callback,
ARRAY_SIZE(argv), argv);
delete[] request->pass; delete[] request->pass;
delete[] request->salt; delete[] request->salt;
delete[] request->key; delete[] request->key;
request->callback.Dispose(); request->obj.Dispose();
request->obj.Clear();
delete request; delete request;
} }
@ -4267,6 +4264,7 @@ PBKDF2(const Arguments& args) {
Local<Function> callback; Local<Function> callback;
pbkdf2_req* request = NULL; pbkdf2_req* request = NULL;
uv_work_t* req = NULL; uv_work_t* req = NULL;
Persistent<Object> obj;
if (args.Length() != 5) { if (args.Length() != 5) {
type_error = "Bad parameter"; type_error = "Bad parameter";
@ -4324,7 +4322,8 @@ PBKDF2(const Arguments& args) {
goto err; goto err;
} }
callback = Local<Function>::Cast(args[4]); obj = Persistent<Object>::New(Object::New());
obj->Set(String::New("ondone"), args[4]);
request = new pbkdf2_req; request = new pbkdf2_req;
request->err = 0; request->err = 0;
@ -4335,7 +4334,7 @@ PBKDF2(const Arguments& args) {
request->iter = iter; request->iter = iter;
request->key = key; request->key = key;
request->keylen = keylen; request->keylen = keylen;
request->callback = Persistent<Function>::New(callback); request->obj = obj;
req = new uv_work_t(); req = new uv_work_t();
req->data = request; req->data = request;

View File

@ -34,3 +34,4 @@ crypto.randomBytes(8);
crypto.randomBytes(8, function() {}); crypto.randomBytes(8, function() {});
crypto.pseudoRandomBytes(8); crypto.pseudoRandomBytes(8);
crypto.pseudoRandomBytes(8, function() {}); crypto.pseudoRandomBytes(8, function() {});
crypto.pbkdf2('password', 'salt', 8, 8, function() {});