summaryrefslogtreecommitdiff
path: root/zano_libwallet2_api_c/src
diff options
context:
space:
mode:
authorCzarek Nakamoto <cyjan@mrcyjanek.net>2024-10-31 13:11:01 +0000
committerCzarek Nakamoto <cyjan@mrcyjanek.net>2024-10-31 13:11:01 +0000
commitdfc7c5eea0bed2f4dc7a8cabfb33ad49370cd3a1 (patch)
tree9706ca4b29798280a6c4ba8118f0d2cf91f17628 /zano_libwallet2_api_c/src
parent1d8e0fb30b53c28756f23676d5a3e1a99a9b3051 (diff)
initial zano commit
Diffstat (limited to 'zano_libwallet2_api_c/src')
l---------zano_libwallet2_api_c/src/main/cpp/helpers.cpp1
l---------zano_libwallet2_api_c/src/main/cpp/helpers.hpp1
-rw-r--r--zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp258
-rw-r--r--zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.h66
-rw-r--r--zano_libwallet2_api_c/src/main/cpp/zano_checksum.h6
5 files changed, 332 insertions, 0 deletions
diff --git a/zano_libwallet2_api_c/src/main/cpp/helpers.cpp b/zano_libwallet2_api_c/src/main/cpp/helpers.cpp
new file mode 120000
index 0000000..524768b
--- /dev/null
+++ b/zano_libwallet2_api_c/src/main/cpp/helpers.cpp
@@ -0,0 +1 @@
+../../../../monero_libwallet2_api_c/src/main/cpp/helpers.cpp \ No newline at end of file
diff --git a/zano_libwallet2_api_c/src/main/cpp/helpers.hpp b/zano_libwallet2_api_c/src/main/cpp/helpers.hpp
new file mode 120000
index 0000000..99d2733
--- /dev/null
+++ b/zano_libwallet2_api_c/src/main/cpp/helpers.hpp
@@ -0,0 +1 @@
+../../../../monero_libwallet2_api_c/src/main/cpp/helpers.hpp \ No newline at end of file
diff --git a/zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp b/zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp
new file mode 100644
index 0000000..87be8ca
--- /dev/null
+++ b/zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp
@@ -0,0 +1,258 @@
+#include <inttypes.h>
+#include "wallet2_api_c.h"
+#include <unistd.h>
+#include <cstring>
+#include <thread>
+#include "zano_checksum.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+// namespace plain_wallet
+// {
+// typedef int64_t hwallet;
+// std::string init(const std::string& address, const std::string& working_dir, int log_level);
+const char* ZANO_PlainWallet_init(const char* address, const char* working_dir, int log_level) {
+ std::string str = plain_wallet::init(std::string(address), std::string(working_dir), log_level);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string init(const std::string& ip, const std::string& port, const std::string& working_dir, int log_level);
+const char* ZANO_PlainWallet_init2(const char* ip, const char* port, const char* working_dir, int log_level) {
+ std::string str = plain_wallet::init(std::string(ip), std::string(port), std::string(working_dir), log_level);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string reset();
+const char* ZANO_PlainWallet_reset() {
+ std::string str = plain_wallet::reset();
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string set_log_level(int log_level);
+const char* ZANO_PlainWallet_setLogLevel(int log_level) {
+ std::string str = plain_wallet::set_log_level(log_level);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_version();
+const char* ZANO_PlainWallet_getVersion() {
+ std::string str = plain_wallet::get_version();
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_wallet_files();
+const char* ZANO_PlainWallet_getWalletFiles() {
+ std::string str = plain_wallet::get_wallet_files();
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_export_private_info(const std::string& target_dir);
+const char* ZANO_PlainWallet_getExportPrivateInfo(const char* target_dir) {
+ std::string str = plain_wallet::get_export_private_info(std::string(target_dir));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string delete_wallet(const std::string& file_name);
+const char* ZANO_PlainWallet_deleteWallet(const char* file_name) {
+ std::string str = plain_wallet::delete_wallet(std::string(file_name));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_address_info(const std::string& addr);
+const char* ZANO_PlainWallet_getAddressInfo(const char* addr) {
+ std::string str = plain_wallet::get_address_info(std::string(addr));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_appconfig(const std::string& encryption_key);
+const char* ZANO_PlainWallet_getAppconfig(const char* encryption_key) {
+ std::string str = plain_wallet::get_appconfig(std::string(encryption_key));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string set_appconfig(const std::string& conf_str, const std::string& encryption_key);
+const char* ZANO_PlainWallet_setAppconfig(const char* conf_str, const char* encryption_key) {
+ std::string str = plain_wallet::set_appconfig(std::string(conf_str), std::string(encryption_key));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string generate_random_key(uint64_t lenght);
+const char* ZANO_PlainWallet_generateRandomKey(uint64_t lenght) {
+ std::string str = plain_wallet::generate_random_key(lenght);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_logs_buffer();
+const char* ZANO_PlainWallet_getLogsBuffer() {
+ std::string str = plain_wallet::get_logs_buffer();
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string truncate_log();
+const char* ZANO_PlainWallet_truncateLog() {
+ std::string str = plain_wallet::truncate_log();
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_connectivity_status();
+const char* ZANO_PlainWallet_getConnectivityStatus() {
+ std::string str = plain_wallet::get_connectivity_status();
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string open(const std::string& path, const std::string& password);
+const char* ZANO_PlainWallet_open(const char* path, const char* password) {
+ std::string str = plain_wallet::open(std::string(path), std::string(password));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string restore(const std::string& seed, const std::string& path, const std::string& password, const std::string& seed_password);
+const char* ZANO_PlainWallet_restore(const char* seed, const char* path, const char* password, const char* seed_password) {
+ std::string str = plain_wallet::restore(std::string(seed), std::string(path), std::string(password), std::string(seed_password));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string generate(const std::string& path, const std::string& password);
+const char* ZANO_PlainWallet_generate(const char* path, const char* password) {
+ std::string str = plain_wallet::generate(std::string(path), std::string(password));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string get_opened_wallets();
+const char* ZANO_PlainWallet_getOpenWallets() {
+ std::string str = plain_wallet::get_opened_wallets();
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+
+// std::string get_wallet_status(hwallet h);
+const char* ZANO_PlainWallet_getWalletStatus(int64_t h) {
+ std::string str = plain_wallet::get_wallet_status(h);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string close_wallet(hwallet h);
+const char* ZANO_PlainWallet_closeWallet(int64_t h) {
+ std::string str = plain_wallet::close_wallet(h);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string invoke(hwallet h, const std::string& params);
+const char* ZANO_PlainWallet_invoke(int64_t h, const char* params) {
+ std::string str = plain_wallet::invoke(h, std::string(params));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// //async api
+// std::string async_call(const std::string& method_name, uint64_t instance_id, const std::string& params);
+const char* ZANO_PlainWallet_asyncCall(const char* method_name, uint64_t instance_id, const char* params) {
+ std::string str = plain_wallet::async_call(std::string(method_name), instance_id, std::string(params));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string try_pull_result(uint64_t);
+const char* ZANO_PlainWallet_tryPullResult(uint64_t instance_id) {
+ std::string str = plain_wallet::try_pull_result(instance_id);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string sync_call(const std::string& method_name, uint64_t instance_id, const std::string& params);
+const char* ZANO_PlainWallet_syncCall(const char* method_name, uint64_t instance_id, const char* params) {
+ std::string str = plain_wallet::sync_call(std::string(method_name), instance_id, std::string(params));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// //cake wallet api extension
+// bool is_wallet_exist(const std::string& path);
+bool ZANO_PlainWallet_isWalletExist(const char* path) {
+ return plain_wallet::is_wallet_exist(std::string(path));
+}
+// std::string get_wallet_info(hwallet h);
+const char* ZANO_PlainWallet_getWalletInfo(int64_t h) {
+ std::string str = plain_wallet::get_wallet_info(h);
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// std::string reset_wallet_password(hwallet h, const std::string& password);
+const char* ZANO_PlainWallet_resetWalletPassword(int64_t h, const char* password) {
+ std::string str = plain_wallet::reset_wallet_password(h, std::string(password));
+ const std::string::size_type size = str.size();
+ char *buffer = new char[size + 1]; //we need extra char for NUL
+ memcpy(buffer, str.c_str(), size + 1);
+ return buffer;
+}
+// uint64_t get_current_tx_fee(uint64_t priority); // 0 (default), 1 (unimportant), 2 (normal), 3 (elevated), 4 (priority)
+uint64_t ZANO_PlainWallet_getCurrentTxFee(uint64_t priority) {
+ return plain_wallet::get_current_tx_fee(priority);
+}
+// }
+
+const char* ZANO_checksum_wallet2_api_c_h() {
+ return ZANO_wallet2_api_c_h_sha256;
+}
+const char* ZANO_checksum_wallet2_api_c_cpp() {
+ return ZANO_wallet2_api_c_cpp_sha256;
+}
+const char* ZANO_checksum_wallet2_api_c_exp() {
+ return ZANO_wallet2_api_c_exp_sha256;
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.h b/zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.h
new file mode 100644
index 0000000..b08dae7
--- /dev/null
+++ b/zano_libwallet2_api_c/src/main/cpp/wallet2_api_c.h
@@ -0,0 +1,66 @@
+/*
+#include <android/log.h>
+
+#define LOG_TAG "[NDK]"
+#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
+#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__)
+#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
+*/
+#include <stdint.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <unistd.h>
+#include "zano_checksum.h"
+#include "../../../../zano/src/wallet/plain_wallet_api.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifdef __MINGW32__
+ #define ADDAPI __declspec(dllexport)
+#else
+ #define ADDAPI __attribute__((__visibility__("default")))
+#endif
+
+
+extern ADDAPI const char* ZANO_PlainWallet_init(const char* address, const char* working_dir, int log_level);
+extern ADDAPI const char* ZANO_PlainWallet_init2(const char* ip, const char* port, const char* working_dir, int log_level);
+extern ADDAPI const char* ZANO_PlainWallet_reset();
+extern ADDAPI const char* ZANO_PlainWallet_setLogLevel(int log_level);
+extern ADDAPI const char* ZANO_PlainWallet_getVersion();
+extern ADDAPI const char* ZANO_PlainWallet_getWalletFiles();
+extern ADDAPI const char* ZANO_PlainWallet_getExportPrivateInfo(const char* target_dir);
+extern ADDAPI const char* ZANO_PlainWallet_deleteWallet(const char* file_name);
+extern ADDAPI const char* ZANO_PlainWallet_getAddressInfo(const char* addr);
+extern ADDAPI const char* ZANO_PlainWallet_getAppconfig(const char* encryption_key);
+extern ADDAPI const char* ZANO_PlainWallet_setAppconfig(const char* conf_str, const char* encryption_key);
+extern ADDAPI const char* ZANO_PlainWallet_generateRandomKey(uint64_t lenght);
+extern ADDAPI const char* ZANO_PlainWallet_getLogsBuffer();
+extern ADDAPI const char* ZANO_PlainWallet_truncateLog();
+extern ADDAPI const char* ZANO_PlainWallet_getConnectivityStatus();
+extern ADDAPI const char* ZANO_PlainWallet_open(const char* path, const char* password);
+extern ADDAPI const char* ZANO_PlainWallet_restore(const char* seed, const char* path, const char* password, const char* seed_password);
+extern ADDAPI const char* ZANO_PlainWallet_generate(const char* path, const char* password);
+extern ADDAPI const char* ZANO_PlainWallet_getOpenWallets();
+extern ADDAPI const char* ZANO_PlainWallet_getWalletStatus(int64_t h);
+extern ADDAPI const char* ZANO_PlainWallet_closeWallet(int64_t h);
+extern ADDAPI const char* ZANO_PlainWallet_invoke(int64_t h, const char* params);
+
+
+extern ADDAPI const char* ZANO_PlainWallet_asyncCall(const char* method_name, uint64_t instance_id, const char* params);
+extern ADDAPI const char* ZANO_PlainWallet_tryPullResult(uint64_t instance_id);
+extern ADDAPI const char* ZANO_PlainWallet_syncCall(const char* method_name, uint64_t instance_id, const char* params);
+extern ADDAPI bool ZANO_PlainWallet_isWalletExist(const char* path);
+extern ADDAPI const char* ZANO_PlainWallet_getWalletInfo(int64_t h);
+extern ADDAPI const char* ZANO_PlainWallet_resetWalletPassword(int64_t h, const char* password);
+extern ADDAPI uint64_t ZANO_PlainWallet_getCurrentTxFee(uint64_t priority);
+
+extern ADDAPI const char* ZANO_checksum_wallet2_api_c_h();
+extern ADDAPI const char* ZANO_checksum_wallet2_api_c_cpp();
+extern ADDAPI const char* ZANO_checksum_wallet2_api_c_exp();
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/zano_libwallet2_api_c/src/main/cpp/zano_checksum.h b/zano_libwallet2_api_c/src/main/cpp/zano_checksum.h
new file mode 100644
index 0000000..763f3be
--- /dev/null
+++ b/zano_libwallet2_api_c/src/main/cpp/zano_checksum.h
@@ -0,0 +1,6 @@
+#ifndef MONEROC_CHECKSUMS
+#define MONEROC_CHECKSUMS
+const char * ZANO_wallet2_api_c_h_sha256 = "e37ae91020ddb248bcc206678ef9a8e2754f71d498ee0b09a00e5ad070a4d8a7";
+const char * ZANO_wallet2_api_c_cpp_sha256 = "bbcd07c986d29b482a2b3fcbab78f12ecfdce096b8178945fdec0d5b600b315a-";
+const char * ZANO_wallet2_api_c_exp_sha256 = "c8913ac41068f67b57c9b0a3c7dd8973e3c1273b66c2ff0aadb0003931da748c";
+#endif