更新钱包相关库

This commit is contained in:
zhl 2023-05-12 09:54:42 +08:00
parent e10e7ae3a5
commit 5a9020f6da
12 changed files with 124 additions and 276 deletions

View File

@ -351,7 +351,7 @@ public:
{
CCLOGERROR("HttpClient::%s failed!", __FUNCTION__);
}
CCLOG("http response: %s", content);
return content;
}

View File

@ -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;

View File

@ -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();

View File

@ -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));

View File

@ -3,47 +3,17 @@
#include <stdint.h>
#include <stdlib.h>
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);

Binary file not shown.

View File

@ -3,47 +3,17 @@
#include <stdint.h>
#include <stdlib.h>
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);

Binary file not shown.

View File

@ -3,47 +3,17 @@
#include <stdint.h>
#include <stdlib.h>
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);

Binary file not shown.

View File

@ -3,47 +3,17 @@
#include <stdint.h>
#include <stdlib.h>
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);

Binary file not shown.