Open FreeSMIME opened 5 years ago
Read on https://programmingblockchain.gitbooks.io/programmingblockchain/content/ about BIP38.
That said, BIP38 is kind of deprecated. If you want to do your stories, look about BIP39 (mnemonic) and BIP32. I talk about it in the book.
Read also https://github.com/NicolasDorier/NBitcoin.Docs to understand how to design a wallet. Once you understand, just use NBXplorer which is an implementation of those concepts.
Depending on the level of control you need, you can also use https://btcpayserver.org (a payment process built on top of nbxplorer)
Thanks Nicolas, Just for closure, I am looking to create an authentication protocol based on zero knowledge proofs and let that co-exist as payable/spendable identifier. I'll look at the docs and see if I can figure out how to reuse the private key in Bip38/32 in a signature scheme
How do I use NBitcoin to solve the scenarios in BIP38? I'm confused about the UnitTests use of the objects "BitcoinEncryptedSecretEC" "BitcoinPassphraseCode" "BitcoinConfirmationCode", and what values are considered "public", "private", or "issuer" in the paper wallet scenario
User story: As a Bitcoin user who uses paper wallets, I would like the ability to add encryption, so that my Bitcoin paper storage can be two factor: something I have plus something I know.
User story: As a Bitcoin user who would like to pay a person or a company with a private key, I do not want to worry that any part of the communication path may result in the interception of the key and theft of my funds. I would prefer to offer an encrypted private key, and then follow it up with the password using a different communication channel (e.g. a phone call or SMS).
User story: (EC-multiplied keys) As a user of physical bitcoins, I would like a third party to be able to create password-protected Bitcoin private keys for me, without them knowing the password, so I can benefit from the physical bitcoin without the issuer having access to the private key. I would like to be able to choose a password whose minimum length and required format does not preclude me from memorizing it or engraving it on my physical bitcoin, without exposing me to an undue risk of password cracking and/or theft by the manufacturer of the item.
User story: (EC multiplied keys) As a user of paper wallets, I would like the ability to generate a large number of Bitcoin addresses protected by the same password, while enjoying a high degree of security (highly expensive scrypt parameters), but without having to incur the scrypt delay for each address I generate