diff --git a/cocos/network/HttpClient-android.cpp b/cocos/network/HttpClient-android.cpp index 2fe9b39..d2eac5b 100644 --- a/cocos/network/HttpClient-android.cpp +++ b/cocos/network/HttpClient-android.cpp @@ -351,7 +351,7 @@ public: { CCLOGERROR("HttpClient::%s failed!", __FUNCTION__); } - + CCLOG("http response: %s", content); return content; } diff --git a/cocos/platform/CCApplication.h b/cocos/platform/CCApplication.h index bafeed4..74d8e5a 100644 --- a/cocos/platform/CCApplication.h +++ b/cocos/platform/CCApplication.h @@ -113,7 +113,7 @@ public: inline RenderTexture* getRenderTexture() const { return _renderTexture; } inline char* getKeyMaster() {return key_master;} inline char* getKeySecond() {return key_second;} - inline char* getKeyBackup() {return key_backup;} + inline char* getTmpPass() {return tmp_pass;} inline char* getKeySeed() {return key_seed;} void setKeyMaster(const char *val) { key_master = strdup(val); @@ -121,8 +121,8 @@ public: void setKeySecond(const char *val) { key_second = strdup(val); } - void setKeyBackup(const char *val) { - key_backup = strdup(val); + void setTmpPass(const char *val) { + tmp_pass = strdup(val); } void setKeySeed(const char *val) { key_seed = strdup(val); @@ -225,7 +225,7 @@ private: RenderTexture* _renderTexture = nullptr; char* key_master = nullptr; char* key_second = nullptr; - char* key_backup = nullptr; + char* tmp_pass = nullptr; char* key_seed = nullptr; int _fps = 60; diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHttpURLConnection.java b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHttpURLConnection.java index 7d32836..8dce10d 100644 --- a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHttpURLConnection.java +++ b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxHttpURLConnection.java @@ -289,6 +289,7 @@ public class Cocos2dxHttpURLConnection } byte retbuffer[] = bytestream.toByteArray(); bytestream.close(); + Log.i(TAG, "getResponseContent:" + new String(retbuffer)); return retbuffer; } catch (Exception e) { e.printStackTrace(); diff --git a/cocos/scripting/js-bindings/manual/jsb_global.cpp b/cocos/scripting/js-bindings/manual/jsb_global.cpp index 59e516a..74e0c8e 100644 --- a/cocos/scripting/js-bindings/manual/jsb_global.cpp +++ b/cocos/scripting/js-bindings/manual/jsb_global.cpp @@ -442,6 +442,7 @@ SE_BIND_FUNC(moduleRequire) bool jsb_run_script(const std::string& filePath, se::Value* rval/* = nullptr */) { se::AutoHandleScope hs; + CCLOG("load js file: %s", filePath.c_str()); return se::ScriptEngine::getInstance()->runScript(filePath, rval); } @@ -1054,50 +1055,6 @@ static bool JSB_toWallet(se::State& s) } SE_BIND_FUNC(JSB_toWallet) -static bool JSB_generateWallet(se::State& s) -{ - const auto& args = s.args(); - size_t argc = args.size(); - CC_UNUSED bool ok = true; - - if (argc > 0) { - std::string id; - ok = seval_to_std_string(args[0], &id); - SE_PRECONDITION2(ok, false, "Error processing oid"); - std::string seed; - ok = seval_to_std_string(args[1], &seed); - SE_PRECONDITION2(ok, false, "Error processing seed"); - CWallet wallet = new_wallet(seed.c_str()); - std::string address = get_address( - seed.c_str(), - wallet.master_key, - wallet.second_key, - "" - ); - std::string localSKey = StringUtils::format("cebg_wallet_s_%s", id.c_str()); - // localStorageSetItem(localSKey, wallet.second_key); - Application::getInstance()->saveKeyLocal(localSKey, wallet.second_key); - Application::getInstance()->setKeySeed(wallet.msg_key); - Application::getInstance()->setKeyMaster(wallet.master_key); - Application::getInstance()->setKeySecond(wallet.second_key); - Application::getInstance()->setKeyBackup(wallet.backup_key); - std::string title = "save this qrcode plz"; - Application::getInstance()->showQRCode(wallet.backup_key, title, id); - std::string result = StringUtils::format("{\"master\": \"%s\",\"backup\": \"%s\", \"address\": \"%s\"}\n", - wallet.master_key, - wallet.backup_key, - address.c_str() - ); - s.rval().setString(result); - // free_cwallet(wallet); - return true; - } - - SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 2); - return false; -} -SE_BIND_FUNC(JSB_generateWallet) - static bool JSB_prepareWallet(se::State& s) { const auto& args = s.args(); @@ -1107,90 +1064,81 @@ static bool JSB_prepareWallet(se::State& s) std::string id; ok = seval_to_std_string(args[0], &id); SE_PRECONDITION2(ok, false, "Error processing oid"); - std::string seed; - ok = seval_to_std_string(args[1], &seed); - SE_PRECONDITION2(ok, false, "Error processing seed"); + std::string openid; + ok = seval_to_std_string(args[1], &openid); + SE_PRECONDITION2(ok, false, "Error processing openid"); std::string keyMaster; ok = seval_to_std_string(args[2], &keyMaster); SE_PRECONDITION2(ok, false, "Error processing master key"); - std::string storageSKey = StringUtils::format("cebg_wallet_s_%s", id.c_str()); - std::string storageBKey = StringUtils::format("cebg_wallet_b_%s", id.c_str()); - std::string localSKey; - Application::getInstance()->loadKeyLocal(storageSKey, &localSKey); - std::string localBKey; - Application::getInstance()->loadKeyLocal(storageBKey, &localBKey); - + std::string salt; + ok = seval_to_std_string(args[3], &salt); + SE_PRECONDITION2(ok, false, "Error processing pass"); + std::string pass; + ok = seval_to_std_string(args[4], &pass); + SE_PRECONDITION2(ok, false, "Error processing pass"); + std::string localSKey = generate_client_key(pass.c_str(), openid.c_str(), salt.c_str()); Application::getInstance()->setKeyMaster(keyMaster.c_str()); Application::getInstance()->setKeySecond(localSKey.c_str()); - Application::getInstance()->setKeyBackup(localBKey.c_str()); + std::string seed = keccak256_hash((id + openid + salt).c_str()); Application::getInstance()->setKeySeed(seed.c_str()); - std::string address = get_address( Application::getInstance()->getKeySeed(), Application::getInstance()->getKeyMaster(), - Application::getInstance()->getKeySecond(), - Application::getInstance()->getKeyBackup() + Application::getInstance()->getKeySecond() ); std::string result = StringUtils::format("{\"address\": \"%s\"}\n", address.c_str() ); s.rval().setString(result); - // free_cwallet(wallet); return true; } - SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 3); + SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 5); return false; } SE_BIND_FUNC(JSB_prepareWallet) -static bool JSB_restoreWallet(se::State& s) +static bool JSB_storeLocalPass(se::State& s) { const auto& args = s.args(); size_t argc = args.size(); CC_UNUSED bool ok = true; if (argc > 0) { - std::string id; - ok = seval_to_std_string(args[0], &id); - SE_PRECONDITION2(ok, false, "Error processing oid"); - std::string seed; - ok = seval_to_std_string(args[1], &seed); - SE_PRECONDITION2(ok, false, "Error processing seed"); - std::string keyMaster; - ok = seval_to_std_string(args[2], &keyMaster); - SE_PRECONDITION2(ok, false, "Error processing master key"); - std::string keyBackup; - ok = seval_to_std_string(args[3], &keyBackup); - SE_PRECONDITION2(ok, false, "Error processing backup key"); - - Application::getInstance()->setKeySeed(seed.c_str()); - Application::getInstance()->setKeyMaster(keyMaster.c_str()); - Application::getInstance()->setKeySecond(""); - Application::getInstance()->setKeyBackup(keyBackup.c_str()); - - std::string address = get_address( - seed.c_str(), - keyMaster.c_str(), - "", - keyBackup.c_str() - ); - std::string storageKey =StringUtils::format("cebg_wallet_b_%s", id.c_str()); - // localStorageSetItem(storageKey, Application::getInstance()->getKeyBackup()); - Application::getInstance()->saveKeyLocal(storageKey, Application::getInstance()->getKeyBackup()); - std::string result = StringUtils::format("{\"address\": \"%s\"}\n", - address.c_str() - ); - s.rval().setString(result); - // free_cwallet(wallet); + std::string pass; + ok = seval_to_std_string(args[0], &pass); + SE_PRECONDITION2(ok, false, "Error processing pass"); + std::string hashstr = local_pass_hasher(pass.c_str()); + Application::getInstance()->setTmpPass(hashstr.c_str()); return true; } - SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 3); + SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 1); return false; } +SE_BIND_FUNC(JSB_storeLocalPass) -SE_BIND_FUNC(JSB_restoreWallet) +static bool JSB_verifyLocalPass(se::State& s) +{ + const auto& args = s.args(); + size_t argc = args.size(); + CC_UNUSED bool ok = true; + if (argc > 0) { + std::string msg; + ok = seval_to_std_string(args[0], &msg); + SE_PRECONDITION2(ok, false, "Error processing pass"); + bool result = verify_local_pass( + msg.c_str(), + Application::getInstance()->getTmpPass() + ); + s.rval().setBoolean(result); + return true; + } + + SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 1); + return false; +} +SE_BIND_FUNC(JSB_verifyLocalPass) static bool JSB_walletSign(se::State& s) { @@ -1205,7 +1153,6 @@ static bool JSB_walletSign(se::State& s) Application::getInstance()->getKeySeed(), Application::getInstance()->getKeyMaster(), Application::getInstance()->getKeySecond(), - Application::getInstance()->getKeyBackup(), msg.c_str()); s.rval().setString(sign_str); return true; @@ -1248,8 +1195,7 @@ static bool JSB_walletSecKey(se::State& s) std::string key_str = generate_sec_key( Application::getInstance()->getKeySeed(), Application::getInstance()->getKeyMaster(), - Application::getInstance()->getKeySecond(), - Application::getInstance()->getKeyBackup() + Application::getInstance()->getKeySecond() ); s.rval().setString(key_str); return true; @@ -1274,7 +1220,6 @@ static bool JSB_walletSignTran(se::State& s) Application::getInstance()->getKeySeed(), Application::getInstance()->getKeyMaster(), Application::getInstance()->getKeySecond(), - Application::getInstance()->getKeyBackup(), msg.c_str()); s.rval().setString(sign_str); // free_cwallet(wallet); @@ -1337,7 +1282,6 @@ static bool JSB_walletEncrypt(se::State& s) Application::getInstance()->getKeySeed(), Application::getInstance()->getKeyMaster(), Application::getInstance()->getKeySecond(), - Application::getInstance()->getKeyBackup(), msg.c_str()); s.rval().setString(str_encrypt); return true; @@ -1372,29 +1316,6 @@ static bool JSB_rencrypt(se::State& s) } SE_BIND_FUNC(JSB_rencrypt) -static bool JSB_localKey(se::State& s) -{ - const auto& args = s.args(); - size_t argc = args.size(); - CC_UNUSED bool ok = true; - if (argc > 0) { - std::string pk; - ok = seval_to_std_string(args[0], &pk); - SE_PRECONDITION2(ok, false, "Error processing pk"); - char* key1 = Application::getInstance()->getKeySecond(); - char* key2 = Application::getInstance()->getKeyBackup(); - std::string str_encrypt = rencrypt( - pk.c_str(), - strlen(key1) > 0 ? key1 : key2); - str_encrypt += strlen(key1) > 0 ? "|0" : "|1"; - s.rval().setString(str_encrypt); - return true; - } - SE_REPORT_ERROR("wrong number of arguments: %d, was expecting %d", (int)argc, 1); - return false; -} -SE_BIND_FUNC(JSB_localKey) - static bool JSB_walletDecrypt(se::State& s) { const auto& args = s.args(); @@ -1408,7 +1329,6 @@ static bool JSB_walletDecrypt(se::State& s) Application::getInstance()->getKeySeed(), Application::getInstance()->getKeyMaster(), Application::getInstance()->getKeySecond(), - Application::getInstance()->getKeyBackup(), msg.c_str()); s.rval().setString(str_encrypt); return true; @@ -1458,16 +1378,15 @@ bool jsb_register_global_variables(se::Object* global) #endif __jsbObj->defineFunction("toWallet", _SE(JSB_toWallet)); - __jsbObj->defineFunction("generateWallet", _SE(JSB_generateWallet)); __jsbObj->defineFunction("prepareWallet", _SE(JSB_prepareWallet)); - __jsbObj->defineFunction("restoreWallet", _SE(JSB_restoreWallet)); + __jsbObj->defineFunction("storeLocalPass", _SE(JSB_storeLocalPass)); + __jsbObj->defineFunction("verifyLocalPass", _SE(JSB_verifyLocalPass)); __jsbObj->defineFunction("walletSign", _SE(JSB_walletSign)); __jsbObj->defineFunction("walletSignTran", _SE(JSB_walletSignTran)); __jsbObj->defineFunction("walletSecKey", _SE(JSB_walletSecKey)); __jsbObj->defineFunction("hexDeflate", _SE(JSB_hexDeflate)); __jsbObj->defineFunction("hexInflate", _SE(JSB_hexInflate)); __jsbObj->defineFunction("rencrypt", _SE(JSB_rencrypt)); - __jsbObj->defineFunction("encryptedLocalKey", _SE(JSB_localKey)); __jsbObj->defineFunction("walletEncrypt", _SE(JSB_walletEncrypt)); __jsbObj->defineFunction("walletDecrypt", _SE(JSB_walletDecrypt)); __jsbObj->defineFunction("loadLocalStorage", _SE(JSB_loadLocalStorage)); diff --git a/external/android/arm64-v8a/include/rustwallet/rustwallet.h b/external/android/arm64-v8a/include/rustwallet/rustwallet.h index b4f35b2..596038f 100644 --- a/external/android/arm64-v8a/include/rustwallet/rustwallet.h +++ b/external/android/arm64-v8a/include/rustwallet/rustwallet.h @@ -3,47 +3,17 @@ #include #include -typedef struct CWallet { - char *msg_key; - char *master_key; - char *second_key; - char *backup_key; -} CWallet; +char *get_address(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet new_wallet(const char *msg); +char *get_public_key(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet reset_wallet(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); +char *generate_sec_key(const char *msg_key, const char *master_key, const char *second_key); -void free_cwallet(struct CWallet cw); - -char *get_address(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *get_public_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *generate_sec_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *sign(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key, - const char *msg); +char *sign(const char *msg_key, const char *master_key, const char *second_key, const char *msg); char *sign_for_tran(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *rencrypt(const char *pk, const char *msg); @@ -51,15 +21,27 @@ char *rencrypt(const char *pk, const char *msg); char *wallet_encrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *wallet_decrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *hex_deflate(const char *content); char *hex_inflate(const char *content); + +char *hash_pass_svr(const char *content); + +char *keccak256_hash(const char *content); + +char *aes_encrypt(const char *content, const char *key); + +char *aes_decrypt(const char *content, const char *key); + +char *local_pass_hasher(const char *password); + +bool verify_local_pass(const char *password, const char *pass_hash); + +char *generate_client_key(const char *password, const char *openid, const char *salt); diff --git a/external/android/arm64-v8a/librustwallet.a b/external/android/arm64-v8a/librustwallet.a index 27747a5..958d94e 100644 Binary files a/external/android/arm64-v8a/librustwallet.a and b/external/android/arm64-v8a/librustwallet.a differ diff --git a/external/android/armeabi-v7a/include/rustwallet/rustwallet.h b/external/android/armeabi-v7a/include/rustwallet/rustwallet.h index b4f35b2..596038f 100644 --- a/external/android/armeabi-v7a/include/rustwallet/rustwallet.h +++ b/external/android/armeabi-v7a/include/rustwallet/rustwallet.h @@ -3,47 +3,17 @@ #include #include -typedef struct CWallet { - char *msg_key; - char *master_key; - char *second_key; - char *backup_key; -} CWallet; +char *get_address(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet new_wallet(const char *msg); +char *get_public_key(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet reset_wallet(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); +char *generate_sec_key(const char *msg_key, const char *master_key, const char *second_key); -void free_cwallet(struct CWallet cw); - -char *get_address(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *get_public_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *generate_sec_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *sign(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key, - const char *msg); +char *sign(const char *msg_key, const char *master_key, const char *second_key, const char *msg); char *sign_for_tran(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *rencrypt(const char *pk, const char *msg); @@ -51,15 +21,27 @@ char *rencrypt(const char *pk, const char *msg); char *wallet_encrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *wallet_decrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *hex_deflate(const char *content); char *hex_inflate(const char *content); + +char *hash_pass_svr(const char *content); + +char *keccak256_hash(const char *content); + +char *aes_encrypt(const char *content, const char *key); + +char *aes_decrypt(const char *content, const char *key); + +char *local_pass_hasher(const char *password); + +bool verify_local_pass(const char *password, const char *pass_hash); + +char *generate_client_key(const char *password, const char *openid, const char *salt); diff --git a/external/android/armeabi-v7a/librustwallet.a b/external/android/armeabi-v7a/librustwallet.a index caa3d9e..841bb36 100644 Binary files a/external/android/armeabi-v7a/librustwallet.a and b/external/android/armeabi-v7a/librustwallet.a differ diff --git a/external/android/x86/include/rustwallet/rustwallet.h b/external/android/x86/include/rustwallet/rustwallet.h index b4f35b2..596038f 100644 --- a/external/android/x86/include/rustwallet/rustwallet.h +++ b/external/android/x86/include/rustwallet/rustwallet.h @@ -3,47 +3,17 @@ #include #include -typedef struct CWallet { - char *msg_key; - char *master_key; - char *second_key; - char *backup_key; -} CWallet; +char *get_address(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet new_wallet(const char *msg); +char *get_public_key(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet reset_wallet(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); +char *generate_sec_key(const char *msg_key, const char *master_key, const char *second_key); -void free_cwallet(struct CWallet cw); - -char *get_address(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *get_public_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *generate_sec_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *sign(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key, - const char *msg); +char *sign(const char *msg_key, const char *master_key, const char *second_key, const char *msg); char *sign_for_tran(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *rencrypt(const char *pk, const char *msg); @@ -51,15 +21,27 @@ char *rencrypt(const char *pk, const char *msg); char *wallet_encrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *wallet_decrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *hex_deflate(const char *content); char *hex_inflate(const char *content); + +char *hash_pass_svr(const char *content); + +char *keccak256_hash(const char *content); + +char *aes_encrypt(const char *content, const char *key); + +char *aes_decrypt(const char *content, const char *key); + +char *local_pass_hasher(const char *password); + +bool verify_local_pass(const char *password, const char *pass_hash); + +char *generate_client_key(const char *password, const char *openid, const char *salt); diff --git a/external/android/x86/librustwallet.a b/external/android/x86/librustwallet.a index 3ceface..75dadac 100644 Binary files a/external/android/x86/librustwallet.a and b/external/android/x86/librustwallet.a differ diff --git a/external/android/x86_64/include/rustwallet/rustwallet.h b/external/android/x86_64/include/rustwallet/rustwallet.h index b4f35b2..596038f 100644 --- a/external/android/x86_64/include/rustwallet/rustwallet.h +++ b/external/android/x86_64/include/rustwallet/rustwallet.h @@ -3,47 +3,17 @@ #include #include -typedef struct CWallet { - char *msg_key; - char *master_key; - char *second_key; - char *backup_key; -} CWallet; +char *get_address(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet new_wallet(const char *msg); +char *get_public_key(const char *msg_key, const char *master_key, const char *second_key); -struct CWallet reset_wallet(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); +char *generate_sec_key(const char *msg_key, const char *master_key, const char *second_key); -void free_cwallet(struct CWallet cw); - -char *get_address(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *get_public_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *generate_sec_key(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key); - -char *sign(const char *msg_key, - const char *master_key, - const char *second_key, - const char *backup_key, - const char *msg); +char *sign(const char *msg_key, const char *master_key, const char *second_key, const char *msg); char *sign_for_tran(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *rencrypt(const char *pk, const char *msg); @@ -51,15 +21,27 @@ char *rencrypt(const char *pk, const char *msg); char *wallet_encrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *wallet_decrypt(const char *msg_key, const char *master_key, const char *second_key, - const char *backup_key, const char *msg); char *hex_deflate(const char *content); char *hex_inflate(const char *content); + +char *hash_pass_svr(const char *content); + +char *keccak256_hash(const char *content); + +char *aes_encrypt(const char *content, const char *key); + +char *aes_decrypt(const char *content, const char *key); + +char *local_pass_hasher(const char *password); + +bool verify_local_pass(const char *password, const char *pass_hash); + +char *generate_client_key(const char *password, const char *openid, const char *salt); diff --git a/external/android/x86_64/librustwallet.a b/external/android/x86_64/librustwallet.a index ba767e5..416b7e0 100644 Binary files a/external/android/x86_64/librustwallet.a and b/external/android/x86_64/librustwallet.a differ