diff options
Diffstat (limited to 'Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash')
4 files changed, 641 insertions, 0 deletions
diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/binding.gyp b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/binding.gyp new file mode 100644 index 000000000..642c33cb3 --- /dev/null +++ b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/binding.gyp @@ -0,0 +1,29 @@ +{ + "targets": + [{ + "target_name": "ethash", + "sources": [ + './ethash.cc', + '../libethash/ethash.h', + '../libethash/util.c', + '../libethash/util.h', + '../libethash/blum_blum_shub.h', + '../libethash/blum_blum_shub.c', + '../libethash/sha3.h', + '../libethash/sha3.c', + '../libethash/internal.h', + '../libethash/internal.c' + ], + "include_dirs": [ + "../", + "<!(node -e \"require('nan')\")" + ], + "cflags": [ + "-Wall", + "-Wno-maybe-uninitialized", + "-Wno-uninitialized", + "-Wno-unused-function", + "-Wextra" + ] + }] +} diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/ethash.cc b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/ethash.cc new file mode 100644 index 000000000..6ab9730be --- /dev/null +++ b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/ethash.cc @@ -0,0 +1,587 @@ +#include <nan.h> +#include <iostream> +#include <node.h> +#include <stdint.h> +#include <stdlib.h> +#include "../libethash/ethash.h" + +using namespace v8; + +class EthashValidator : public NanAsyncWorker { + public: + // Constructor + EthashValidator(NanCallback *callback, const unsigned blocknumber, const unsigned char * seed) + : NanAsyncWorker(callback), blocknumber(blocknumber), seed(seed) {} + // Destructor + ~EthashValidator() { + free(this->cache); + free(this->params); + } + + // Executed inside the worker-thread. + // It is not safe to access V8, or V8 data structures + // here, so everything we need for input and output + // should go on `this`. + void Execute () { + + /* this->result = secp256k1_ecdsa_sign(this->msg, this->sig , &this->sig_len, this->pk, NULL, NULL); */ + } + + // Executed when the async work is complete + // this function will be run inside the main event loop + // so it is safe to use V8 again + void HandleOKCallback () { + NanScope(); + Handle<Value> argv[] = { + NanNew<Number>(this->result) + }; + callback->Call(2, argv); + } + + protected: + const unsigned blocknumber; + const unsigned char * seed; + ethash_params * params; + ethash_cache * cache; + bool result; + bool ready = 0; +}; + +/* class CompactSignWorker : public SignWorker { */ +/* public: */ +/* CompactSignWorker(NanCallback *callback, const unsigned char *msg, const unsigned char *pk ) */ +/* : SignWorker(callback, msg, pk){} */ + +/* void Execute () { */ +/* this->result = secp256k1_ecdsa_sign_compact(this->msg, this->sig , this->pk, NULL, NULL, &this->sig_len); */ +/* } */ + +/* void HandleOKCallback () { */ +/* NanScope(); */ +/* Handle<Value> argv[] = { */ +/* NanNew<Number>(this->result), */ +/* NanNewBufferHandle((char *)this->sig, 64), */ +/* NanNew<Number>(this->sig_len) */ +/* }; */ +/* callback->Call(3, argv); */ +/* } */ +/* }; */ + +/* class RecoverWorker : public NanAsyncWorker { */ +/* public: */ +/* // Constructor */ +/* RecoverWorker(NanCallback *callback, const unsigned char *msg, const unsigned char *sig, int compressed, int rec_id) */ +/* : NanAsyncWorker(callback), msg(msg), sig(sig), compressed(compressed), rec_id(rec_id) {} */ +/* // Destructor */ +/* ~RecoverWorker() {} */ + +/* void Execute () { */ +/* if(this->compressed == 1){ */ +/* this->pubkey = new unsigned char[33]; */ +/* }else{ */ +/* this->pubkey = new unsigned char[65]; */ +/* } */ + +/* this->result = secp256k1_ecdsa_recover_compact(this->msg, this->sig, this->pubkey, &this->pubkey_len, this->compressed, this->rec_id); */ +/* } */ + +/* void HandleOKCallback () { */ +/* NanScope(); */ +/* Handle<Value> argv[] = { */ +/* NanNew<Number>(this->result), */ +/* NanNewBufferHandle((char *)this->pubkey, this->pubkey_len) */ +/* }; */ +/* callback->Call(2, argv); */ +/* } */ + +/* protected: */ +/* const unsigned char * msg; */ +/* const unsigned char * sig; */ +/* int compressed; */ +/* int rec_id; */ +/* int result; */ +/* unsigned char * pubkey; */ +/* int pubkey_len; */ +/* }; */ + +/* class VerifyWorker : public NanAsyncWorker { */ +/* public: */ +/* // Constructor */ +/* VerifyWorker(NanCallback *callback, const unsigned char *msg, const unsigned char *sig, int sig_len, const unsigned char *pub_key, int pub_key_len) */ +/* : NanAsyncWorker(callback), msg(msg), sig(sig), sig_len(sig_len), pub_key(pub_key), pub_key_len(pub_key_len) {} */ +/* // Destructor */ +/* ~VerifyWorker() {} */ + +/* void Execute () { */ +/* this->result = secp256k1_ecdsa_verify(this->msg, this->sig, this->sig_len, this->pub_key, this->pub_key_len); */ +/* } */ + +/* void HandleOKCallback () { */ +/* NanScope(); */ +/* Handle<Value> argv[] = { */ +/* NanNew<Number>(this->result), */ +/* }; */ +/* callback->Call(1, argv); */ +/* } */ + +/* protected: */ +/* int result; */ +/* const unsigned char * msg; */ +/* const unsigned char * sig; */ +/* int sig_len; */ +/* const unsigned char * pub_key; */ +/* int pub_key_len; */ +/* }; */ + +/* NAN_METHOD(Verify){ */ +/* NanScope(); */ + +/* Local<Object> pub_buf = args[0].As<Object>(); */ +/* const unsigned char *pub_data = (unsigned char *) node::Buffer::Data(pub_buf); */ +/* int pub_len = node::Buffer::Length(args[0]); */ + +/* Local<Object> msg_buf = args[1].As<Object>(); */ +/* const unsigned char *msg_data = (unsigned char *) node::Buffer::Data(msg_buf); */ + +/* Local<Object> sig_buf = args[2].As<Object>(); */ +/* const unsigned char *sig_data = (unsigned char *) node::Buffer::Data(sig_buf); */ +/* int sig_len = node::Buffer::Length(args[2]); */ + +/* int result = secp256k1_ecdsa_verify(msg_data, sig_data, sig_len, pub_data, pub_len ); */ + +/* NanReturnValue(NanNew<Number>(result)); */ +/* } */ + +/* NAN_METHOD(Verify_Async){ */ +/* NanScope(); */ + +/* Local<Object> pub_buf = args[0].As<Object>(); */ +/* const unsigned char *pub_data = (unsigned char *) node::Buffer::Data(pub_buf); */ +/* int pub_len = node::Buffer::Length(args[0]); */ + +/* Local<Object> msg_buf = args[1].As<Object>(); */ +/* const unsigned char *msg_data = (unsigned char *) node::Buffer::Data(msg_buf); */ + +/* Local<Object> sig_buf = args[2].As<Object>(); */ +/* const unsigned char *sig_data = (unsigned char *) node::Buffer::Data(sig_buf); */ +/* int sig_len = node::Buffer::Length(args[2]); */ + +/* Local<Function> callback = args[3].As<Function>(); */ +/* NanCallback* nanCallback = new NanCallback(callback); */ + +/* VerifyWorker* worker = new VerifyWorker(nanCallback, msg_data, sig_data, sig_len, pub_data, pub_len); */ +/* NanAsyncQueueWorker(worker); */ + +/* NanReturnUndefined(); */ +/* } */ + +/* NAN_METHOD(Sign){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Local<Object> pk_buf = args[0].As<Object>(); */ +/* const unsigned char *pk_data = (unsigned char *) node::Buffer::Data(pk_buf); */ +/* int sec_len = node::Buffer::Length(args[0]); */ +/* //the second argument is the message that we are signing */ +/* Local<Object> msg_buf = args[1].As<Object>(); */ +/* const unsigned char *msg_data = (unsigned char *) node::Buffer::Data(msg_buf); */ + +/* unsigned char sig[72]; */ +/* int sig_len = 72; */ +/* int msg_len = node::Buffer::Length(args[1]); */ + +/* if(sec_len != 32){ */ +/* return NanThrowError("the secret key needs tobe 32 bytes"); */ +/* } */ + +/* if(msg_len == 0){ */ +/* return NanThrowError("messgae cannot be null"); */ +/* } */ + +/* int result = secp256k1_ecdsa_sign(msg_data, sig , &sig_len, pk_data, NULL, NULL); */ + +/* if(result == 1){ */ +/* NanReturnValue(NanNewBufferHandle((char *)sig, sig_len)); */ +/* }else{ */ +/* return NanThrowError("nonce invalid, try another one"); */ +/* } */ +/* } */ + +/* NAN_METHOD(Sign_Async){ */ + +/* NanScope(); */ +/* //the first argument should be the private key as a buffer */ +/* Local<Object> sec_buf = args[0].As<Object>(); */ +/* const unsigned char *sec_data = (unsigned char *) node::Buffer::Data(sec_buf); */ +/* int sec_len = node::Buffer::Length(args[0]); */ +/* //the second argument is the message that we are signing */ +/* Local<Object> msg_buf = args[1].As<Object>(); */ +/* const unsigned char *msg_data = (unsigned char *) node::Buffer::Data(msg_buf); */ + +/* Local<Function> callback = args[2].As<Function>(); */ +/* NanCallback* nanCallback = new NanCallback(callback); */ + +/* int msg_len = node::Buffer::Length(args[1]); */ + +/* if(sec_len != 32){ */ +/* return NanThrowError("the secret key needs tobe 32 bytes"); */ +/* } */ + +/* if(msg_len == 0){ */ +/* return NanThrowError("messgae cannot be null"); */ +/* } */ + +/* SignWorker* worker = new SignWorker(nanCallback, msg_data, sec_data); */ +/* NanAsyncQueueWorker(worker); */ + +/* NanReturnUndefined(); */ +/* } */ + +/* NAN_METHOD(Sign_Compact){ */ + +/* NanScope(); */ + +/* Local<Object> seckey_buf = args[0].As<Object>(); */ +/* const unsigned char *seckey_data = (unsigned char *) node::Buffer::Data(seckey_buf); */ +/* int sec_len = node::Buffer::Length(args[0]); */ + +/* Local<Object> msg_buf = args[1].As<Object>(); */ +/* const unsigned char *msg_data = (unsigned char *) node::Buffer::Data(msg_buf); */ +/* int msg_len = node::Buffer::Length(args[1]); */ + +/* if(sec_len != 32){ */ +/* return NanThrowError("the secret key needs tobe 32 bytes"); */ +/* } */ + +/* if(msg_len == 0){ */ +/* return NanThrowError("messgae cannot be null"); */ +/* } */ + +/* unsigned char sig[64]; */ +/* int rec_id; */ + +/* //TODO: change the nonce */ +/* int valid_nonce = secp256k1_ecdsa_sign_compact(msg_data, sig, seckey_data, NULL, NULL, &rec_id ); */ + +/* Local<Array> array = NanNew<Array>(3); */ +/* array->Set(0, NanNew<Integer>(valid_nonce)); */ +/* array->Set(1, NanNew<Integer>(rec_id)); */ +/* array->Set(2, NanNewBufferHandle((char *)sig, 64)); */ + +/* NanReturnValue(array); */ +/* } */ + +/* NAN_METHOD(Sign_Compact_Async){ */ +/* NanScope(); */ +/* //the first argument should be the private key as a buffer */ +/* Local<Object> sec_buf = args[0].As<Object>(); */ +/* const unsigned char *sec_data = (unsigned char *) node::Buffer::Data(sec_buf); */ +/* int sec_len = node::Buffer::Length(args[0]); */ + +/* //the second argument is the message that we are signing */ +/* Local<Object> msg_buf = args[1].As<Object>(); */ +/* const unsigned char *msg_data = (unsigned char *) node::Buffer::Data(msg_buf); */ + + +/* Local<Function> callback = args[2].As<Function>(); */ +/* NanCallback* nanCallback = new NanCallback(callback); */ + +/* int msg_len = node::Buffer::Length(args[1]); */ + +/* if(sec_len != 32){ */ +/* return NanThrowError("the secret key needs tobe 32 bytes"); */ +/* } */ + +/* if(msg_len == 0){ */ +/* return NanThrowError("messgae cannot be null"); */ +/* } */ + +/* CompactSignWorker* worker = new CompactSignWorker(nanCallback, msg_data, sec_data); */ +/* NanAsyncQueueWorker(worker); */ + +/* NanReturnUndefined(); */ +/* } */ + +/* NAN_METHOD(Recover_Compact){ */ + +/* NanScope(); */ + +/* Local<Object> msg_buf = args[0].As<Object>(); */ +/* const unsigned char *msg = (unsigned char *) node::Buffer::Data(msg_buf); */ +/* int msg_len = node::Buffer::Length(args[0]); */ + +/* Local<Object> sig_buf = args[1].As<Object>(); */ +/* const unsigned char *sig = (unsigned char *) node::Buffer::Data(sig_buf); */ + +/* Local<Number> compressed = args[2].As<Number>(); */ +/* int int_compressed = compressed->IntegerValue(); */ + +/* Local<Number> rec_id = args[3].As<Number>(); */ +/* int int_rec_id = rec_id->IntegerValue(); */ + +/* if(msg_len == 0){ */ +/* return NanThrowError("messgae cannot be null"); */ +/* } */ + +/* unsigned char pubKey[65]; */ + +/* int pubKeyLen; */ + +/* int result = secp256k1_ecdsa_recover_compact(msg, sig, pubKey, &pubKeyLen, int_compressed, int_rec_id); */ +/* if(result == 1){ */ +/* NanReturnValue(NanNewBufferHandle((char *)pubKey, pubKeyLen)); */ +/* }else{ */ + +/* NanReturnValue(NanFalse()); */ +/* } */ +/* } */ + +/* NAN_METHOD(Recover_Compact_Async){ */ + +/* NanScope(); */ + +/* //the message */ +/* Local<Object> msg_buf = args[0].As<Object>(); */ +/* const unsigned char *msg = (unsigned char *) node::Buffer::Data(msg_buf); */ +/* int msg_len = node::Buffer::Length(args[0]); */ + +/* //the signature length */ +/* Local<Object> sig_buf = args[1].As<Object>(); */ +/* const unsigned char *sig = (unsigned char *) node::Buffer::Data(sig_buf); */ +/* //todo sig len needs tobe 64 */ +/* int sig_len = node::Buffer::Length(args[1]); */ + +/* //to compress or not? */ +/* Local<Number> compressed = args[2].As<Number>(); */ +/* int int_compressed = compressed->IntegerValue(); */ + +/* //the rec_id */ +/* Local<Number> rec_id = args[3].As<Number>(); */ +/* int int_rec_id = rec_id->IntegerValue(); */ + +/* //the callback */ +/* Local<Function> callback = args[4].As<Function>(); */ +/* NanCallback* nanCallback = new NanCallback(callback); */ + +/* if(sig_len != 64){ */ +/* return NanThrowError("the signature needs to be 64 bytes"); */ +/* } */ + +/* if(msg_len == 0){ */ +/* return NanThrowError("messgae cannot be null"); */ +/* } */ + +/* RecoverWorker* worker = new RecoverWorker(nanCallback, msg, sig, int_compressed, int_rec_id); */ +/* NanAsyncQueueWorker(worker); */ + +/* NanReturnUndefined(); */ +/* } */ + +/* NAN_METHOD(Seckey_Verify){ */ +/* NanScope(); */ + +/* const unsigned char *data = (const unsigned char*) node::Buffer::Data(args[0]); */ +/* int result = secp256k1_ec_seckey_verify(data); */ +/* NanReturnValue(NanNew<Number>(result)); */ +/* } */ + +/* NAN_METHOD(Pubkey_Verify){ */ + +/* NanScope(); */ + +/* Local<Object> pub_buf = args[0].As<Object>(); */ +/* const unsigned char *pub_key = (unsigned char *) node::Buffer::Data(pub_buf); */ +/* int pub_key_len = node::Buffer::Length(args[0]); */ + +/* int result = secp256k1_ec_pubkey_verify(pub_key, pub_key_len); */ + +/* NanReturnValue(NanNew<Number>(result)); */ +/* } */ + +/* NAN_METHOD(Pubkey_Create){ */ +/* NanScope(); */ + +/* Handle<Object> pk_buf = args[0].As<Object>(); */ +/* const unsigned char *pk_data = (unsigned char *) node::Buffer::Data(pk_buf); */ +/* int pk_len = node::Buffer::Length(args[0]); */ + +/* Local<Number> l_compact = args[1].As<Number>(); */ +/* int compact = l_compact->IntegerValue(); */ +/* int pubKeyLen; */ + +/* if(pk_len != 32){ */ +/* return NanThrowError("the secert key need to be 32 bytes"); */ +/* } */ + +/* unsigned char *pubKey; */ +/* if(compact == 1){ */ +/* pubKey = new unsigned char[33]; */ +/* }else{ */ +/* pubKey = new unsigned char[65]; */ +/* } */ + +/* int results = secp256k1_ec_pubkey_create(pubKey,&pubKeyLen, pk_data, compact ); */ +/* if(results == 0){ */ +/* return NanThrowError("secret was invalid, try again."); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)pubKey, pubKeyLen)); */ +/* } */ +/* } */ + +/* NAN_METHOD(Pubkey_Decompress){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Local<Object> pk_buf = args[0].As<Object>(); */ +/* unsigned char *pk_data = (unsigned char *) node::Buffer::Data(pk_buf); */ + +/* int pk_len = node::Buffer::Length(args[0]); */ + +/* int results = secp256k1_ec_pubkey_decompress(pk_data, &pk_len); */ + +/* if(results == 0){ */ +/* return NanThrowError("invalid public key"); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)pk_data, pk_len)); */ +/* } */ +/* } */ + + +/* NAN_METHOD(Privkey_Import){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Handle<Object> pk_buf = args[0].As<Object>(); */ +/* const unsigned char *pk_data = (unsigned char *) node::Buffer::Data(pk_buf); */ + +/* int pk_len = node::Buffer::Length(args[0]); */ + +/* unsigned char sec_key[32]; */ +/* int results = secp256k1_ec_privkey_import(sec_key, pk_data, pk_len); */ + +/* if(results == 0){ */ +/* return NanThrowError("invalid private key"); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)sec_key, 32)); */ +/* } */ +/* } */ + +/* NAN_METHOD(Privkey_Export){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Handle<Object> sk_buf = args[0].As<Object>(); */ +/* const unsigned char *sk_data = (unsigned char *) node::Buffer::Data(sk_buf); */ + +/* Local<Number> l_compressed = args[1].As<Number>(); */ +/* int compressed = l_compressed->IntegerValue(); */ + +/* unsigned char *privKey; */ +/* int pk_len; */ +/* int results = secp256k1_ec_privkey_export(sk_data, privKey, &pk_len, compressed); */ +/* if(results == 0){ */ +/* return NanThrowError("invalid private key"); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)privKey, pk_len)); */ +/* } */ +/* } */ + +/* NAN_METHOD(Privkey_Tweak_Add){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Handle<Object> sk_buf = args[0].As<Object>(); */ +/* unsigned char *sk = (unsigned char *) node::Buffer::Data(sk_buf); */ + +/* Handle<Object> tweak_buf = args[1].As<Object>(); */ +/* const unsigned char *tweak= (unsigned char *) node::Buffer::Data(tweak_buf); */ + +/* int results = secp256k1_ec_privkey_tweak_add(sk, tweak); */ +/* if(results == 0){ */ +/* return NanThrowError("invalid key"); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)sk, 32)); */ +/* } */ +/* } */ + +/* NAN_METHOD(Privkey_Tweak_Mul){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Handle<Object> sk_buf = args[0].As<Object>(); */ +/* unsigned char *sk = (unsigned char *) node::Buffer::Data(sk_buf); */ + +/* Handle<Object> tweak_buf = args[1].As<Object>(); */ +/* const unsigned char *tweak= (unsigned char *) node::Buffer::Data(tweak_buf); */ + +/* int results = secp256k1_ec_privkey_tweak_mul(sk, tweak); */ +/* if(results == 0){ */ +/* return NanThrowError("invalid key"); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)sk, 32)); */ +/* } */ +/* } */ + +/* NAN_METHOD(Pubkey_Tweak_Add){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Handle<Object> pk_buf = args[0].As<Object>(); */ +/* unsigned char *pk = (unsigned char *) node::Buffer::Data(pk_buf); */ +/* int pk_len = node::Buffer::Length(args[0]); */ + +/* Handle<Object> tweak_buf = args[1].As<Object>(); */ +/* const unsigned char *tweak= (unsigned char *) node::Buffer::Data(tweak_buf); */ + +/* int results = secp256k1_ec_pubkey_tweak_add(pk, pk_len, tweak); */ +/* if(results == 0){ */ +/* return NanThrowError("invalid key"); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)pk, pk_len)); */ +/* } */ +/* } */ + +/* NAN_METHOD(Pubkey_Tweak_Mul){ */ +/* NanScope(); */ + +/* //the first argument should be the private key as a buffer */ +/* Handle<Object> pk_buf = args[0].As<Object>(); */ +/* unsigned char *pk = (unsigned char *) node::Buffer::Data(pk_buf); */ +/* int pk_len = node::Buffer::Length(args[0]); */ + +/* Handle<Object> tweak_buf = args[1].As<Object>(); */ +/* const unsigned char *tweak= (unsigned char *) node::Buffer::Data(tweak_buf); */ + +/* int results = secp256k1_ec_pubkey_tweak_mul(pk, pk_len, tweak); */ +/* if(results == 0){ */ +/* return NanThrowError("invalid key"); */ +/* }else{ */ +/* NanReturnValue(NanNewBufferHandle((char *)pk, pk_len)); */ +/* } */ +/* } */ + +void Init(Handle<Object> exports) { + + /* secp256k1_start(SECP256K1_START_SIGN | SECP256K1_START_VERIFY); */ + /* exports->Set(NanNew("seckeyVerify"), NanNew<FunctionTemplate>(Seckey_Verify)->GetFunction()); */ + /* exports->Set(NanNew("sign"), NanNew<FunctionTemplate>(Sign)->GetFunction()); */ + /* exports->Set(NanNew("signAsync"), NanNew<FunctionTemplate>(Sign_Async)->GetFunction()); */ + /* exports->Set(NanNew("signCompact"), NanNew<FunctionTemplate>(Sign_Compact)->GetFunction()); */ + /* exports->Set(NanNew("signCompactAsync"), NanNew<FunctionTemplate>(Sign_Compact_Async)->GetFunction()); */ + /* exports->Set(NanNew("recoverCompact"), NanNew<FunctionTemplate>(Recover_Compact)->GetFunction()); */ + /* exports->Set(NanNew("recoverCompactAsync"), NanNew<FunctionTemplate>(Recover_Compact_Async)->GetFunction()); */ + /* exports->Set(NanNew("verify"), NanNew<FunctionTemplate>(Verify)->GetFunction()); */ + /* exports->Set(NanNew("verifyAsync"), NanNew<FunctionTemplate>(Verify_Async)->GetFunction()); */ + /* exports->Set(NanNew("secKeyVerify"), NanNew<FunctionTemplate>(Seckey_Verify)->GetFunction()); */ + /* exports->Set(NanNew("pubKeyVerify"), NanNew<FunctionTemplate>(Pubkey_Verify)->GetFunction()); */ + /* exports->Set(NanNew("pubKeyCreate"), NanNew<FunctionTemplate>(Pubkey_Create)->GetFunction()); */ + /* exports->Set(NanNew("pubKeyDecompress"), NanNew<FunctionTemplate>(Pubkey_Decompress)->GetFunction()); */ + /* exports->Set(NanNew("privKeyExport"), NanNew<FunctionTemplate>(Privkey_Export)->GetFunction()); */ + /* exports->Set(NanNew("privKeyImport"), NanNew<FunctionTemplate>(Privkey_Import)->GetFunction()); */ + /* exports->Set(NanNew("privKeyTweakAdd"), NanNew<FunctionTemplate>(Privkey_Tweak_Add)->GetFunction()); */ + /* exports->Set(NanNew("privKeyTweakMul"), NanNew<FunctionTemplate>(Privkey_Tweak_Mul)->GetFunction()); */ + /* exports->Set(NanNew("pubKeyTweakAdd"), NanNew<FunctionTemplate>(Privkey_Tweak_Add)->GetFunction()); */ + /* exports->Set(NanNew("pubKeyTweakMul"), NanNew<FunctionTemplate>(Privkey_Tweak_Mul)->GetFunction()); */ +} + +NODE_MODULE(secp256k1, Init) diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/package.json b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/package.json new file mode 100644 index 000000000..690ea3263 --- /dev/null +++ b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/package.json @@ -0,0 +1,13 @@ +{ + "name": "node-ethash", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "install": "node-gyp rebuild" + }, + "author": "", + "license": "ISC", + "gypfile": true +} diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/readme.md b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/readme.md new file mode 100644 index 000000000..bb46cdd6e --- /dev/null +++ b/Godeps/_workspace/src/github.com/ethereum/ethash/node-ethash/readme.md @@ -0,0 +1,12 @@ +# To Develop +`npm install -g node-gyp` +`npm install .` + + +# To rebuild +`node-gyp rebuild` + + +# notes + +nan is good https://github.com/rvagg/nan |