Open fully encrypted wallets #747
pull achow101 wants to merge 15 commits into bitcoin-core:master from achow101:gui-fully-encrypted-wallets changing 28 files +954 −74-
achow101 commented at 9:21 pm on July 24, 2023: memberAllows users to open wallets with encrypted databases (https://github.com/bitcoin/bitcoin/pull/28142) from the GUI.
-
crypter: Separate setting IV from setting key a783e5cc2e
-
crypter: Make sure IV is set too 2c3d81fa6c
-
walletdb: Add EncryptedDatabase and its batch and cursor classes
EncryptedDatabase is a WalletDatabase that encrypts the records before writing them to an underlying WalletDatabase. This encryption occurs transparently to the higher level application logic so the wallet does not need to be concerned about whether the data it is writing is encrypted. In order to work with prefix matching and cursor iteration in an order that we are expecting, EncryptedDatabase maintains a map of the unencrypted record keys to the encrypted record keys. When given the plaintext record key to pull up, it can retrieve the encrypted record key and then retrieve the encrypted record from the underlying database.
-
walletdb: Add WalletBatch::Read overload for DataStream
It's useful to be able to just read a record without the batch doing any sort of deserialization. The new overload of Read will just place the record's value into the provided DataStream.
-
walletdb: Use a different SQLite application id for encrypted db
EncrytpedDB wallets will use sqlite but with a different application id. This provides downgrade protection in addition to easy identification of encrypted dbs. The application id will be the network magic XOR'd with 0x36932d47 (randomly generated value).
-
walletdb: Have MakeDatabase also create encrypted dbs 2568277658
-
wallet, rpc: Be able to create and load wallets with encrypted dbs 4c7df1f96a
-
wallet: Skip loading on start of wallets with encrypted databases
Wallets with encrypted databases need the user to provide their database passphrase which cannot be done on start, so skip any such wallets on startup.
-
test: Add functional test for wallets with encrypted db d97c315f6d
-
gui: Allow AskPassphraseDialog without WalletModel
Sometimes we just need the dialog without an attached wallet.
-
interfaces: Allow opening and detecting wallets with encrypted db a85e428c62
-
gui: Be able to open wallets with encrypted dbs a6212f95a9
-
gui: Allow AskPassphraseDialog to have customized warning text
The warning text that appears above the passphrase inputs may need to be customized depending on the context in which the passphrase is being entered, so let the caller optionally set it.
-
interfaces: Allow creating a wallet with encrypted database 33cceb9106
-
gui: Add option to create a wallet with encrypted database 93fe316ff0
-
DrahtBot commented at 9:21 pm on July 24, 2023: contributor
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
Reviews
See the guideline for information on the review process. A summary of reviews will appear here.
Conflicts
Reviewers, this pull request conflicts with the following ones:
- #738 (Add menu option to migrate a wallet by achow101)
- #bitcoin/bitcoin/28453 (wallet: Receive silent payment transactions by achow101)
- #bitcoin/bitcoin/28423 (kernel: Remove protocol.h/netaddress.h/compat.h from kernel headers by TheCharlatan)
- #bitcoin/bitcoin/28202 (Silent Payments: receiving by josibake)
- #bitcoin/bitcoin/28142 (wallet: Allow users to create a wallet that encrypts all database records by achow101)
- #bitcoin/bitcoin/27827 (Silent Payments: send and receive by josibake)
- #bitcoin/bitcoin/26728 (wallet: Have the wallet store the key for automatically generated descriptors by achow101)
- #bitcoin/bitcoin/26606 (wallet: Implement independent BDB parser by achow101)
- #bitcoin/bitcoin/26596 (wallet: Migrate legacy wallets to descriptor wallets without requiring BDB by achow101)
- #bitcoin/bitcoin/26022 (Add util::ResultPtr class by ryanofsky)
- #bitcoin/bitcoin/25907 (wallet: rpc to add automatically generated descriptors by achow101)
- #bitcoin/bitcoin/22341 (rpc: add getxpub by Sjors)
- #bitcoin/bitcoin/20892 (tests: Run both descriptor and legacy tests within a single test invocation by achow101)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
-
DrahtBot cross-referenced this on Jul 24, 2023 from issue Add menu option to migrate a wallet by achow101
-
DrahtBot added the label CI failed on Jul 24, 2023
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue wallet: Have the wallet store the key for automatically generated descriptors by achow101
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue wallet: Implement independent BDB parser by achow101
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue wallet: Migrate legacy wallets to descriptor wallets without requiring BDB by achow101
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue Add util::ResultPtr class by ryanofsky
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue wallet: rpc to add automatically generated descriptors by achow101
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue refactor: Use util::Result class for wallet loading by ryanofsky
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue rpc: add path to gethdkey by Sjors
-
DrahtBot cross-referenced this on Jul 25, 2023 from issue tests: Run both descriptor and legacy tests within a single test invocation by achow101
-
DrahtBot cross-referenced this on Aug 2, 2023 from issue Silent Payments: receiving by josibake
-
DrahtBot cross-referenced this on Aug 3, 2023 from issue Silent Payments: send and receive by josibake
-
DrahtBot cross-referenced this on Aug 5, 2023 from issue wallet: Allow users to create a wallet that encrypts all database records by achow101
-
hebasto renamed this:
gui: Open fully encrypted wallets
Open fully encrypted wallets
on Aug 29, 2023 -
hebasto added the label Wallet on Aug 29, 2023
-
DrahtBot cross-referenced this on Sep 11, 2023 from issue wallet: Receive silent payment transactions by achow101
-
DrahtBot cross-referenced this on Sep 12, 2023 from issue kernel: Remove protocol.h/netaddress.h/compat.h from kernel headers by TheCharlatan
-
DrahtBot added the label Needs rebase on Sep 14, 2023
-
DrahtBot commented at 10:33 am on September 14, 2023: contributor
🐙 This pull request conflicts with the target branch and needs rebase.
-
hebasto commented at 6:22 pm on September 22, 2023: member
Allows users to open wallets with encrypted databases (bitcoin/bitcoin#28142) from the GUI.
While the base PR is still under reviewing, maybe convert this one to a draft?
-
achow101 marked this as a draft on Sep 23, 2023
-
DrahtBot commented at 0:57 am on December 22, 2023: contributor
There hasn’t been much activity lately and the patch still needs rebase. What is the status here?
- Is it still relevant? ➡️ Please solve the conflicts to make it ready for review and to ensure the CI passes.
- Is it no longer relevant? ➡️ Please close.
- Did the author lose interest or time to work on this? ➡️ Please close it and mark it ‘Up for grabs’ with the label, so that it can be picked up in the future.
-
achow101 closed this on Jan 8, 2024
This is a metadata mirror of the GitHub repository bitcoin-core/gui. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-11-11 13:20 UTC
More mirrored repositories can be found on mirror.b10c.me