#ifndef LIBCOIN_SERVER_INCLUDE_ECKEY_H_ #define LIBCOIN_SERVER_INCLUDE_ECKEY_H_ #include #include using namespace v8; using namespace node; namespace bitcoin { class Key : ObjectWrap { private: const char *lastError; EC_KEY *ec; bool isCompressed; bool hasPrivate; bool hasPublic; void Generate(); struct verify_sig_baton_t { // Parameters Key *key; const unsigned char *digest; const unsigned char *sig; int digestLen; int sigLen; Persistent digestBuf; Persistent sigBuf; // Result // -1 = error, 0 = bad sig, 1 = good int result; Persistent cb; }; int VerifySignature(const unsigned char *digest, int digest_len, const unsigned char *sig, int sig_len); static void EIO_VerifySignature(uv_work_t *req); ECDSA_SIG *Sign(const unsigned char *digest, int digest_len); public: static Persistent s_ct; static void Init(Handle target); Key(); ~Key(); static Key* New(); static Handle New(const Arguments& args); static Handle GenerateSync(const Arguments& args); static Handle GetPrivate(Local property, const AccessorInfo& info); static void SetPrivate(Local property, Local value, const AccessorInfo& info); static Handle GetPublic(Local property, const AccessorInfo& info); static void SetPublic(Local property, Local value, const AccessorInfo& info); static Handle GetCompressed(Local property, const AccessorInfo& info); static void SetCompressed(Local property, Local value, const AccessorInfo& info); static Handle RegenerateSync(const Arguments& args); static Handle ToDER(const Arguments& args); static Handle FromDER(const Arguments& args); static Handle VerifySignature(const Arguments& args); static void VerifySignatureCallback(uv_work_t *req, int status); static Handle VerifySignatureSync(const Arguments& args); static Handle SignSync(const Arguments& args); }; }; // namespace bitcoin #endif