summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules7
-rw-r--r--contrib/depends/packages/packages.mk2
-rw-r--r--contrib/depends/packages/wownero_seed.mk29
-rw-r--r--contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch497
-rw-r--r--contrib/depends/toolchain.cmake.in2
-rw-r--r--monero_libwallet2_api_c/CMakeLists.txt28
-rw-r--r--patches/wownero/0001-wallet-background-sync-with-just-the-view-key.patch44
-rw-r--r--patches/wownero/0002-fix-missing-___clear_cache-when-targetting-iOS.patch6
-rw-r--r--patches/wownero/0003-fix-is_trivially_copyable.patch6
-rw-r--r--patches/wownero/0004-store-crash-fix.patch12
-rw-r--r--patches/wownero/0005-Update-android-ndk.patch14
-rw-r--r--patches/wownero/0006-uint64_t-missing-definition-fix.patch6
-rw-r--r--patches/wownero/0007-use-proper-error-handling-in-get_seed.patch8
-rw-r--r--patches/wownero/0008-UR-functions.patch38
-rw-r--r--patches/wownero/0009-add-dummy-device-for-ledger.patch26
-rw-r--r--patches/wownero/0010-polyseed.patch66
-rw-r--r--patches/wownero/0011-coin-control.patch26
-rw-r--r--patches/wownero/0012-Add-hex-encoding-and-tx-key-getter-for-PendingTransc.patch10
-rw-r--r--patches/wownero/0013-Add-recoverDeterministicWalletFromSpendKey.patch14
-rw-r--r--patches/wownero/0014-build-wownero-seed.patch16
-rw-r--r--patches/wownero/0015-add-monero-submodule-support.patch14
-rw-r--r--patches/wownero/0016-include-locale-only-when-targeting-WIN32.patch83
-rw-r--r--patches/wownero/0017-ledger-dummy-fix.patch157
-rw-r--r--wownero_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp2
m---------wownero_libwallet2_api_c/wownero-seed0
25 files changed, 338 insertions, 775 deletions
diff --git a/.gitmodules b/.gitmodules
index 74fba9d..ecf86b2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -6,4 +6,9 @@
[submodule "wownero"]
path = wownero
url = https://codeberg.org/wownero/wownero
- shallow = true \ No newline at end of file
+ shallow = true
+[submodule "wownero_libwallet2_api_c/wownero-seed"]
+ path = wownero_libwallet2_api_c/wownero-seed
+ url = https://github.com/MrCyjaneK/wownero-seed
+ branch = cyjan-namespace2
+ shallow = true
diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk
index 1e579f5..9059d9b 100644
--- a/contrib/depends/packages/packages.mk
+++ b/contrib/depends/packages/packages.mk
@@ -1,4 +1,4 @@
-packages:=boost openssl zeromq libiconv expat unbound polyseed wownero_seed
+packages:=boost openssl zeromq libiconv expat unbound polyseed
# ccache is useless in gitian builds
ifneq ($(GITIAN),1)
diff --git a/contrib/depends/packages/wownero_seed.mk b/contrib/depends/packages/wownero_seed.mk
deleted file mode 100644
index 8ed3030..0000000
--- a/contrib/depends/packages/wownero_seed.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-package=wownero_seed
-$(package)_version=0.3.0
-$(package)_download_path=https://github.com/MrCyjaneK/wownero-seed/archive/
-$(package)_download_file=d3f68be347facfeebbd8f68fd74982c705cb917b.tar.gz
-$(package)_file_name=$(package)-$($(package)_version).tar.gz
-$(package)_sha256_hash=3b59ccde08e0fee204680240af4b270a18a677aa0e6036a3504570193d232406
-$(package)_patches=0001-fix-duplicate-symbol-error.patch
-
-define $(package)_preprocess_cmds
- patch -p1 < $($(package)_patch_dir)/0001-fix-duplicate-symbol-error.patch
-endef
-
-
-define $(package)_config_cmds
- CC="$($(package)_cc)" CXX="$($(package)_cxx)" cmake -DCMAKE_INSTALL_PREFIX="$(host_prefix)" -DCMAKE_POSITION_INDEPENDENT_CODE=ON .
-endef
-
-define $(package)_set_vars
- $(package)_build_opts=CC="$($(package)_cc)" CXX="$($(package)_cxx)"
-endef
-
-
-define $(package)_build_cmds
- $(MAKE) -j$(NUM_CORES) VERBOSE=1
-endef
-
-define $(package)_stage_cmds
- $(MAKE) -j$(NUM_CORES) DESTDIR=$($(package)_staging_dir) install
-endef
diff --git a/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch b/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
deleted file mode 100644
index a8f8fe0..0000000
--- a/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
+++ /dev/null
@@ -1,497 +0,0 @@
-From 4be93209afb80b11834a0849391ee6eeb68aec4a Mon Sep 17 00:00:00 2001
-From: Czarek Nakamoto <cyjan@mrcyjanek.net>
-Date: Thu, 25 Apr 2024 09:37:37 +0200
-Subject: [PATCH] fix duplicate symbol error
-
----
- src/argon2/argon2.c | 8 +++---
- src/argon2/argon2.h | 4 +--
- src/argon2/blake2/blake2.h | 12 ++++-----
- src/argon2/blake2/blake2b.c | 46 ++++++++++++++++----------------
- src/argon2/core.c | 52 ++++++++++++++++++-------------------
- src/argon2/core.h | 17 ++++++------
- src/argon2/ref.c | 2 +-
- 7 files changed, 70 insertions(+), 71 deletions(-)
-
-diff --git a/src/argon2/argon2.c b/src/argon2/argon2.c
-index e9882b7..470dc26 100644
---- a/src/argon2/argon2.c
-+++ b/src/argon2/argon2.c
-@@ -37,7 +37,7 @@ const char *argon2_type2string(argon2_type type, int uppercase) {
-
- int argon2_ctx(argon2_context *context, argon2_type type) {
- /* 1. Validate all inputs */
-- int result = validate_inputs(context);
-+ int result = validate_inputs_wowseed(context);
- uint32_t memory_blocks, segment_length;
- argon2_instance_t instance;
-
-@@ -78,20 +78,20 @@ int argon2_ctx(argon2_context *context, argon2_type type) {
- /* 3. Initialization: Hashing inputs, allocating memory, filling first
- * blocks
- */
-- result = initialize(&instance, context);
-+ result = initialize_wowseed(&instance, context);
-
- if (ARGON2_OK != result) {
- return result;
- }
-
- /* 4. Filling memory */
-- result = fill_memory_blocks(&instance);
-+ result = _fill_memory_blocks_wowseed(&instance);
-
- if (ARGON2_OK != result) {
- return result;
- }
- /* 5. Finalization */
-- finalize(context, &instance);
-+ finalize_wowseed(context, &instance);
-
- return ARGON2_OK;
- }
-diff --git a/src/argon2/argon2.h b/src/argon2/argon2.h
-index 1b471f6..f60e269 100644
---- a/src/argon2/argon2.h
-+++ b/src/argon2/argon2.h
-@@ -185,7 +185,7 @@ typedef void (*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate);
- * 4 parallel lanes.
- * You want to erase the password, but you're OK with last pass not being
- * erased. You want to use the default memory allocator.
-- * Then you initialize:
-+ * Then you initialize_wowseed:
- Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false)
- */
- typedef struct Argon2_Context {
-@@ -329,7 +329,7 @@ ARGON2_PUBLIC int argon2_hash(const uint32_t t_cost, const uint32_t m_cost,
-
- /**
- * Verifies a password against an encoded string
-- * Encoded string is restricted as in validate_inputs()
-+ * Encoded string is restricted as in validate_inputs_wowseed()
- * @param encoded String encoding parameters, salt, hash
- * @param pwd Pointer to password
- * @pre Returns ARGON2_OK if successful
-diff --git a/src/argon2/blake2/blake2.h b/src/argon2/blake2/blake2.h
-index 9f97e1c..25b445d 100644
---- a/src/argon2/blake2/blake2.h
-+++ b/src/argon2/blake2/blake2.h
-@@ -67,15 +67,15 @@ enum {
- };
-
- /* Streaming API */
--ARGON2_LOCAL int blake2b_init(blake2b_state *S, size_t outlen);
--ARGON2_LOCAL int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
-+ARGON2_LOCAL int blake2b_init_wowseed(blake2b_state *S, size_t outlen);
-+ARGON2_LOCAL int blake2b_init_key_wowseed(blake2b_state *S, size_t outlen, const void *key,
- size_t keylen);
--ARGON2_LOCAL int blake2b_init_param(blake2b_state *S, const blake2b_param *P);
--ARGON2_LOCAL int blake2b_update(blake2b_state *S, const void *in, size_t inlen);
--ARGON2_LOCAL int blake2b_final(blake2b_state *S, void *out, size_t outlen);
-+ARGON2_LOCAL int blake2b_init_param_wowseed(blake2b_state *S, const blake2b_param *P);
-+ARGON2_LOCAL int blake2b_update_wowseed(blake2b_state *S, const void *in, size_t inlen);
-+ARGON2_LOCAL int blake2b_final_wowseed(blake2b_state *S, void *out, size_t outlen);
-
- /* Simple API */
--ARGON2_LOCAL int blake2b(void *out, size_t outlen, const void *in, size_t inlen,
-+ARGON2_LOCAL int blake2b_wowseed(void *out, size_t outlen, const void *in, size_t inlen,
- const void *key, size_t keylen);
-
- /* Argon2 Team - Begin Code */
-diff --git a/src/argon2/blake2/blake2b.c b/src/argon2/blake2/blake2b.c
-index ca05df5..8138b86 100644
---- a/src/argon2/blake2/blake2b.c
-+++ b/src/argon2/blake2/blake2b.c
-@@ -70,7 +70,7 @@ static BLAKE2_INLINE void blake2b_init0(blake2b_state *S) {
- memcpy(S->h, blake2b_IV, sizeof(S->h));
- }
-
--int blake2b_init_param(blake2b_state *S, const blake2b_param *P) {
-+int blake2b_init_param_wowseed(blake2b_state *S, const blake2b_param *P) {
- const unsigned char *p = (const unsigned char *)P;
- unsigned int i;
-
-@@ -88,7 +88,7 @@ int blake2b_init_param(blake2b_state *S, const blake2b_param *P) {
- }
-
- /* Sequential blake2b initialization */
--int blake2b_init(blake2b_state *S, size_t outlen) {
-+int blake2b_init_wowseed(blake2b_state *S, size_t outlen) {
- blake2b_param P;
-
- if (S == NULL) {
-@@ -113,10 +113,10 @@ int blake2b_init(blake2b_state *S, size_t outlen) {
- memset(P.salt, 0, sizeof(P.salt));
- memset(P.personal, 0, sizeof(P.personal));
-
-- return blake2b_init_param(S, &P);
-+ return blake2b_init_param_wowseed(S, &P);
- }
-
--int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
-+int blake2b_init_key_wowseed(blake2b_state *S, size_t outlen, const void *key,
- size_t keylen) {
- blake2b_param P;
-
-@@ -147,7 +147,7 @@ int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
- memset(P.salt, 0, sizeof(P.salt));
- memset(P.personal, 0, sizeof(P.personal));
-
-- if (blake2b_init_param(S, &P) < 0) {
-+ if (blake2b_init_param_wowseed(S, &P) < 0) {
- blake2b_invalidate_state(S);
- return -1;
- }
-@@ -156,7 +156,7 @@ int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key,
- uint8_t block[BLAKE2B_BLOCKBYTES];
- memset(block, 0, BLAKE2B_BLOCKBYTES);
- memcpy(block, key, keylen);
-- blake2b_update(S, block, BLAKE2B_BLOCKBYTES);
-+ blake2b_update_wowseed(S, block, BLAKE2B_BLOCKBYTES);
- /* Burn the key from stack */
- clear_internal_memory(block, BLAKE2B_BLOCKBYTES);
- }
-@@ -221,7 +221,7 @@ static void blake2b_compress(blake2b_state *S, const uint8_t *block) {
- #undef ROUND
- }
-
--int blake2b_update(blake2b_state *S, const void *in, size_t inlen) {
-+int blake2b_update_wowseed(blake2b_state *S, const void *in, size_t inlen) {
- const uint8_t *pin = (const uint8_t *)in;
-
- if (inlen == 0) {
-@@ -261,7 +261,7 @@ int blake2b_update(blake2b_state *S, const void *in, size_t inlen) {
- return 0;
- }
-
--int blake2b_final(blake2b_state *S, void *out, size_t outlen) {
-+int blake2b_final_wowseed(blake2b_state *S, void *out, size_t outlen) {
- uint8_t buffer[BLAKE2B_OUTBYTES] = {0};
- unsigned int i;
-
-@@ -291,7 +291,7 @@ int blake2b_final(blake2b_state *S, void *out, size_t outlen) {
- return 0;
- }
-
--int blake2b(void *out, size_t outlen, const void *in, size_t inlen,
-+int blake2b_wowseed(void *out, size_t outlen, const void *in, size_t inlen,
- const void *key, size_t keylen) {
- blake2b_state S;
- int ret = -1;
-@@ -310,19 +310,19 @@ int blake2b(void *out, size_t outlen, const void *in, size_t inlen,
- }
-
- if (keylen > 0) {
-- if (blake2b_init_key(&S, outlen, key, keylen) < 0) {
-+ if (blake2b_init_key_wowseed(&S, outlen, key, keylen) < 0) {
- goto fail;
- }
- } else {
-- if (blake2b_init(&S, outlen) < 0) {
-+ if (blake2b_init_wowseed(&S, outlen) < 0) {
- goto fail;
- }
- }
-
-- if (blake2b_update(&S, in, inlen) < 0) {
-+ if (blake2b_update_wowseed(&S, in, inlen) < 0) {
- goto fail;
- }
-- ret = blake2b_final(&S, out, outlen);
-+ ret = blake2b_final_wowseed(&S, out, outlen);
-
- fail:
- clear_internal_memory(&S, sizeof(S));
-@@ -352,25 +352,25 @@ int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) {
- } while ((void)0, 0)
-
- if (outlen <= BLAKE2B_OUTBYTES) {
-- TRY(blake2b_init(&blake_state, outlen));
-- TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
-- TRY(blake2b_update(&blake_state, in, inlen));
-- TRY(blake2b_final(&blake_state, out, outlen));
-+ TRY(blake2b_init_wowseed(&blake_state, outlen));
-+ TRY(blake2b_update_wowseed(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
-+ TRY(blake2b_update_wowseed(&blake_state, in, inlen));
-+ TRY(blake2b_final_wowseed(&blake_state, out, outlen));
- } else {
- uint32_t toproduce;
- uint8_t out_buffer[BLAKE2B_OUTBYTES];
- uint8_t in_buffer[BLAKE2B_OUTBYTES];
-- TRY(blake2b_init(&blake_state, BLAKE2B_OUTBYTES));
-- TRY(blake2b_update(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
-- TRY(blake2b_update(&blake_state, in, inlen));
-- TRY(blake2b_final(&blake_state, out_buffer, BLAKE2B_OUTBYTES));
-+ TRY(blake2b_init_wowseed(&blake_state, BLAKE2B_OUTBYTES));
-+ TRY(blake2b_update_wowseed(&blake_state, outlen_bytes, sizeof(outlen_bytes)));
-+ TRY(blake2b_update_wowseed(&blake_state, in, inlen));
-+ TRY(blake2b_final_wowseed(&blake_state, out_buffer, BLAKE2B_OUTBYTES));
- memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);
- out += BLAKE2B_OUTBYTES / 2;
- toproduce = (uint32_t)outlen - BLAKE2B_OUTBYTES / 2;
-
- while (toproduce > BLAKE2B_OUTBYTES) {
- memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);
-- TRY(blake2b(out_buffer, BLAKE2B_OUTBYTES, in_buffer,
-+ TRY(blake2b_wowseed(out_buffer, BLAKE2B_OUTBYTES, in_buffer,
- BLAKE2B_OUTBYTES, NULL, 0));
- memcpy(out, out_buffer, BLAKE2B_OUTBYTES / 2);
- out += BLAKE2B_OUTBYTES / 2;
-@@ -378,7 +378,7 @@ int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen) {
- }
-
- memcpy(in_buffer, out_buffer, BLAKE2B_OUTBYTES);
-- TRY(blake2b(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL,
-+ TRY(blake2b_wowseed(out_buffer, toproduce, in_buffer, BLAKE2B_OUTBYTES, NULL,
- 0));
- memcpy(out, out_buffer, toproduce);
- }
-diff --git a/src/argon2/core.c b/src/argon2/core.c
-index 5eafe08..c25eb53 100644
---- a/src/argon2/core.c
-+++ b/src/argon2/core.c
-@@ -151,7 +151,7 @@ void clear_internal_memory(void *v, size_t n) {
- }
- }
-
--void finalize(const argon2_context *context, argon2_instance_t *instance) {
-+void finalize_wowseed(const argon2_context *context, argon2_instance_t *instance) {
- if (context != NULL && instance != NULL) {
- block blockhash;
- uint32_t l;
-@@ -256,7 +256,7 @@ uint32_t index_alpha(const argon2_instance_t *instance,
- }
-
- /* Single-threaded version for p=1 case */
--static int fill_memory_blocks_st(argon2_instance_t *instance) {
-+static int _fill_memory_blocks_wowseed_st(argon2_instance_t *instance) {
- uint32_t r, s, l;
-
- for (r = 0; r < instance->passes; ++r) {
-@@ -273,14 +273,14 @@ static int fill_memory_blocks_st(argon2_instance_t *instance) {
- return ARGON2_OK;
- }
-
--int fill_memory_blocks(argon2_instance_t *instance) {
-+int _fill_memory_blocks_wowseed(argon2_instance_t *instance) {
- if (instance == NULL || instance->lanes == 0) {
- return ARGON2_INCORRECT_PARAMETER;
- }
-- return fill_memory_blocks_st(instance);
-+ return _fill_memory_blocks_wowseed_st(instance);
- }
-
--int validate_inputs(const argon2_context *context) {
-+int validate_inputs_wowseed(const argon2_context *context) {
- if (NULL == context) {
- return ARGON2_INCORRECT_PARAMETER;
- }
-@@ -407,7 +407,7 @@ int validate_inputs(const argon2_context *context) {
- return ARGON2_OK;
- }
-
--void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) {
-+void fill_first_blocks_wowseed(uint8_t *blockhash, const argon2_instance_t *instance) {
- uint32_t l;
- /* Make the first and second block in each lane as G(H0||0||i) or
- G(H0||1||i) */
-@@ -430,7 +430,7 @@ void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance) {
- clear_internal_memory(blockhash_bytes, ARGON2_BLOCK_SIZE);
- }
-
--void initial_hash(uint8_t *blockhash, argon2_context *context,
-+void initial_hash_wowseed(uint8_t *blockhash, argon2_context *context,
- argon2_type type) {
- blake2b_state BlakeHash;
- uint8_t value[sizeof(uint32_t)];
-@@ -439,31 +439,31 @@ void initial_hash(uint8_t *blockhash, argon2_context *context,
- return;
- }
-
-- blake2b_init(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH);
-+ blake2b_init_wowseed(&BlakeHash, ARGON2_PREHASH_DIGEST_LENGTH);
-
- store32(&value, context->lanes);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- store32(&value, context->outlen);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- store32(&value, context->m_cost);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- store32(&value, context->t_cost);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- store32(&value, context->version);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- store32(&value, (uint32_t)type);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- store32(&value, context->pwdlen);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- if (context->pwd != NULL) {
-- blake2b_update(&BlakeHash, (const uint8_t *)context->pwd,
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->pwd,
- context->pwdlen);
-
- if (context->flags & ARGON2_FLAG_CLEAR_PASSWORD) {
-@@ -473,18 +473,18 @@ void initial_hash(uint8_t *blockhash, argon2_context *context,
- }
-
- store32(&value, context->saltlen);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- if (context->salt != NULL) {
-- blake2b_update(&BlakeHash, (const uint8_t *)context->salt,
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->salt,
- context->saltlen);
- }
-
- store32(&value, context->secretlen);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- if (context->secret != NULL) {
-- blake2b_update(&BlakeHash, (const uint8_t *)context->secret,
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->secret,
- context->secretlen);
-
- if (context->flags & ARGON2_FLAG_CLEAR_SECRET) {
-@@ -494,17 +494,17 @@ void initial_hash(uint8_t *blockhash, argon2_context *context,
- }
-
- store32(&value, context->adlen);
-- blake2b_update(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)&value, sizeof(value));
-
- if (context->ad != NULL) {
-- blake2b_update(&BlakeHash, (const uint8_t *)context->ad,
-+ blake2b_update_wowseed(&BlakeHash, (const uint8_t *)context->ad,
- context->adlen);
- }
-
-- blake2b_final(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH);
-+ blake2b_final_wowseed(&BlakeHash, blockhash, ARGON2_PREHASH_DIGEST_LENGTH);
- }
-
--int initialize(argon2_instance_t *instance, argon2_context *context) {
-+int initialize_wowseed(argon2_instance_t *instance, argon2_context *context) {
- uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH];
- int result = ARGON2_OK;
-
-@@ -523,7 +523,7 @@ int initialize(argon2_instance_t *instance, argon2_context *context) {
- /* H_0 + 8 extra bytes to produce the first blocks */
- /* uint8_t blockhash[ARGON2_PREHASH_SEED_LENGTH]; */
- /* Hashing all inputs */
-- initial_hash(blockhash, context, instance->type);
-+ initial_hash_wowseed(blockhash, context, instance->type);
- /* Zeroing 8 extra bytes */
- clear_internal_memory(blockhash + ARGON2_PREHASH_DIGEST_LENGTH,
- ARGON2_PREHASH_SEED_LENGTH -
-@@ -535,7 +535,7 @@ int initialize(argon2_instance_t *instance, argon2_context *context) {
-
- /* 3. Creating first blocks, we always have at least two blocks in a slice
- */
-- fill_first_blocks(blockhash, instance);
-+ fill_first_blocks_wowseed(blockhash, instance);
- /* Clearing the hash */
- clear_internal_memory(blockhash, ARGON2_PREHASH_SEED_LENGTH);
-
-diff --git a/src/argon2/core.h b/src/argon2/core.h
-index 78000ba..6b0154c 100644
---- a/src/argon2/core.h
-+++ b/src/argon2/core.h
-@@ -53,7 +53,7 @@ typedef struct block_ { uint64_t v[ARGON2_QWORDS_IN_BLOCK]; } block;
-
- /*****************Functions that work with the block******************/
-
--/* Initialize each byte of the block with @in */
-+/* initialize_wowseed each byte of the block with @in */
- void init_block_value(block *b, uint8_t in);
-
- /* Copy block @src to block @dst */
-@@ -158,7 +158,7 @@ uint32_t index_alpha(const argon2_instance_t *instance,
- * @return ARGON2_OK if everything is all right, otherwise one of error codes
- * (all defined in <argon2.h>
- */
--int validate_inputs(const argon2_context *context);
-+int validate_inputs_wowseed(const argon2_context *context);
-
- /*
- * Hashes all the inputs into @a blockhash[PREHASH_DIGEST_LENGTH], clears
-@@ -170,28 +170,27 @@ int validate_inputs(const argon2_context *context);
- * @pre @a blockhash must have at least @a PREHASH_DIGEST_LENGTH bytes
- * allocated
- */
--void initial_hash(uint8_t *blockhash, argon2_context *context,
-+void initial_hash_wowseed(uint8_t *blockhash, argon2_context *context,
- argon2_type type);
--
- /*
- * Function creates first 2 blocks per lane
- * @param instance Pointer to the current instance
- * @param blockhash Pointer to the pre-hashing digest
- * @pre blockhash must point to @a PREHASH_SEED_LENGTH allocated values
- */
--void fill_first_blocks(uint8_t *blockhash, const argon2_instance_t *instance);
-+void fill_first_blocks_wowseed(uint8_t *blockhash, const argon2_instance_t *instance);
-
- /*
- * Function allocates memory, hashes the inputs with Blake, and creates first
- * two blocks. Returns the pointer to the main memory with 2 blocks per lane
-- * initialized
-+ * initialize_wowseedd
- * @param context Pointer to the Argon2 internal structure containing memory
- * pointer, and parameters for time and space requirements.
- * @param instance Current Argon2 instance
- * @return Zero if successful, -1 if memory failed to allocate. @context->state
- * will be modified if successful.
- */
--int initialize(argon2_instance_t *instance, argon2_context *context);
-+int initialize_wowseed(argon2_instance_t *instance, argon2_context *context);
-
- /*
- * XORing the last block of each lane, hashing it, making the tag. Deallocates
-@@ -204,7 +203,7 @@ int initialize(argon2_instance_t *instance, argon2_context *context);
- * @pre if context->free_cbk is not NULL, it should point to a function that
- * deallocates memory
- */
--void finalize(const argon2_context *context, argon2_instance_t *instance);
-+void finalize_wowseed(const argon2_context *context, argon2_instance_t *instance);
-
- /*
- * Function that fills the segment using previous segments also from other
-@@ -223,6 +222,6 @@ void fill_segment(const argon2_instance_t *instance,
- * @param instance Pointer to the current instance
- * @return ARGON2_OK if successful, @context->state
- */
--int fill_memory_blocks(argon2_instance_t *instance);
-+int _fill_memory_blocks_wowseed(argon2_instance_t *instance);
-
- #endif
-diff --git a/src/argon2/ref.c b/src/argon2/ref.c
-index ad1cf46..7edbd6e 100644
---- a/src/argon2/ref.c
-+++ b/src/argon2/ref.c
-@@ -29,7 +29,7 @@
-
- /*
- * Function fills a new memory block and optionally XORs the old block over the new one.
-- * @next_block must be initialized.
-+ * @next_block must be initialize_wowseedd.
- * @param prev_block Pointer to the previous block
- * @param ref_block Pointer to the reference block
- * @param next_block Pointer to the block to be constructed
---
-2.39.2
diff --git a/contrib/depends/toolchain.cmake.in b/contrib/depends/toolchain.cmake.in
index 7c40918..2e0ba52 100644
--- a/contrib/depends/toolchain.cmake.in
+++ b/contrib/depends/toolchain.cmake.in
@@ -193,6 +193,8 @@ if(ARCHITECTURE STREQUAL "x86_64")
endif()
link_directories(@prefix@/lib)
+include_directories(@prefix@/include)
+include_directories(@prefix@/include/wownero_seed)
add_definitions(-DPOLYSEED_STATIC=ON)
diff --git a/monero_libwallet2_api_c/CMakeLists.txt b/monero_libwallet2_api_c/CMakeLists.txt
index 06e8fb8..dadafc6 100644
--- a/monero_libwallet2_api_c/CMakeLists.txt
+++ b/monero_libwallet2_api_c/CMakeLists.txt
@@ -83,11 +83,7 @@ endif()
add_subdirectory("${CMAKE_SOURCE_DIR}/../${MONERO_FLAVOR}" ${CMAKE_BINARY_DIR}/${MONERO_FLAVOR}_build EXCLUDE_FROM_ALL)
-#get_cmake_property(_variableNames VARIABLES)
-#list (SORT _variableNames)
-#foreach (_variableName ${_variableNames})
-# message(STATUS "${_variableName}=${${_variableName}}")
-#endforeach()
+
if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" OR ${HOST_ABI} STREQUAL "host-apple-darwin" OR ${HOST_ABI} STREQUAL "x86_64-host-apple-darwin" OR ${HOST_ABI} STREQUAL "aarch64-host-apple-darwin" OR ${HOST_ABI} STREQUAL "host-apple-ios" OR ${HOST_ABI} STREQUAL "aarch64-apple-ios")
if (${MONERO_FLAVOR} STREQUAL "monero")
@@ -101,22 +97,20 @@ if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64
endif()
if(${MONERO_FLAVOR} STREQUAL "wownero")
+ add_subdirectory(wownero-seed EXCLUDE_FROM_ALL)
set(EXTRA_LIBS_WOWNEROSEED wownero-seed)
- if(${HOST_ABI} STREQUAL "aarch64-meego-linux-gnu")
- add_library(wownero-seed STATIC IMPORTED)
- set_target_properties(wownero-seed PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib64/libwownero-seed.a)
- else()
- add_library(wownero-seed STATIC IMPORTED)
- set_target_properties(wownero-seed PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libwownero-seed.a)
- endif()
endif()
+
+#get_cmake_property(_variableNames VARIABLES)
+#list (SORT _variableNames)
+#foreach (_variableName ${_variableNames})
+# message(STATUS "${_variableName}=${${_variableName}}")
+#endforeach()
+
target_link_libraries( wallet2_api_c
wallet_api
- ${wallet_api_LIB_DEPENDS}
-
- ${EXTRA_LIBS_ANDROID}
${EXTRA_LIBS_WOWNEROSEED}
+ ${EXTRA_LIBS_ANDROID}
+ ${wallet_api_LIB_DEPENDS}
) \ No newline at end of file
diff --git a/patches/wownero/0001-wallet-background-sync-with-just-the-view-key.patch b/patches/wownero/0001-wallet-background-sync-with-just-the-view-key.patch
index 0548326..d41e362 100644
--- a/patches/wownero/0001-wallet-background-sync-with-just-the-view-key.patch
+++ b/patches/wownero/0001-wallet-background-sync-with-just-the-view-key.patch
@@ -1,7 +1,7 @@
-From 561c17511802188e7de3d37b696adab2cd1c63fe Mon Sep 17 00:00:00 2001
+From a722b7a7ca6b887ad56650ac2b331088547b221c Mon Sep 17 00:00:00 2001
From: j-berman <justinberman@protonmail.com>
Date: Thu, 13 Oct 2022 18:33:33 -0700
-Subject: [PATCH 01/14] wallet: background sync with just the view key
+Subject: [PATCH 01/17] wallet: background sync with just the view key
- When background syncing, the wallet wipes the spend key
from memory and processes all new transactions. The wallet saves
@@ -50,7 +50,7 @@ cache.
20 files changed, 2337 insertions(+), 130 deletions(-)
diff --git a/src/cryptonote_basic/account.cpp b/src/cryptonote_basic/account.cpp
-index 2ac455f..4e87d44 100644
+index 2ac455fda..4e87d4477 100644
--- a/src/cryptonote_basic/account.cpp
+++ b/src/cryptonote_basic/account.cpp
@@ -152,6 +152,17 @@ DISABLE_VS_WARNINGS(4244 4345)
@@ -72,7 +72,7 @@ index 2ac455f..4e87d44 100644
{
crypto::secret_key first = generate_keys(m_keys.m_account_address.m_spend_public_key, m_keys.m_spend_secret_key, recovery_key, recover);
diff --git a/src/cryptonote_basic/account.h b/src/cryptonote_basic/account.h
-index 2ee9545..93d1d28 100644
+index 2ee9545d4..93d1d28f0 100644
--- a/src/cryptonote_basic/account.h
+++ b/src/cryptonote_basic/account.h
@@ -95,6 +95,7 @@ namespace cryptonote
@@ -84,7 +84,7 @@ index 2ee9545..93d1d28 100644
void encrypt_keys(const crypto::chacha_key &key) { m_keys.encrypt(key); }
diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h
-index 8c0d3ce..8b5091a 100644
+index 8c0d3ce20..8b5091a46 100644
--- a/src/cryptonote_config.h
+++ b/src/cryptonote_config.h
@@ -253,6 +253,8 @@ namespace config
@@ -97,7 +97,7 @@ index 8c0d3ce..8b5091a 100644
const unsigned char HASH_KEY_MEMORY = 'k';
const unsigned char HASH_KEY_MULTISIG[] = {'M', 'u', 'l', 't' , 'i', 's', 'i', 'g', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp
-index 462c06f..8c51220 100644
+index 462c06f0e..8c5122097 100644
--- a/src/simplewallet/simplewallet.cpp
+++ b/src/simplewallet/simplewallet.cpp
@@ -155,6 +155,17 @@ typedef cryptonote::simple_wallet sw;
@@ -722,7 +722,7 @@ index 462c06f..8c51220 100644
{
PRINT_USAGE(USAGE_IMPORT_OUTPUTS);
diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h
-index d641dca..b98a407 100644
+index d641dca1b..b98a40713 100644
--- a/src/simplewallet/simplewallet.h
+++ b/src/simplewallet/simplewallet.h
@@ -147,6 +147,7 @@ namespace cryptonote
@@ -734,7 +734,7 @@ index d641dca..b98a407 100644
bool set_inactivity_lock_timeout(const std::vector<std::string> &args = std::vector<std::string>());
bool set_setup_background_mining(const std::vector<std::string> &args = std::vector<std::string>());
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index e81265a..e868fa0 100644
+index e81265ad3..e868fa039 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -54,6 +54,40 @@ using namespace cryptonote;
@@ -1199,7 +1199,7 @@ index e81265a..e868fa0 100644
setStatusError(tr("Rescan spent can only be used with a trusted daemon"));
return false;
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
-index ec2d7e9..1f199a7 100644
+index ec2d7e9b3..1f199a72c 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -171,6 +171,13 @@ public:
@@ -1236,7 +1236,7 @@ index ec2d7e9..1f199a7 100644
std::unique_ptr<TransactionHistoryImpl> m_history;
std::unique_ptr<Wallet2CallbackImpl> m_wallet2Callback;
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
-index 71991df..e349df1 100644
+index 71991df0d..e349df176 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -445,6 +445,12 @@ struct Wallet
@@ -1296,7 +1296,7 @@ index 71991df..e349df1 100644
virtual AddressBook * addressBook() = 0;
virtual Subaddress * subaddress() = 0;
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
-index 30b3502..8ce515c 100644
+index 30b3502dc..8ce515c57 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -157,6 +157,8 @@ static const std::string MULTISIG_SIGNATURE_MAGIC = "SigMultisigPkV1";
@@ -2740,7 +2740,7 @@ index 30b3502..8ce515c 100644
{
payment_container payments;
diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h
-index 7513723..295976b 100644
+index 75137237b..295976b53 100644
--- a/src/wallet/wallet2.h
+++ b/src/wallet/wallet2.h
@@ -256,6 +256,20 @@ private:
@@ -3050,7 +3050,7 @@ index 7513723..295976b 100644
}
diff --git a/src/wallet/wallet_errors.h b/src/wallet/wallet_errors.h
-index c077313..c54cd34 100644
+index c077313d4..c54cd3499 100644
--- a/src/wallet/wallet_errors.h
+++ b/src/wallet/wallet_errors.h
@@ -63,6 +63,7 @@ namespace tools
@@ -3121,7 +3121,7 @@ index c077313..c54cd34 100644
#if !defined(_MSC_VER)
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp
-index 6fc9962..3cc6b27 100644
+index 6fc996299..3cc6b278f 100644
--- a/src/wallet/wallet_rpc_server.cpp
+++ b/src/wallet/wallet_rpc_server.cpp
@@ -73,6 +73,54 @@ using namespace epee;
@@ -3567,7 +3567,7 @@ index 6fc9962..3cc6b27 100644
try
{
diff --git a/src/wallet/wallet_rpc_server.h b/src/wallet/wallet_rpc_server.h
-index 3308d17..c2329aa 100644
+index 3308d1751..c2329aafe 100644
--- a/src/wallet/wallet_rpc_server.h
+++ b/src/wallet/wallet_rpc_server.h
@@ -160,6 +160,9 @@ namespace tools
@@ -3591,7 +3591,7 @@ index 3308d17..c2329aa 100644
//json rpc v2
bool on_query_key(const wallet_rpc::COMMAND_RPC_QUERY_KEY::request& req, wallet_rpc::COMMAND_RPC_QUERY_KEY::response& res, epee::json_rpc::error& er, const connection_context *ctx = NULL);
diff --git a/src/wallet/wallet_rpc_server_commands_defs.h b/src/wallet/wallet_rpc_server_commands_defs.h
-index b6098d9..a44b56e 100644
+index b6098d95c..a44b56ed6 100644
--- a/src/wallet/wallet_rpc_server_commands_defs.h
+++ b/src/wallet/wallet_rpc_server_commands_defs.h
@@ -2696,5 +2696,69 @@ namespace wallet_rpc
@@ -3665,7 +3665,7 @@ index b6098d9..a44b56e 100644
}
}
diff --git a/src/wallet/wallet_rpc_server_error_codes.h b/src/wallet/wallet_rpc_server_error_codes.h
-index 541d29f..4756c19 100644
+index 541d29f86..4756c191c 100644
--- a/src/wallet/wallet_rpc_server_error_codes.h
+++ b/src/wallet/wallet_rpc_server_error_codes.h
@@ -81,3 +81,5 @@
@@ -3675,7 +3675,7 @@ index 541d29f..4756c19 100644
+#define WALLET_RPC_ERROR_CODE_IS_BACKGROUND_WALLET -51
+#define WALLET_RPC_ERROR_CODE_IS_BACKGROUND_SYNCING -52
diff --git a/tests/functional_tests/transfer.py b/tests/functional_tests/transfer.py
-index 4063911..60eb09a 100755
+index 4063911f4..60eb09a10 100755
--- a/tests/functional_tests/transfer.py
+++ b/tests/functional_tests/transfer.py
@@ -30,6 +30,7 @@
@@ -4113,7 +4113,7 @@ index 4063911..60eb09a 100755
if __name__ == '__main__':
TransferTest().run_test()
diff --git a/tests/functional_tests/util_resources.py b/tests/functional_tests/util_resources.py
-index e030312..3ca6fdb 100755
+index e030312da..3ca6fdb86 100755
--- a/tests/functional_tests/util_resources.py
+++ b/tests/functional_tests/util_resources.py
@@ -37,6 +37,8 @@
@@ -4153,7 +4153,7 @@ index e030312..3ca6fdb 100755
+ assert WALLET_DIRECTORY != ''
+ return os.path.isfile(WALLET_DIRECTORY + '/' + name)
diff --git a/tests/functional_tests/wallet.py b/tests/functional_tests/wallet.py
-index 1ad05c9..8182cec 100755
+index 1ad05c98f..8182cecb2 100755
--- a/tests/functional_tests/wallet.py
+++ b/tests/functional_tests/wallet.py
@@ -34,8 +34,7 @@
@@ -4244,7 +4244,7 @@ index 1ad05c9..8182cec 100755
if __name__ == '__main__':
diff --git a/tests/unit_tests/wipeable_string.cpp b/tests/unit_tests/wipeable_string.cpp
-index ef6964f..25121a0 100644
+index ef6964f9e..25121a02e 100644
--- a/tests/unit_tests/wipeable_string.cpp
+++ b/tests/unit_tests/wipeable_string.cpp
@@ -211,3 +211,15 @@ TEST(wipeable_string, to_hex)
@@ -4264,7 +4264,7 @@ index ef6964f..25121a0 100644
+ ASSERT_TRUE(str == std::string("foo"));
+}
diff --git a/utils/python-rpc/framework/wallet.py b/utils/python-rpc/framework/wallet.py
-index 1e10e1f..bff33a5 100644
+index 1e10e1f86..bff33a561 100644
--- a/utils/python-rpc/framework/wallet.py
+++ b/utils/python-rpc/framework/wallet.py
@@ -1138,3 +1138,45 @@ class Wallet(object):
diff --git a/patches/wownero/0002-fix-missing-___clear_cache-when-targetting-iOS.patch b/patches/wownero/0002-fix-missing-___clear_cache-when-targetting-iOS.patch
index 0fababa..8bd89c4 100644
--- a/patches/wownero/0002-fix-missing-___clear_cache-when-targetting-iOS.patch
+++ b/patches/wownero/0002-fix-missing-___clear_cache-when-targetting-iOS.patch
@@ -1,14 +1,14 @@
-From 25c6f31dfea1a4940efee80789f63a7fe41854aa Mon Sep 17 00:00:00 2001
+From 36f3c8e3a69c2cca71ce7fcc9a5095e9153170ce Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Wed, 23 Oct 2024 15:18:21 +0200
-Subject: [PATCH 02/14] fix missing ___clear_cache when targetting iOS
+Subject: [PATCH 02/17] fix missing ___clear_cache when targetting iOS
---
external/randomwow | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/external/randomwow b/external/randomwow
-index 27b099b..057f5f8 160000
+index 27b099b6d..c00685dad 160000
--- a/external/randomwow
+++ b/external/randomwow
@@ -1 +1 @@
diff --git a/patches/wownero/0003-fix-is_trivially_copyable.patch b/patches/wownero/0003-fix-is_trivially_copyable.patch
index 1a86ed6..553af86 100644
--- a/patches/wownero/0003-fix-is_trivially_copyable.patch
+++ b/patches/wownero/0003-fix-is_trivially_copyable.patch
@@ -1,14 +1,14 @@
-From 4f88afa6f7fb6fadd1df44148e0a8f2d82d1fe87 Mon Sep 17 00:00:00 2001
+From 8c4d673da3adc9c97962e09dc62ce29de73be829 Mon Sep 17 00:00:00 2001
From: cyan <cyjan@mrcyjanek.net>
Date: Tue, 22 Oct 2024 10:23:18 +0000
-Subject: [PATCH 03/14] fix is_trivially_copyable
+Subject: [PATCH 03/17] fix is_trivially_copyable
---
contrib/epee/include/span.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/contrib/epee/include/span.h b/contrib/epee/include/span.h
-index 01dc387..5e3af4d 100644
+index 01dc387d6..5e3af4d11 100644
--- a/contrib/epee/include/span.h
+++ b/contrib/epee/include/span.h
@@ -151,7 +151,6 @@ namespace epee
diff --git a/patches/wownero/0004-store-crash-fix.patch b/patches/wownero/0004-store-crash-fix.patch
index f04c98a..739c67f 100644
--- a/patches/wownero/0004-store-crash-fix.patch
+++ b/patches/wownero/0004-store-crash-fix.patch
@@ -1,7 +1,7 @@
-From 149be435f556ef1163abbf82b6b54872dc74025b Mon Sep 17 00:00:00 2001
+From fb3c06a713325f63bc090c5e09e46a63bdaa8c2d Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Sat, 11 May 2024 16:25:10 +0200
-Subject: [PATCH 04/14] store crash fix
+Subject: [PATCH 04/17] store crash fix
Monero wallet crashes (sometimes) when it is syncing,
while the proper solution (that can be seen in feather)
@@ -43,7 +43,7 @@ the current state.
4 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index e868fa0..899ef04 100644
+index e868fa039..899ef044a 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -55,8 +55,8 @@ using namespace cryptonote;
@@ -135,7 +135,7 @@ index e868fa0..899ef04 100644
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
-index 1f199a7..ac7ce2f 100644
+index 1f199a72c..ac7ce2f6a 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -273,7 +273,6 @@ private:
@@ -147,7 +147,7 @@ index 1f199a7..ac7ce2f 100644
std::atomic<int> m_refreshIntervalMillis;
std::atomic<bool> m_refreshShouldRescan;
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
-index 8ce515c..651161d 100644
+index 8ce515c57..651161d14 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -1192,6 +1192,7 @@ wallet2::wallet2(network_type nettype, uint64_t kdf_rounds, bool unattended, std
@@ -185,7 +185,7 @@ index 8ce515c..651161d 100644
std::vector<cryptonote::block_complete_entry> next_blocks;
std::vector<parsed_block> next_parsed_blocks;
diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h
-index 295976b..c07a47c 100644
+index 295976b53..c07a47c11 100644
--- a/src/wallet/wallet2.h
+++ b/src/wallet/wallet2.h
@@ -1071,6 +1071,8 @@ private:
diff --git a/patches/wownero/0005-Update-android-ndk.patch b/patches/wownero/0005-Update-android-ndk.patch
index 57b5ffb..8a781b6 100644
--- a/patches/wownero/0005-Update-android-ndk.patch
+++ b/patches/wownero/0005-Update-android-ndk.patch
@@ -1,7 +1,7 @@
-From 6cc0e6fdccfd48065a03a741f65258f563a9900f Mon Sep 17 00:00:00 2001
+From 05d9d0ca610daab96634ffaddafeeb7ff931148c Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Thu, 23 May 2024 08:02:49 +0200
-Subject: [PATCH 05/14] Update android ndk
+Subject: [PATCH 05/17] Update android ndk
rename arm -> armv7a
---
@@ -13,7 +13,7 @@ rename arm -> armv7a
5 files changed, 44 insertions(+), 18 deletions(-)
diff --git a/contrib/depends/hosts/android.mk b/contrib/depends/hosts/android.mk
-index d6f8b99..827103c 100644
+index d6f8b99dd..827103c36 100644
--- a/contrib/depends/hosts/android.mk
+++ b/contrib/depends/hosts/android.mk
@@ -1,12 +1,22 @@
@@ -44,7 +44,7 @@ index d6f8b99..827103c 100644
android_CFLAGS=-pipe
android_CXXFLAGS=$(android_CFLAGS)
diff --git a/contrib/depends/packages/android_ndk.mk b/contrib/depends/packages/android_ndk.mk
-index 9b8a533..2c2914e 100644
+index 9b8a5332f..2c2914ec2 100644
--- a/contrib/depends/packages/android_ndk.mk
+++ b/contrib/depends/packages/android_ndk.mk
@@ -1,12 +1,16 @@
@@ -92,7 +92,7 @@ index 9b8a533..2c2914e 100644
endef
diff --git a/contrib/depends/packages/boost.mk b/contrib/depends/packages/boost.mk
-index fd06c53..c17e863 100644
+index fd06c5393..c17e863cc 100644
--- a/contrib/depends/packages/boost.mk
+++ b/contrib/depends/packages/boost.mk
@@ -25,6 +25,7 @@ $(package)_archiver_darwin=$($(package)_libtool)
@@ -104,7 +104,7 @@ index fd06c53..c17e863 100644
endef
diff --git a/contrib/depends/packages/openssl.mk b/contrib/depends/packages/openssl.mk
-index a157762..2430f64 100644
+index a157762c7..2430f6495 100644
--- a/contrib/depends/packages/openssl.mk
+++ b/contrib/depends/packages/openssl.mk
@@ -34,7 +34,7 @@ $(package)_config_opts_x86_64_linux=linux-x86_64
@@ -117,7 +117,7 @@ index a157762..2430f64 100644
$(package)_config_opts_aarch64_darwin=darwin64-arm64-cc
$(package)_config_opts_riscv64_linux=linux-generic64
diff --git a/contrib/depends/toolchain.cmake.in b/contrib/depends/toolchain.cmake.in
-index f118c75..cc1d9b5 100644
+index f118c754e..cc1d9b5c5 100644
--- a/contrib/depends/toolchain.cmake.in
+++ b/contrib/depends/toolchain.cmake.in
@@ -100,20 +100,21 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
diff --git a/patches/wownero/0006-uint64_t-missing-definition-fix.patch b/patches/wownero/0006-uint64_t-missing-definition-fix.patch
index e57102e..8ee8e0b 100644
--- a/patches/wownero/0006-uint64_t-missing-definition-fix.patch
+++ b/patches/wownero/0006-uint64_t-missing-definition-fix.patch
@@ -1,14 +1,14 @@
-From 2db1ea14b07823eed4bdfa872f7b1f40019e4bef Mon Sep 17 00:00:00 2001
+From aca7cc3b8a3c2c19d46c07b2f0b5b9d6d23cbde6 Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Mon, 2 Sep 2024 16:40:31 +0200
-Subject: [PATCH 06/14] uint64_t missing definition fix
+Subject: [PATCH 06/17] uint64_t missing definition fix
---
contrib/epee/include/net/http_base.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contrib/epee/include/net/http_base.h b/contrib/epee/include/net/http_base.h
-index 4af4da7..ae4c0d0 100644
+index 4af4da790..ae4c0d05e 100644
--- a/contrib/epee/include/net/http_base.h
+++ b/contrib/epee/include/net/http_base.h
@@ -28,7 +28,7 @@
diff --git a/patches/wownero/0007-use-proper-error-handling-in-get_seed.patch b/patches/wownero/0007-use-proper-error-handling-in-get_seed.patch
index d0d5aac..1781efb 100644
--- a/patches/wownero/0007-use-proper-error-handling-in-get_seed.patch
+++ b/patches/wownero/0007-use-proper-error-handling-in-get_seed.patch
@@ -1,7 +1,7 @@
-From 9f186308301738bdd5deb53a77471f2f5ce40766 Mon Sep 17 00:00:00 2001
+From 8539d33a80d584afddf4aed7cd653afbb1d578e0 Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Mon, 24 Jun 2024 10:49:12 +0200
-Subject: [PATCH 07/14] use proper error handling in get_seed
+Subject: [PATCH 07/17] use proper error handling in get_seed
---
src/wallet/api/wallet.cpp | 17 ++++++++++++-----
@@ -9,7 +9,7 @@ Subject: [PATCH 07/14] use proper error handling in get_seed
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index 899ef04..e16d8f8 100644
+index 899ef044a..e16d8f83f 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -826,12 +826,19 @@ bool WalletImpl::close(bool store)
@@ -38,7 +38,7 @@ index 899ef04..e16d8f8 100644
std::string WalletImpl::getSeedLanguage() const
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
-index 651161d..1e527cf 100644
+index 651161d14..1e527cf97 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -1440,11 +1440,13 @@ bool wallet2::get_seed(epee::wipeable_string& electrum_words, const epee::wipeab
diff --git a/patches/wownero/0008-UR-functions.patch b/patches/wownero/0008-UR-functions.patch
index ce2867e..e6991ae 100644
--- a/patches/wownero/0008-UR-functions.patch
+++ b/patches/wownero/0008-UR-functions.patch
@@ -1,7 +1,7 @@
-From 9c4df0e534ec8c04d95620ab7032771edb6f981e Mon Sep 17 00:00:00 2001
+From 0fe44ec3cb8f4b210e2c7a8a6191abfe89d250a9 Mon Sep 17 00:00:00 2001
From: tobtoht <tob@featherwallet.org>
Date: Tue, 12 Mar 2024 10:09:50 +0100
-Subject: [PATCH 08/14] UR functions
+Subject: [PATCH 08/17] UR functions
This commit adds UR functions for UR tasks,
I believe that the right place to get
@@ -40,7 +40,7 @@ Things broken in the commit
create mode 160000 external/bc-ur
diff --git a/.gitmodules b/.gitmodules
-index 991071f..b24855d 100644
+index 991071fbe..b24855d9b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -16,4 +16,7 @@
@@ -53,7 +53,7 @@ index 991071f..b24855d 100644
+ url = https://github.com/MrCyjaneK/bc-ur
+ branch = misc
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e387ffb..8b81c7a 100644
+index e387ffb1b..8b81c7ab7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -96,7 +96,8 @@ enable_language(C ASM)
@@ -75,7 +75,7 @@ index e387ffb..8b81c7a 100644
check_submodule(external/rapidjson)
#check_submodule(external/trezor-common)
diff --git a/contrib/depends/hosts/darwin.mk b/contrib/depends/hosts/darwin.mk
-index 79d4490..83d8303 100644
+index 79d449054..83d83036b 100644
--- a/contrib/depends/hosts/darwin.mk
+++ b/contrib/depends/hosts/darwin.mk
@@ -1,4 +1,4 @@
@@ -85,7 +85,7 @@ index 79d4490..83d8303 100644
ifeq (aarch64, $(host_arch))
CC_target=arm64-apple-$(host_os)
diff --git a/contrib/depends/toolchain.cmake.in b/contrib/depends/toolchain.cmake.in
-index cc1d9b5..48a6f94 100644
+index cc1d9b5c5..48a6f947e 100644
--- a/contrib/depends/toolchain.cmake.in
+++ b/contrib/depends/toolchain.cmake.in
@@ -94,7 +94,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@@ -98,7 +98,7 @@ index cc1d9b5..48a6f94 100644
SET(LLVM_ENABLE_PIC OFF)
SET(LLVM_ENABLE_PIE OFF)
diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
-index 3184ae5..88a7bb0 100644
+index 3184ae5a1..88a7bb0b5 100644
--- a/external/CMakeLists.txt
+++ b/external/CMakeLists.txt
@@ -72,4 +72,5 @@ endif()
@@ -109,13 +109,13 @@ index 3184ae5..88a7bb0 100644
add_subdirectory(randomwow EXCLUDE_FROM_ALL)
diff --git a/external/bc-ur b/external/bc-ur
new file mode 160000
-index 0000000..d82e7c7
+index 000000000..d82e7c753
--- /dev/null
+++ b/external/bc-ur
@@ -0,0 +1 @@
+Subproject commit d82e7c753e710b8000706dc3383b498438795208
diff --git a/src/device/device_ledger.cpp b/src/device/device_ledger.cpp
-index 9961d13..8403d76 100644
+index 9961d13e7..8403d76e8 100644
--- a/src/device/device_ledger.cpp
+++ b/src/device/device_ledger.cpp
@@ -313,12 +313,13 @@ namespace hw {
@@ -135,7 +135,7 @@ index 9961d13..8403d76 100644
boost::lock_guard<boost::recursive_mutex> lock1(device_locker, boost::adopt_lock); \
boost::lock_guard<boost::mutex> lock2(command_locker, boost::adopt_lock)
diff --git a/src/wallet/CMakeLists.txt b/src/wallet/CMakeLists.txt
-index fdf3f2f..66384fe 100644
+index fdf3f2f5d..66384fe31 100644
--- a/src/wallet/CMakeLists.txt
+++ b/src/wallet/CMakeLists.txt
@@ -50,6 +50,7 @@ monero_add_library(wallet
@@ -147,7 +147,7 @@ index fdf3f2f..66384fe 100644
common
cryptonote_core
diff --git a/src/wallet/api/pending_transaction.cpp b/src/wallet/api/pending_transaction.cpp
-index 70a7027..9c3c26e 100644
+index 70a702796..9c3c26ee5 100644
--- a/src/wallet/api/pending_transaction.cpp
+++ b/src/wallet/api/pending_transaction.cpp
@@ -42,6 +42,8 @@
@@ -198,7 +198,7 @@ index 70a7027..9c3c26e 100644
{
uint64_t result = 0;
diff --git a/src/wallet/api/pending_transaction.h b/src/wallet/api/pending_transaction.h
-index 0a9779c..403bfe2 100644
+index 0a9779c07..403bfe281 100644
--- a/src/wallet/api/pending_transaction.h
+++ b/src/wallet/api/pending_transaction.h
@@ -46,6 +46,7 @@ public:
@@ -210,7 +210,7 @@ index 0a9779c..403bfe2 100644
uint64_t dust() const override;
uint64_t fee() const override;
diff --git a/src/wallet/api/unsigned_transaction.cpp b/src/wallet/api/unsigned_transaction.cpp
-index 6165a22..fd03e95 100644
+index 6165a2240..fd03e959d 100644
--- a/src/wallet/api/unsigned_transaction.cpp
+++ b/src/wallet/api/unsigned_transaction.cpp
@@ -40,6 +40,8 @@
@@ -270,7 +270,7 @@ index 6165a22..fd03e95 100644
bool UnsignedTransactionImpl::checkLoadedTx(const std::function<size_t()> get_num_txes, const std::function<const tools::wallet2::tx_construction_data&(size_t)> &get_tx, const std::string &extra_message)
{
diff --git a/src/wallet/api/unsigned_transaction.h b/src/wallet/api/unsigned_transaction.h
-index 30065a7..a94b23f 100644
+index 30065a7fa..a94b23f75 100644
--- a/src/wallet/api/unsigned_transaction.h
+++ b/src/wallet/api/unsigned_transaction.h
@@ -53,6 +53,7 @@ public:
@@ -282,7 +282,7 @@ index 30065a7..a94b23f 100644
uint64_t minMixinCount() const override;
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index e16d8f8..ee000e7 100644
+index e16d8f83f..ee000e7ab 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -47,6 +47,7 @@
@@ -658,7 +658,7 @@ index e16d8f8..ee000e7 100644
{
if (checkBackgroundSync("cannot scan transactions"))
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
-index ac7ce2f..edf8bb8 100644
+index ac7ce2f6a..edf8bb8ce 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -112,6 +112,7 @@ public:
@@ -689,7 +689,7 @@ index ac7ce2f..edf8bb8 100644
bool setupBackgroundSync(const BackgroundSyncType background_sync_type, const std::string &wallet_password, const optional<std::string> &background_cache_password = optional<std::string>()) override;
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
-index e349df1..764adbf 100644
+index e349df176..764adbfbf 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -91,6 +91,7 @@ struct PendingTransaction
@@ -780,7 +780,7 @@ index e349df1..764adbf 100644
/*!
* \brief scanTransactions - scan a list of transaction ids, this operation may reveal the txids to the remote node and affect your privacy
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
-index 1e527cf..671fa52 100644
+index 1e527cf97..671fa5298 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -948,6 +948,16 @@ uint32_t get_subaddress_clamped_sum(uint32_t idx, uint32_t extra)
@@ -1008,7 +1008,7 @@ index 1e527cf..671fa52 100644
ski.push_back(std::make_pair(key_image, signature));
}
diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h
-index c07a47c..80ff069 100644
+index c07a47c11..80ff0698d 100644
--- a/src/wallet/wallet2.h
+++ b/src/wallet/wallet2.h
@@ -1150,6 +1150,7 @@ private:
diff --git a/patches/wownero/0009-add-dummy-device-for-ledger.patch b/patches/wownero/0009-add-dummy-device-for-ledger.patch
index cb2a82e..0195049 100644
--- a/patches/wownero/0009-add-dummy-device-for-ledger.patch
+++ b/patches/wownero/0009-add-dummy-device-for-ledger.patch
@@ -1,7 +1,7 @@
-From 45b79176318ccf64154e85bd41db10708999023c Mon Sep 17 00:00:00 2001
+From 08301e22d38bf69b35cda50111f95af120f98a3f Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Wed, 26 Jun 2024 15:04:38 +0200
-Subject: [PATCH 09/14] add dummy device for ledger
+Subject: [PATCH 09/17] add dummy device for ledger
---
CMakeLists.txt | 6 +-
@@ -20,7 +20,7 @@ Subject: [PATCH 09/14] add dummy device for ledger
create mode 100644 src/device/device_io_dummy.hpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 8b81c7a..abe44ec 100644
+index 8b81c7ab7..abe44eca5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -709,8 +709,12 @@ include_directories(${LMDB_INCLUDE})
@@ -38,7 +38,7 @@ index 8b81c7a..abe44ec 100644
add_definitions(-DHAVE_HIDAPI)
include_directories(${HIDAPI_INCLUDE_DIR})
diff --git a/src/device/CMakeLists.txt b/src/device/CMakeLists.txt
-index e4f1159..14d398f 100644
+index e4f1159b5..14d398f87 100644
--- a/src/device/CMakeLists.txt
+++ b/src/device/CMakeLists.txt
@@ -29,10 +29,11 @@
@@ -68,7 +68,7 @@ index e4f1159..14d398f 100644
${device_headers}
device_ledger.hpp
diff --git a/src/device/device.cpp b/src/device/device.cpp
-index e6cd358..636929f 100644
+index e6cd358b6..636929feb 100644
--- a/src/device/device.cpp
+++ b/src/device/device.cpp
@@ -29,7 +29,7 @@
@@ -106,7 +106,7 @@ index e6cd358..636929f 100644
return *device->second;
}
diff --git a/src/device/device.hpp b/src/device/device.hpp
-index 392703a..ffd4197 100644
+index 392703a24..ffd419779 100644
--- a/src/device/device.hpp
+++ b/src/device/device.hpp
@@ -34,17 +34,7 @@
@@ -130,7 +130,7 @@ index 392703a..ffd4197 100644
diff --git a/src/device/device_io_dummy.cpp b/src/device/device_io_dummy.cpp
new file mode 100644
-index 0000000..fb08269
+index 000000000..fb082694e
--- /dev/null
+++ b/src/device/device_io_dummy.cpp
@@ -0,0 +1,133 @@
@@ -270,7 +270,7 @@ index 0000000..fb08269
\ No newline at end of file
diff --git a/src/device/device_io_dummy.hpp b/src/device/device_io_dummy.hpp
new file mode 100644
-index 0000000..a173361
+index 000000000..a1733616d
--- /dev/null
+++ b/src/device/device_io_dummy.hpp
@@ -0,0 +1,74 @@
@@ -349,7 +349,7 @@ index 0000000..a173361
+
+#endif // HAVE_HIDAPI
diff --git a/src/device/device_ledger.cpp b/src/device/device_ledger.cpp
-index 8403d76..db40a2e 100644
+index 8403d76e8..db40a2eb7 100644
--- a/src/device/device_ledger.cpp
+++ b/src/device/device_ledger.cpp
@@ -41,7 +41,7 @@ namespace hw {
@@ -381,7 +381,7 @@ index 8403d76..db40a2e 100644
#ifdef DEBUG_HWDEVICE
cryptonote::account_public_address pubkey;
diff --git a/src/device/device_ledger.hpp b/src/device/device_ledger.hpp
-index 03058c4..506f27c 100644
+index 03058c4f1..506f27c4a 100644
--- a/src/device/device_ledger.hpp
+++ b/src/device/device_ledger.hpp
@@ -35,6 +35,7 @@
@@ -414,7 +414,7 @@ index 03058c4..506f27c 100644
unsigned char buffer_send[BUFFER_SEND_SIZE];
unsigned int length_recv;
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index ee000e7..375edb4 100644
+index ee000e7ab..375edb4f1 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -48,6 +48,9 @@
@@ -524,7 +524,7 @@ index ee000e7..375edb4 100644
+
} // namespace
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
-index edf8bb8..4e9c21e 100644
+index edf8bb8ce..4e9c21ecb 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -301,6 +301,24 @@ private:
@@ -553,7 +553,7 @@ index edf8bb8..4e9c21e 100644
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
-index 764adbf..53ec4ab 100644
+index 764adbfbf..53ec4abfc 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -1150,6 +1150,18 @@ struct Wallet
diff --git a/patches/wownero/0010-polyseed.patch b/patches/wownero/0010-polyseed.patch
index e5f3112..e7711c9 100644
--- a/patches/wownero/0010-polyseed.patch
+++ b/patches/wownero/0010-polyseed.patch
@@ -1,7 +1,7 @@
-From 43eeedec72e5e2912118a51af5457ca7d489cdbb Mon Sep 17 00:00:00 2001
+From d1e443859c1b9e6845874fc30f7958da389846b3 Mon Sep 17 00:00:00 2001
From: tobtoht <tob@featherwallet.org>
Date: Tue, 12 Mar 2024 09:42:37 +0100
-Subject: [PATCH 10/14] polyseed
+Subject: [PATCH 10/17] polyseed
Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
---
@@ -49,7 +49,7 @@ Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
create mode 100644 src/polyseed/polyseed.hpp
diff --git a/.gitmodules b/.gitmodules
-index b24855d..5896766 100644
+index b24855d9b..589676649 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -20,3 +20,9 @@
@@ -64,7 +64,7 @@ index b24855d..5896766 100644
+ url = https://github.com/tevador/polyseed.git
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index abe44ec..85a62ef 100644
+index abe44eca5..85a62ef7b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -372,6 +372,8 @@ if(NOT MANUAL_SUBMODULES)
@@ -86,7 +86,7 @@ index abe44ec..85a62ef 100644
if(APPLE)
cmake_policy(SET CMP0042 NEW)
diff --git a/contrib/depends/hosts/darwin.mk b/contrib/depends/hosts/darwin.mk
-index 83d8303..b14ee5c 100644
+index 83d83036b..b14ee5c5b 100644
--- a/contrib/depends/hosts/darwin.mk
+++ b/contrib/depends/hosts/darwin.mk
@@ -8,6 +8,8 @@ endif
@@ -99,7 +99,7 @@ index 83d8303..b14ee5c 100644
darwin_CXXFLAGS=$(darwin_CFLAGS)
darwin_ARFLAGS=cr
diff --git a/contrib/depends/hosts/linux.mk b/contrib/depends/hosts/linux.mk
-index 912fdb0..b79799f 100644
+index 912fdb03c..b79799f30 100644
--- a/contrib/depends/hosts/linux.mk
+++ b/contrib/depends/hosts/linux.mk
@@ -11,15 +11,15 @@ linux_debug_CXXFLAGS=$(linux_debug_CFLAGS)
@@ -123,7 +123,7 @@ index 912fdb0..b79799f 100644
x86_64_linux_RANLIB=ranlib
x86_64_linux_NM=nm
diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk
-index d2d1eca..8783d49 100644
+index d2d1eca85..8783d4955 100644
--- a/contrib/depends/packages/packages.mk
+++ b/contrib/depends/packages/packages.mk
@@ -1,4 +1,4 @@
@@ -134,7 +134,7 @@ index d2d1eca..8783d49 100644
ifneq ($(GITIAN),1)
diff --git a/contrib/depends/packages/polyseed.mk b/contrib/depends/packages/polyseed.mk
new file mode 100644
-index 0000000..0071b20
+index 000000000..0071b20f3
--- /dev/null
+++ b/contrib/depends/packages/polyseed.mk
@@ -0,0 +1,28 @@
@@ -167,7 +167,7 @@ index 0000000..0071b20
+ $(MAKE) DESTDIR=$($(package)_staging_dir) install
+endef
diff --git a/contrib/depends/packages/sodium.mk b/contrib/depends/packages/sodium.mk
-index 87b3459..68a5b48 100644
+index 87b34599e..68a5b48ba 100644
--- a/contrib/depends/packages/sodium.mk
+++ b/contrib/depends/packages/sodium.mk
@@ -6,7 +6,7 @@ $(package)_sha256_hash=6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e
@@ -181,7 +181,7 @@ index 87b3459..68a5b48 100644
diff --git a/contrib/depends/patches/polyseed/0001-disable-soname.patch b/contrib/depends/patches/polyseed/0001-disable-soname.patch
new file mode 100644
-index 0000000..bd97dd3
+index 000000000..bd97dd394
--- /dev/null
+++ b/contrib/depends/patches/polyseed/0001-disable-soname.patch
@@ -0,0 +1,48 @@
@@ -235,7 +235,7 @@ index 0000000..bd97dd3
+2.39.2
diff --git a/contrib/depends/patches/polyseed/force-static-mingw.patch b/contrib/depends/patches/polyseed/force-static-mingw.patch
new file mode 100644
-index 0000000..f05cb2b
+index 000000000..f05cb2b6a
--- /dev/null
+++ b/contrib/depends/patches/polyseed/force-static-mingw.patch
@@ -0,0 +1,23 @@
@@ -263,7 +263,7 @@ index 0000000..f05cb2b
+ #else
+ #ifdef POLYSEED_SHARED
diff --git a/contrib/epee/include/wipeable_string.h b/contrib/epee/include/wipeable_string.h
-index 65977cd..594e15d 100644
+index 65977cd97..594e15de4 100644
--- a/contrib/epee/include/wipeable_string.h
+++ b/contrib/epee/include/wipeable_string.h
@@ -34,6 +34,7 @@
@@ -288,7 +288,7 @@ index 65977cd..594e15d 100644
private:
void grow(size_t sz, size_t reserved = 0);
diff --git a/contrib/epee/src/wipeable_string.cpp b/contrib/epee/src/wipeable_string.cpp
-index b016f2f..f2f365b 100644
+index b016f2f48..f2f365b1b 100644
--- a/contrib/epee/src/wipeable_string.cpp
+++ b/contrib/epee/src/wipeable_string.cpp
@@ -261,4 +261,14 @@ wipeable_string &wipeable_string::operator=(const wipeable_string &other)
@@ -307,7 +307,7 @@ index b016f2f..f2f365b 100644
+
}
diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
-index 88a7bb0..95be500 100644
+index 88a7bb0b5..95be500b1 100644
--- a/external/CMakeLists.txt
+++ b/external/CMakeLists.txt
@@ -73,4 +73,6 @@ add_subdirectory(db_drivers)
@@ -319,20 +319,20 @@ index 88a7bb0..95be500 100644
add_subdirectory(randomwow EXCLUDE_FROM_ALL)
diff --git a/external/polyseed b/external/polyseed
new file mode 160000
-index 0000000..dfb05d8
+index 000000000..bd79f5014
--- /dev/null
+++ b/external/polyseed
@@ -0,0 +1 @@
+Subproject commit bd79f5014c331273357277ed8a3d756fb61b9fa1
diff --git a/external/utf8proc b/external/utf8proc
new file mode 160000
-index 0000000..3de4596
+index 000000000..3de4596fb
--- /dev/null
+++ b/external/utf8proc
@@ -0,0 +1 @@
+Subproject commit 3de4596fbe28956855df2ecb3c11c0bbc3535838
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 9216bca..c043ba1 100644
+index 9216bcaa5..c043ba150 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -95,6 +95,7 @@ add_subdirectory(net)
@@ -344,7 +344,7 @@ index 9216bca..c043ba1 100644
if(NOT IOS)
add_subdirectory(serialization)
diff --git a/src/cryptonote_basic/CMakeLists.txt b/src/cryptonote_basic/CMakeLists.txt
-index 1414be1..414936a 100644
+index 1414be1b2..414936a05 100644
--- a/src/cryptonote_basic/CMakeLists.txt
+++ b/src/cryptonote_basic/CMakeLists.txt
@@ -71,6 +71,7 @@ target_link_libraries(cryptonote_basic
@@ -356,7 +356,7 @@ index 1414be1..414936a 100644
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_SERIALIZATION_LIBRARY}
diff --git a/src/cryptonote_basic/account.cpp b/src/cryptonote_basic/account.cpp
-index 4e87d44..2d556f2 100644
+index 4e87d4477..2d556f285 100644
--- a/src/cryptonote_basic/account.cpp
+++ b/src/cryptonote_basic/account.cpp
@@ -87,12 +87,16 @@ DISABLE_VS_WARNINGS(4244 4345)
@@ -409,7 +409,7 @@ index 4e87d44..2d556f2 100644
{
m_keys.m_account_address.m_spend_public_key = spend_public_key;
diff --git a/src/cryptonote_basic/account.h b/src/cryptonote_basic/account.h
-index 93d1d28..1f76feb 100644
+index 93d1d28f0..1f76febce 100644
--- a/src/cryptonote_basic/account.h
+++ b/src/cryptonote_basic/account.h
@@ -33,6 +33,7 @@
@@ -447,7 +447,7 @@ index 93d1d28..1f76feb 100644
const account_keys& get_keys() const;
std::string get_public_address_str(network_type nettype) const;
diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h
-index 8b5091a..d9151e8 100644
+index 8b5091a46..d9151e8d2 100644
--- a/src/cryptonote_config.h
+++ b/src/cryptonote_config.h
@@ -219,6 +219,8 @@
@@ -461,7 +461,7 @@ index 8b5091a..d9151e8 100644
// (1+32) + (1+1+16*32) + (1+16*32) = 1060
diff --git a/src/polyseed/CMakeLists.txt b/src/polyseed/CMakeLists.txt
new file mode 100644
-index 0000000..cca4eb7
+index 000000000..cca4eb746
--- /dev/null
+++ b/src/polyseed/CMakeLists.txt
@@ -0,0 +1,25 @@
@@ -492,7 +492,7 @@ index 0000000..cca4eb7
+)
diff --git a/src/polyseed/pbkdf2.c b/src/polyseed/pbkdf2.c
new file mode 100644
-index 0000000..1c45f47
+index 000000000..1c45f4708
--- /dev/null
+++ b/src/polyseed/pbkdf2.c
@@ -0,0 +1,85 @@
@@ -584,7 +584,7 @@ index 0000000..1c45f47
\ No newline at end of file
diff --git a/src/polyseed/pbkdf2.h b/src/polyseed/pbkdf2.h
new file mode 100644
-index 0000000..f6253b9
+index 000000000..f6253b9d7
--- /dev/null
+++ b/src/polyseed/pbkdf2.h
@@ -0,0 +1,46 @@
@@ -637,7 +637,7 @@ index 0000000..f6253b9
\ No newline at end of file
diff --git a/src/polyseed/polyseed.cpp b/src/polyseed/polyseed.cpp
new file mode 100644
-index 0000000..231a48a
+index 000000000..231a48a94
--- /dev/null
+++ b/src/polyseed/polyseed.cpp
@@ -0,0 +1,182 @@
@@ -825,7 +825,7 @@ index 0000000..231a48a
+}
diff --git a/src/polyseed/polyseed.hpp b/src/polyseed/polyseed.hpp
new file mode 100644
-index 0000000..2c8c777
+index 000000000..2c8c777a7
--- /dev/null
+++ b/src/polyseed/polyseed.hpp
@@ -0,0 +1,167 @@
@@ -998,7 +998,7 @@ index 0000000..2c8c777
+#endif //POLYSEED_HPP
\ No newline at end of file
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index 375edb4..0d78536 100644
+index 375edb4f1..0d785360a 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -728,6 +728,28 @@ bool WalletImpl::recoverFromDevice(const std::string &path, const std::string &p
@@ -1086,7 +1086,7 @@ index 375edb4..0d78536 100644
{
return m_wallet->get_seed_language();
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
-index 4e9c21e..32e1228 100644
+index 4e9c21ecb..32e12284b 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -79,9 +79,19 @@ public:
@@ -1110,7 +1110,7 @@ index 4e9c21e..32e1228 100644
void setSeedLanguage(const std::string &arg) override;
// void setListener(Listener *) {}
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
-index 53ec4ab..be1c370 100644
+index 53ec4abfc..be1c3704e 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -709,6 +709,10 @@ struct Wallet
@@ -1153,7 +1153,7 @@ index 53ec4ab..be1c370 100644
* \brief Closes wallet. In case operation succeeded, wallet object deleted. in case operation failed, wallet object not deleted
* \param wallet previously opened / created wallet instance
diff --git a/src/wallet/api/wallet_manager.cpp b/src/wallet/api/wallet_manager.cpp
-index e81b8f8..c79fe25 100644
+index e81b8f83a..c79fe25d6 100644
--- a/src/wallet/api/wallet_manager.cpp
+++ b/src/wallet/api/wallet_manager.cpp
@@ -156,6 +156,15 @@ Wallet *WalletManagerImpl::createWalletFromDevice(const std::string &path,
@@ -1173,7 +1173,7 @@ index e81b8f8..c79fe25 100644
{
WalletImpl * wallet_ = dynamic_cast<WalletImpl*>(wallet);
diff --git a/src/wallet/api/wallet_manager.h b/src/wallet/api/wallet_manager.h
-index a223e1d..28fcd36 100644
+index a223e1df9..28fcd36c9 100644
--- a/src/wallet/api/wallet_manager.h
+++ b/src/wallet/api/wallet_manager.h
@@ -75,6 +75,16 @@ public:
@@ -1194,7 +1194,7 @@ index a223e1d..28fcd36 100644
bool walletExists(const std::string &path) override;
bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool no_spend_key, uint64_t kdf_rounds = 1) const override;
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
-index 671fa52..3e49c21 100644
+index 671fa5298..3e49c21f8 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -92,6 +92,7 @@ using namespace epee;
@@ -1384,7 +1384,7 @@ index 671fa52..3e49c21 100644
uint64_t height_min = 0;
uint64_t height_max = get_daemon_blockchain_height(err) - 1;
diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h
-index 80ff069..c26349c 100644
+index 80ff0698d..c26349ce3 100644
--- a/src/wallet/wallet2.h
+++ b/src/wallet/wallet2.h
@@ -72,6 +72,7 @@
diff --git a/patches/wownero/0011-coin-control.patch b/patches/wownero/0011-coin-control.patch
index 342151e..f786777 100644
--- a/patches/wownero/0011-coin-control.patch
+++ b/patches/wownero/0011-coin-control.patch
@@ -1,7 +1,7 @@
-From 4292758a3d7c0186ee3fb665d789e078ff3e9ec6 Mon Sep 17 00:00:00 2001
+From 7d9d947f049c39aa9e5e4c7cb37c03e63eaf3187 Mon Sep 17 00:00:00 2001
From: tobtoht <tob@featherwallet.org>
Date: Tue, 12 Mar 2024 11:07:57 +0100
-Subject: [PATCH 11/14] coin control
+Subject: [PATCH 11/17] coin control
---
src/simplewallet/simplewallet.cpp | 2 +-
@@ -22,7 +22,7 @@ Subject: [PATCH 11/14] coin control
create mode 100644 src/wallet/api/coins_info.h
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp
-index 8c51220..cfdb893 100644
+index 8c5122097..cfdb8935f 100644
--- a/src/simplewallet/simplewallet.cpp
+++ b/src/simplewallet/simplewallet.cpp
@@ -6981,7 +6981,7 @@ bool simple_wallet::transfer_main(const std::vector<std::string> &args_, bool ca
@@ -35,7 +35,7 @@ index 8c51220..cfdb893 100644
if (ptx_vector.empty())
{
diff --git a/src/wallet/api/CMakeLists.txt b/src/wallet/api/CMakeLists.txt
-index af7948d..bb740e2 100644
+index af7948d8a..bb740e2ac 100644
--- a/src/wallet/api/CMakeLists.txt
+++ b/src/wallet/api/CMakeLists.txt
@@ -40,7 +40,9 @@ set(wallet_api_sources
@@ -62,7 +62,7 @@ index af7948d..bb740e2 100644
${wallet_api_private_headers})
diff --git a/src/wallet/api/coins.cpp b/src/wallet/api/coins.cpp
new file mode 100644
-index 0000000..ef12141
+index 000000000..ef12141cf
--- /dev/null
+++ b/src/wallet/api/coins.cpp
@@ -0,0 +1,186 @@
@@ -254,7 +254,7 @@ index 0000000..ef12141
+} // namespace
diff --git a/src/wallet/api/coins.h b/src/wallet/api/coins.h
new file mode 100644
-index 0000000..b7a0a86
+index 000000000..b7a0a8642
--- /dev/null
+++ b/src/wallet/api/coins.h
@@ -0,0 +1,40 @@
@@ -300,7 +300,7 @@ index 0000000..b7a0a86
+#endif //FEATHER_COINS_H
diff --git a/src/wallet/api/coins_info.cpp b/src/wallet/api/coins_info.cpp
new file mode 100644
-index 0000000..5f2c4e1
+index 000000000..5f2c4e1e4
--- /dev/null
+++ b/src/wallet/api/coins_info.cpp
@@ -0,0 +1,122 @@
@@ -428,7 +428,7 @@ index 0000000..5f2c4e1
+namespace Bitmonero = Monero;
diff --git a/src/wallet/api/coins_info.h b/src/wallet/api/coins_info.h
new file mode 100644
-index 0000000..c43e45a
+index 000000000..c43e45abd
--- /dev/null
+++ b/src/wallet/api/coins_info.h
@@ -0,0 +1,71 @@
@@ -504,7 +504,7 @@ index 0000000..c43e45a
+
+#endif //FEATHER_COINS_INFO_H
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index 0d78536..ff1baac 100644
+index 0d785360a..ff1baac5c 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -35,6 +35,7 @@
@@ -640,7 +640,7 @@ index 0d78536..ff1baac 100644
{
return m_subaddress.get();
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
-index 32e1228..a82f270 100644
+index 32e12284b..a82f270e4 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -46,6 +46,7 @@ class PendingTransactionImpl;
@@ -693,7 +693,7 @@ index 32e1228..a82f270 100644
// multi-threaded refresh stuff
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
-index be1c370..013b5bc 100644
+index be1c3704e..013b5bcba 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -263,6 +263,51 @@ struct AddressBook
@@ -777,7 +777,7 @@ index be1c370..013b5bc 100644
virtual SubaddressAccount * subaddressAccount() = 0;
virtual void setListener(WalletListener *) = 0;
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
-index 3e49c21..4d75656 100644
+index 3e49c21f8..4d756567f 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -2094,12 +2094,21 @@ bool wallet2::frozen(const multisig_tx_set& txs) const
@@ -924,7 +924,7 @@ index 3e49c21..4d75656 100644
{
MDEBUG("Ignoring output " << i << " of amount " << print_money(td.amount()) << " which is below threshold " << print_money(fractional_threshold));
diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h
-index c26349c..a48ba33 100644
+index c26349ce3..a48ba33b6 100644
--- a/src/wallet/wallet2.h
+++ b/src/wallet/wallet2.h
@@ -1209,8 +1209,8 @@ private:
diff --git a/patches/wownero/0012-Add-hex-encoding-and-tx-key-getter-for-PendingTransc.patch b/patches/wownero/0012-Add-hex-encoding-and-tx-key-getter-for-PendingTransc.patch
index 8834241..3868907 100644
--- a/patches/wownero/0012-Add-hex-encoding-and-tx-key-getter-for-PendingTransc.patch
+++ b/patches/wownero/0012-Add-hex-encoding-and-tx-key-getter-for-PendingTransc.patch
@@ -1,7 +1,7 @@
-From 88736bd375a752998aab2f663e2c180f89f52937 Mon Sep 17 00:00:00 2001
+From fc519329a5eaeaacd53ceb5109608069d57ac553 Mon Sep 17 00:00:00 2001
From: M <m@cakewallet.com>
Date: Fri, 21 Apr 2023 15:43:47 -0400
-Subject: [PATCH 12/14] Add hex encoding and tx key getter for
+Subject: [PATCH 12/17] Add hex encoding and tx key getter for
PendingTransction in wallet api.
---
@@ -11,7 +11,7 @@ Subject: [PATCH 12/14] Add hex encoding and tx key getter for
3 files changed, 20 insertions(+)
diff --git a/src/wallet/api/pending_transaction.cpp b/src/wallet/api/pending_transaction.cpp
-index 9c3c26e..1f714d2 100644
+index 9c3c26ee5..1f714d229 100644
--- a/src/wallet/api/pending_transaction.cpp
+++ b/src/wallet/api/pending_transaction.cpp
@@ -80,6 +80,22 @@ std::vector<std::string> PendingTransactionImpl::txid() const
@@ -38,7 +38,7 @@ index 9c3c26e..1f714d2 100644
{
diff --git a/src/wallet/api/pending_transaction.h b/src/wallet/api/pending_transaction.h
-index 403bfe2..0cc6c58 100644
+index 403bfe281..0cc6c58e9 100644
--- a/src/wallet/api/pending_transaction.h
+++ b/src/wallet/api/pending_transaction.h
@@ -59,6 +59,8 @@ public:
@@ -51,7 +51,7 @@ index 403bfe2..0cc6c58 100644
private:
friend class WalletImpl;
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
-index 013b5bc..f421fdc 100644
+index 013b5bcba..f421fdc05 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -127,6 +127,8 @@ struct PendingTransaction
diff --git a/patches/wownero/0013-Add-recoverDeterministicWalletFromSpendKey.patch b/patches/wownero/0013-Add-recoverDeterministicWalletFromSpendKey.patch
index 8487192..033050d 100644
--- a/patches/wownero/0013-Add-recoverDeterministicWalletFromSpendKey.patch
+++ b/patches/wownero/0013-Add-recoverDeterministicWalletFromSpendKey.patch
@@ -1,7 +1,7 @@
-From 35fbb3f808e1884e496082dc5280b7e2636f0eb0 Mon Sep 17 00:00:00 2001
+From 3523d4ea3449b64065f7fa512a0017581b76c1c8 Mon Sep 17 00:00:00 2001
From: Konstantin Ullrich <konstantinullrich12@gmail.com>
Date: Wed, 11 Oct 2023 16:47:59 +0200
-Subject: [PATCH 13/14] Add recoverDeterministicWalletFromSpendKey
+Subject: [PATCH 13/17] Add recoverDeterministicWalletFromSpendKey
This function is used by Cake Wallet to enable polyseed (dart implementation)
support.
@@ -19,7 +19,7 @@ Co-authored-by: Godwin Asuquo <godilite@gmail.com>
5 files changed, 75 insertions(+)
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
-index ff1baac..6854325 100644
+index ff1baac5c..685432597 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -824,6 +824,35 @@ bool WalletImpl::recover(const std::string &path, const std::string &password, c
@@ -59,7 +59,7 @@ index ff1baac..6854325 100644
{
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
-index a82f270..9e1fbb4 100644
+index a82f270e4..9e1fbb40b 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -77,6 +77,10 @@ public:
@@ -74,7 +74,7 @@ index a82f270..9e1fbb4 100644
const std::string &password,
const std::string &device_name);
diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h
-index f421fdc..c8d6bb1 100644
+index f421fdc05..c8d6bb179 100644
--- a/src/wallet/api/wallet2_api.h
+++ b/src/wallet/api/wallet2_api.h
@@ -1323,6 +1323,25 @@ struct WalletManager
@@ -104,7 +104,7 @@ index f421fdc..c8d6bb1 100644
* \deprecated this method creates a wallet WITHOUT a passphrase, use createWalletFromKeys(..., password, ...) instead
* \brief recovers existing wallet using keys. Creates a view only wallet if spend key is omitted
diff --git a/src/wallet/api/wallet_manager.cpp b/src/wallet/api/wallet_manager.cpp
-index c79fe25..f88bd9e 100644
+index c79fe25d6..f88bd9e64 100644
--- a/src/wallet/api/wallet_manager.cpp
+++ b/src/wallet/api/wallet_manager.cpp
@@ -127,6 +127,22 @@ Wallet *WalletManagerImpl::createWalletFromKeys(const std::string &path,
@@ -131,7 +131,7 @@ index c79fe25..f88bd9e 100644
const std::string &password,
NetworkType nettype,
diff --git a/src/wallet/api/wallet_manager.h b/src/wallet/api/wallet_manager.h
-index 28fcd36..be3ff81 100644
+index 28fcd36c9..be3ff8184 100644
--- a/src/wallet/api/wallet_manager.h
+++ b/src/wallet/api/wallet_manager.h
@@ -67,6 +67,13 @@ public:
diff --git a/patches/wownero/0014-build-wownero-seed.patch b/patches/wownero/0014-build-wownero-seed.patch
index 649127e..2b7f867 100644
--- a/patches/wownero/0014-build-wownero-seed.patch
+++ b/patches/wownero/0014-build-wownero-seed.patch
@@ -1,7 +1,7 @@
-From 942d3f9053779f7673e327d1d22faa3f52a936a6 Mon Sep 17 00:00:00 2001
+From 8d1cd10b2514d225ae5d2d6f73947529647392e7 Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Thu, 25 Apr 2024 10:06:04 +0200
-Subject: [PATCH 14/14] build wownero-seed
+Subject: [PATCH 14/17] build wownero-seed
---
contrib/depends/hosts/android.mk | 4 +-
@@ -15,7 +15,7 @@ Subject: [PATCH 14/14] build wownero-seed
create mode 100644 contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
diff --git a/contrib/depends/hosts/android.mk b/contrib/depends/hosts/android.mk
-index 827103c..8aad7ec 100644
+index 827103c36..8aad7ec65 100644
--- a/contrib/depends/hosts/android.mk
+++ b/contrib/depends/hosts/android.mk
@@ -15,8 +15,8 @@ endif
@@ -30,7 +30,7 @@ index 827103c..8aad7ec 100644
android_CFLAGS=-pipe
android_CXXFLAGS=$(android_CFLAGS)
diff --git a/contrib/depends/hosts/darwin.mk b/contrib/depends/hosts/darwin.mk
-index b14ee5c..2168702 100644
+index b14ee5c5b..2168702aa 100644
--- a/contrib/depends/hosts/darwin.mk
+++ b/contrib/depends/hosts/darwin.mk
@@ -9,6 +9,7 @@ darwin_CC=clang -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --s
@@ -42,7 +42,7 @@ index b14ee5c..2168702 100644
darwin_CFLAGS=-pipe
darwin_CXXFLAGS=$(darwin_CFLAGS)
diff --git a/contrib/depends/hosts/mingw32.mk b/contrib/depends/hosts/mingw32.mk
-index ccc4c50..4677694 100644
+index ccc4c5082..4677694a6 100644
--- a/contrib/depends/hosts/mingw32.mk
+++ b/contrib/depends/hosts/mingw32.mk
@@ -2,6 +2,9 @@ mingw32_CFLAGS=-pipe
@@ -56,7 +56,7 @@ index ccc4c50..4677694 100644
mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS)
diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk
-index 8783d49..3d513c5 100644
+index 8783d4955..3d513c5a2 100644
--- a/contrib/depends/packages/packages.mk
+++ b/contrib/depends/packages/packages.mk
@@ -1,4 +1,4 @@
@@ -67,7 +67,7 @@ index 8783d49..3d513c5 100644
ifneq ($(GITIAN),1)
diff --git a/contrib/depends/packages/wownero_seed.mk b/contrib/depends/packages/wownero_seed.mk
new file mode 100644
-index 0000000..b376f80
+index 000000000..b376f80c5
--- /dev/null
+++ b/contrib/depends/packages/wownero_seed.mk
@@ -0,0 +1,35 @@
@@ -108,7 +108,7 @@ index 0000000..b376f80
+endef
diff --git a/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch b/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
new file mode 100644
-index 0000000..a8f8fe0
+index 000000000..a8f8fe059
--- /dev/null
+++ b/contrib/depends/patches/wownero_seed/0001-fix-duplicate-symbol-error.patch
@@ -0,0 +1,497 @@
diff --git a/patches/wownero/0015-add-monero-submodule-support.patch b/patches/wownero/0015-add-monero-submodule-support.patch
index 97dcc90..4ef6bd2 100644
--- a/patches/wownero/0015-add-monero-submodule-support.patch
+++ b/patches/wownero/0015-add-monero-submodule-support.patch
@@ -1,7 +1,7 @@
-From c7a565ce333b11e4eaa25a1cf6035837146273d7 Mon Sep 17 00:00:00 2001
+From 24bc8f2b4ead8cb848a979140129618d04ebc762 Mon Sep 17 00:00:00 2001
From: cyan <cyjan@mrcyjanek.net>
Date: Thu, 7 Nov 2024 16:46:24 +0000
-Subject: [PATCH] add monero submodule support
+Subject: [PATCH 15/17] add monero submodule support
---
CMakeLists.txt | 6 +++---
@@ -10,7 +10,7 @@ Subject: [PATCH] add monero submodule support
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e7fa90abb..b995a68b2 100644
+index 85a62ef7b..763d240fc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -223,9 +223,9 @@ function(forbid_undefined_symbols)
@@ -25,7 +25,7 @@ index e7fa90abb..b995a68b2 100644
endif()
add_library(l0 SHARED incorrect_source.cpp)
add_library(l1 MODULE incorrect_source.cpp)
-@@ -390,7 +390,7 @@ else()
+@@ -391,7 +391,7 @@ else()
endif()
list(INSERT CMAKE_MODULE_PATH 0
@@ -48,10 +48,10 @@ index 7ecf5f610..89fb9d167 100644
set(saved_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
set(CMAKE_C_FLAGS "${flag}")
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp
-index d24b4c563..91f692599 100644
+index 3cc6b278f..071434486 100644
--- a/src/wallet/wallet_rpc_server.cpp
+++ b/src/wallet/wallet_rpc_server.cpp
-@@ -1163,7 +1163,7 @@ namespace tools
+@@ -1162,7 +1162,7 @@ namespace tools
{
uint64_t mixin = m_wallet->adjust_mixin(req.ring_size ? req.ring_size - 1 : 0);
uint32_t priority = m_wallet->adjust_priority(req.priority);
@@ -61,5 +61,5 @@ index d24b4c563..91f692599 100644
if (ptx_vector.empty())
{
--
-2.43.0
+2.39.5 (Apple Git-154)
diff --git a/patches/wownero/0016-include-locale-only-when-targeting-WIN32.patch b/patches/wownero/0016-include-locale-only-when-targeting-WIN32.patch
index f13aad0..725e1ff 100644
--- a/patches/wownero/0016-include-locale-only-when-targeting-WIN32.patch
+++ b/patches/wownero/0016-include-locale-only-when-targeting-WIN32.patch
@@ -1,87 +1,18 @@
-From 41f67e50f34cd5d7d909a5d7ec0b1e59463261f6 Mon Sep 17 00:00:00 2001
+From 5843cb6c653a65eab3aea5956b41150b7c94cb0a Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Mon, 18 Nov 2024 10:57:37 -0500
-Subject: [PATCH] include locale only when targeting WIN32
+Subject: [PATCH 16/17] include locale only when targeting WIN32
---
- CMakeLists.txt | 25 ++++++++++---------------
- src/wallet/api/wallet.cpp | 2 ++
- 2 files changed, 12 insertions(+), 15 deletions(-)
+ CMakeLists.txt | 5 ++++-
+ src/wallet/api/wallet.cpp | 2 ++
+ 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 763d240fc..ec5878005 100644
+index 763d240fc..1397bb217 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -96,8 +96,7 @@ enable_language(C ASM)
- set(CMAKE_C_STANDARD 11)
- set(CMAKE_C_STANDARD_REQUIRED ON)
- set(CMAKE_C_EXTENSIONS OFF)
--set(CMAKE_CXX_STANDARD 17)
--add_definitions(-D_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES) # boost: no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
-+set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_EXTENSIONS OFF)
-
-@@ -223,9 +222,9 @@ function(forbid_undefined_symbols)
- cmake_minimum_required(VERSION 3.1)
- project(test)
- option(EXPECT_SUCCESS "" ON)
--file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/incorrect_source.cpp" "void undefined_symbol(); void symbol() { undefined_symbol(); }")
-+file(WRITE "${CMAKE_SOURCE_DIR}/incorrect_source.cpp" "void undefined_symbol(); void symbol() { undefined_symbol(); }")
- if (EXPECT_SUCCESS)
-- file(APPEND "${CMAKE_CURRENT_SOURCE_DIR}/incorrect_source.cpp" " void undefined_symbol() {}; ")
-+ file(APPEND "${CMAKE_SOURCE_DIR}/incorrect_source.cpp" " void undefined_symbol() {}; ")
- endif()
- add_library(l0 SHARED incorrect_source.cpp)
- add_library(l1 MODULE incorrect_source.cpp)
-@@ -366,14 +365,11 @@ if(NOT MANUAL_SUBMODULES)
- endfunction ()
-
- message(STATUS "Checking submodules")
-- #check_submodule(external/bc-ur)
- check_submodule(external/miniupnp)
- check_submodule(external/rapidjson)
- #check_submodule(external/trezor-common)
- check_submodule(external/randomwow)
- check_submodule(external/supercop)
-- check_submodule(external/polyseed)
-- check_submodule(external/utf8proc)
- endif()
- endif()
-
-@@ -391,7 +387,7 @@ else()
- endif()
-
- list(INSERT CMAKE_MODULE_PATH 0
-- "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
-+ "${CMAKE_SOURCE_DIR}/cmake")
-
- if (NOT DEFINED ENV{DEVELOPER_LOCAL_TOOLS})
- message(STATUS "Could not find DEVELOPER_LOCAL_TOOLS in env (not required)")
-@@ -463,7 +459,7 @@ endif()
- # elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*")
- # set(BSDI TRUE)
-
--include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include external/polyseed/include external/utf8proc)
-+include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include)
-
- if(APPLE)
- cmake_policy(SET CMP0042 NEW)
-@@ -711,12 +707,8 @@ include_directories(${LMDB_INCLUDE})
- include_directories(${LIBUNWIND_INCLUDE})
- link_directories(${LIBUNWIND_LIBRARY_DIRS})
-
--if (HIDAPI_DUMMY)
-- add_definitions(-DHIDAPI_DUMMY)
--endif()
--
- # Final setup for hid
--if (HIDAPI_FOUND)
-+if (HIDAPI_FOUND)
- message(STATUS "Using HIDAPI include dir at ${HIDAPI_INCLUDE_DIR}")
- add_definitions(-DHAVE_HIDAPI)
- include_directories(${HIDAPI_INCLUDE_DIR})
-@@ -1100,7 +1092,10 @@ if(STATIC)
+@@ -1100,7 +1100,10 @@ if(STATIC)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME ON)
endif()
diff --git a/patches/wownero/0017-ledger-dummy-fix.patch b/patches/wownero/0017-ledger-dummy-fix.patch
new file mode 100644
index 0000000..62ded03
--- /dev/null
+++ b/patches/wownero/0017-ledger-dummy-fix.patch
@@ -0,0 +1,157 @@
+From a2a5c6a81ae63b2a4a8fe02b7929dcf3084b2a51 Mon Sep 17 00:00:00 2001
+From: cyan <cyjan@mrcyjanek.net>
+Date: Tue, 26 Nov 2024 00:31:15 +0000
+Subject: [PATCH 17/17] ledger dummy fix
+
+---
+ src/device/device_io_dummy.cpp | 2 +-
+ src/device/device_io_dummy.hpp | 2 +-
+ src/device/device_ledger.hpp | 2 +-
+ src/wallet/api/wallet.cpp | 36 +++++++++++++++++-----------------
+ 4 files changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/src/device/device_io_dummy.cpp b/src/device/device_io_dummy.cpp
+index fb082694e..e7e79fb58 100644
+--- a/src/device/device_io_dummy.cpp
++++ b/src/device/device_io_dummy.cpp
+@@ -38,7 +38,7 @@
+ // Data transport is made available in wallet2_api.h, so wallet developers can easily plug their
+ // own USB/BLE/other transport layer.
+
+-#ifdef HIDAPI_DUMMY
++#if defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI)
+ #include <boost/scope_exit.hpp>
+ #include "log.hpp"
+ #include "device_io_dummy.hpp"
+diff --git a/src/device/device_io_dummy.hpp b/src/device/device_io_dummy.hpp
+index a1733616d..4a4807121 100644
+--- a/src/device/device_io_dummy.hpp
++++ b/src/device/device_io_dummy.hpp
+@@ -26,7 +26,7 @@
+ // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ //
+-#ifdef HIDAPI_DUMMY
++#if defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI)
+
+ #pragma once
+
+diff --git a/src/device/device_ledger.hpp b/src/device/device_ledger.hpp
+index 506f27c4a..39454ca6d 100644
+--- a/src/device/device_ledger.hpp
++++ b/src/device/device_ledger.hpp
+@@ -149,7 +149,7 @@ namespace hw {
+ mutable boost::mutex command_locker;
+
+ //IO
+-#ifdef HIDAPI_DUMMY
++#if defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI)
+ hw::io::device_io_dummy hw_device;
+ #else
+ hw::io::device_io_hid hw_device;
+diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
+index c9ff4b860..313384f54 100644
+--- a/src/wallet/api/wallet.cpp
++++ b/src/wallet/api/wallet.cpp
+@@ -3339,8 +3339,8 @@ uint64_t WalletImpl::getBytesSent()
+
+ // HIDAPI_DUMMY
+ bool WalletImpl::getStateIsConnected() {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return false;
+ #else
+ return hw::io::device_io_dummy::stateIsConnected;
+@@ -3348,8 +3348,8 @@ bool WalletImpl::getStateIsConnected() {
+ }
+
+ unsigned char* WalletImpl::getSendToDevice() {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return {};
+ #else
+ return hw::io::device_io_dummy::sendToDevice;
+@@ -3357,8 +3357,8 @@ unsigned char* WalletImpl::getSendToDevice() {
+ }
+
+ size_t WalletImpl::getSendToDeviceLength() {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return -1;
+ #else
+ return hw::io::device_io_dummy::sendToDeviceLength;
+@@ -3366,8 +3366,8 @@ size_t WalletImpl::getSendToDeviceLength() {
+ }
+
+ unsigned char* WalletImpl::getReceivedFromDevice() {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return {};
+ #else
+ return hw::io::device_io_dummy::receivedFromDevice;
+@@ -3375,8 +3375,8 @@ unsigned char* WalletImpl::getReceivedFromDevice() {
+ }
+
+ size_t WalletImpl::getReceivedFromDeviceLength() {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return -1;
+ #else
+ return hw::io::device_io_dummy::receivedFromDeviceLength;
+@@ -3384,8 +3384,8 @@ size_t WalletImpl::getReceivedFromDeviceLength() {
+ }
+
+ bool WalletImpl::getWaitsForDeviceSend() {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return false;
+ #else
+ return hw::io::device_io_dummy::receivedFromDeviceLength;
+@@ -3393,8 +3393,8 @@ bool WalletImpl::getWaitsForDeviceSend() {
+ }
+
+ bool WalletImpl::getWaitsForDeviceReceive() {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return false;
+ #else
+ return hw::io::device_io_dummy::waitsForDeviceReceive;
+@@ -3402,8 +3402,8 @@ bool WalletImpl::getWaitsForDeviceReceive() {
+ }
+
+ void WalletImpl::setDeviceReceivedData(unsigned char* data, size_t len) {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return;
+ #else
+ hw::io::device_io_dummy::receivedFromDevice = static_cast<unsigned char *>(malloc(len));
+@@ -3415,8 +3415,8 @@ void WalletImpl::setDeviceReceivedData(unsigned char* data, size_t len) {
+ }
+
+ void WalletImpl::setDeviceSendData(unsigned char* data, size_t len) {
+- #ifndef HIDAPI_DUMMY
+- setStatusError("MONERO compiled with -DHIDAPI_DUMMY");
++ #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))
++ setStatusError("MONERO compiled with #if !(defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI))");
+ return;
+ #else
+ hw::io::device_io_dummy::sendToDevice = static_cast<unsigned char *>(malloc(len));
+--
+2.39.5 (Apple Git-154)
+
diff --git a/wownero_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp b/wownero_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp
index 19a14ba..159421b 100644
--- a/wownero_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp
+++ b/wownero_libwallet2_api_c/src/main/cpp/wallet2_api_c.cpp
@@ -5,7 +5,7 @@
#include <cstring>
#include <thread>
#include "../../../../wownero/src/wallet/api/wallet2_api.h"
-#include "../../../../external/wownero-seed/include/wownero_seed/wownero_seed.hpp"
+#include "../../../wownero-seed/include/wownero_seed/wownero_seed.hpp"
#include "wownero_checksum.h"
#ifdef __cplusplus
diff --git a/wownero_libwallet2_api_c/wownero-seed b/wownero_libwallet2_api_c/wownero-seed
new file mode 160000
+Subproject 4a4e5b6c54c1710aa185cb0838b087238cbfc9a