Commit Graph

150 Commits

Author SHA1 Message Date
tomFlowee 08456dbcf9 Use setter to ensure it saves the name later. 2022-08-18 08:12:03 +02:00
tomFlowee 11952ee75b Auto-archive the initial wallet after a while.
In some cases the initially created wallet is left running and taking a
peer (in order to check if anything ever got deposited at the QR-code
shown address).
This now sunsets those wallets after 2100 blocks (over 2 weeks).
2022-08-17 23:42:19 +02:00
tomFlowee 3d9baf6410 Fix sending too much data
Make the re-sending of the filter happen once instead of inside the loop.
2022-08-17 19:56:45 +02:00
tomFlowee b74bd2b7c1 This shows the xpub of a wallet in the details screen
Add xpub getters and property + show in details
2022-08-17 18:45:37 +02:00
tomFlowee ac9717491a Fix API naming
Rename a pure-bitcoin-cash based method naming to no longer
have the word 'price' in it since that is associated with conversion
to another money or currency.
2022-08-14 16:46:23 +02:00
tomFlowee fff90de695 Fixlets and simplification in unit unit test
This reflects that we no longer have a 3-state but that a wallet is
either open or closed.
2022-07-21 14:21:31 +02:00
tomFlowee e1cb6d3c40 Make connection between payment request & wallet more robust
As they have a pointer to each other we have to be a bit smart about how
removing works and how deletion works. Because otherwise we'll end up
with calling a deleted object.
2022-07-21 13:10:44 +02:00
tomFlowee 8fdc569364 locked utxo fixes
Count user-locked utxos again in balance
Mark wallet in need of saving when manually locking/unlocking a utxo.
2022-07-20 14:34:01 +02:00
tomFlowee df6eb5fb4c Improve PR saving and avoid unneeded wallet-writes.
For a payment-request we now remember if its been stored-to-disk so when
it gets removed again before we ever store it, we skip forcing an
unneeded save.
2022-07-15 14:20:58 +02:00
tomFlowee b69f9363dd Don't save temporary payment requests. 2022-07-14 19:38:01 +02:00
tomFlowee 43dff3381a To encrypt a password we now ask the pwd twice.
To make sure the user didn't mistype it.
2022-07-14 19:19:19 +02:00
tomFlowee aede168236 Fixes in saving / encryption. 2022-07-14 17:45:09 +02:00
tomFlowee 6e4aa0065e Switch to the string type for saving mnemonics
This solves a recently introduced debt.
2022-07-14 17:03:00 +02:00
tomFlowee d4658564ff Use secure allocator for mnemonic
This ensures that we not swap out this value.
2022-07-14 15:28:23 +02:00
tomFlowee b41fd2b72b Make error logging of this more verbose. 2022-07-14 14:55:39 +02:00
tomFlowee 38ff068dcc Make QR blank when the wallet is encrypted. 2022-07-14 14:55:21 +02:00
tomFlowee 05a4ee34f8 Trap against race-condition on closing a wallet.
Also add some suggestions to avoid work.
2022-07-13 14:16:36 +02:00
tomFlowee e610f9d354 Fix logic
This meant to only send an updated filter after 25 mismatches, make it do that now.
2022-07-13 13:54:29 +02:00
tomFlowee 0c9136be3b Refactor wallet encryption
This stops re-loading of the wallet-data on decrypt but instead keeps
the encrypted data in memory next to the (possibly) decrypted data.

This then means we can save a wallet that has its secrets still
encrypted (no password supplied) which is needed in order to propery
support the concept of xpub.

So, now a HD wallet that is closed can correctly sync and create new
public keys (which are needed to sync), including the step of saving
those to disk.
The first time the user provides a password we'll then create the
matching private keys (and their encrypted counterparts) which will then
be saved, and naturally can be used to sign transactions.
2022-07-13 13:54:29 +02:00
tomFlowee 90252a4e1a Allow HD wallet to sync while encrypted
This allows an encrypted HD wallet to sync using merkleblock p2p
messages by using the xpub instead while the private keys are
unavailable.
2022-07-11 22:11:01 +02:00
tomFlowee 27af984f5b Split off encryption methods to its own file.
This avoids Wallet.cpp to become too huge and groups stuff to
make it easier to find.
2022-07-11 19:23:30 +02:00
tomFlowee fdf42777c4 Save HD wallet data encrypted. 2022-07-11 18:30:18 +02:00
tomFlowee 663169530d Follow rename of CKeyID -> KeyId 2022-07-06 22:06:58 +02:00
tomFlowee 59b28d730e bugfixes 2022-06-29 16:04:53 +02:00
tomFlowee 5720b9c2d0 Move wallet name to its own file.
This allows us to just fully encrypt the wallet.dat while still being
able to see the name of the wallet.
2022-06-24 15:02:52 +02:00
tomFlowee 47eba671e8 Make a fully encrypted wallet forget everything on close 2022-06-24 14:13:07 +02:00
tomFlowee a409b40830 Merge branch 'master' of banana:floweepay 2022-06-24 13:13:37 +02:00
tomFlowee a0116821ba Minor cleanups. 2022-06-24 00:35:20 +02:00
tomFlowee bab952b94d Make sync work together with encryption status
A fully encrypted wallet won't be tried to be synchronized (no peer
connections opened) and the moment we decrypt it we'll start the sync.
2022-06-24 00:34:08 +02:00
tomFlowee 940b1c9010 Make simple getter const. 2022-06-23 13:58:36 +02:00
tomFlowee c324b54b1a the std version is not thread-safe. 2022-06-23 13:47:29 +02:00
tomFlowee 66e1501812 Avoid confusing variable naming.
Don't use the same variable-name in smaller scope (shadowing).
2022-06-20 22:49:29 +02:00
tomFlowee 9acc505f8b Make compile 2022-06-20 18:46:27 +02:00
tomFlowee 2be19cc9d7 Make the setEncryption method be more straight forward
have less 'smart' side-effects.
2022-06-19 14:38:34 +02:00
tomFlowee 7558fb1517 Refactor encryption, pass pwd when needed. 2022-06-19 14:29:27 +02:00
tomFlowee 9a2ea5a951 Be consistent in our usage of the encryption class 2022-05-18 20:41:38 +02:00
tomFlowee 263418cffc Add various encryption UI parts. 2022-05-18 20:25:03 +02:00
tomFlowee 4bf79a7ae4 Add quick-and-dirty UI for encryption details.
Also avoid trying to save an encrypted wallet from the PaymentRequest
2022-05-18 15:48:50 +02:00
tomFlowee 9afdad806f Add more encryption support to the QML classes.
Also allow better interaction with the wallet.
2022-05-18 12:59:01 +02:00
tomFlowee e120df9b71 Implement fully encrypting the wallet files.
For the 'fullyEncrypted' option we now simply fully
encrypt the entire blob of both the secrets file as well
as the wallet.dat (which transactions we own).
2022-05-17 22:26:48 +02:00
tomFlowee f0ca231e7a Make the re-loading of an encrypted tx work. 2022-05-17 16:21:59 +02:00
tomFlowee fe6fa98ff2 Make full-encrypted encrypt the transactions
This additionally makes the password get hashed more often and we create
an 'iv' from it as well.
2022-05-17 00:44:51 +02:00
tomFlowee a58bf9f09f Make basic wallet-encryption work.
We encrypt using a standard AES256 encryption scheme.
The key is 256 bits and we derive that from a user provided password
which we double-hash (sha256). Additionally we use a randomly generated
salt for a specific wallet that is fed into the hashing algo as well.

This version simply encrypts the private keys of a wallet, which makes
it quite basic. A good start.
2022-05-14 14:34:28 +02:00
tomFlowee 2accfa9700 Start wallet-encryption 2022-05-13 19:29:25 +02:00
tomFlowee fdb1327fb2 Follow renames in flowee libs on CKey class 2022-05-11 21:01:57 +02:00
tomFlowee ba589abbea Fix typo in methodname. 2022-05-11 21:00:48 +02:00
tomFlowee 4a07261c31 Also count number of transactions. 2022-05-01 17:36:11 +02:00
tomFlowee f786db4627 Find address info. 2022-04-07 18:16:03 +02:00
tomFlowee c4bab66465 Fix typo in var name. 2022-02-19 11:10:11 +01:00
tomFlowee d0463e6b57 Make compile after upstream refactor. 2022-01-24 12:32:07 +01:00