Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented KeePass Integration #96

Merged
merged 1 commit into from
Jan 12, 2015
Merged

Implemented KeePass Integration #96

merged 1 commit into from
Jan 12, 2015

Conversation

freynder
Copy link

@freynder freynder commented Jan 1, 2015

More info regarding KeePass: http://keepass.info/

KeePass integration will use KeePassHttp (https://github.com/pfn/keepasshttp/) to facilitate communications between the client and KeePass. KeePassHttp is a plugin for KeePass 2.x and provides a secure means of exposing KeePass entries via HTTP for clients to consume.

The implementation is dependent on the following:

  • crypter.h for AES encryption helper functions.
  • rpcprotocol.h for handling RPC communications. Could only be used partially however due some static values in the code.
  • OpenSSL for base64 encoding. regular util.h libraries were not used for base64 encoding/decoding since they do not use secure allocation.
  • JSON Spirit for reading / writing RPC communications

The following changes were made:

  • Added CLI options in help
  • Added RPC commands: keepass <genkey|init|setpassphrase>
  • Added keepass.h and keepass.cpp which hold the integration routines
  • Modified rpcwallet.cpp to support RPC commands

The following new options are available for darkcoind and darkcoin-qt:
-keepass Use KeePass 2 integration using KeePassHttp plugin (default: 0)
-keepassport= Connect to KeePassHttp on port (default: 19455)
-keepasskey= KeePassHttp key for AES encrypted communication with KeePass
-keepassid= KeePassHttp id for the established association
-keepassname= Name to construct url for KeePass entry that stores the wallet passphrase

The following rpc commands are available:

  • keepass genkey: generates a base64 encoded 256 bit AES key that can be used for the communication with KeePassHttp. Only necessary for manual configuration. Use init for automatic configuration.
  • keepass init: sets up the association between darkcoind and keepass by generating an AES key and sending an association message to KeePassHttp. This will trigger KeePass to ask for an Id for the association. Returns the association and the base64 encoded string for the AES key.
  • keepass setpassphrase : updates the passphrase in KeePassHttp to a new value. This should match the passphrase you intend to use for the wallet. Please note that the standard RPC commands walletpassphrasechange and the wallet encrption from the QT GUI already send the updates to KeePassHttp, so this is only necessary for manual manipulation of the password.

Sample initialization flow from darkcoin-qt console (this needs to be done only once to set up the association):

  • Have KeePass running with an open database
  • Start darkcoin-qt
  • Open console
  • type: "keepass init" in darkcoin-qt console
  • (keepass pops up and asks for an association id, fill that in). Example: mydrkwallet
  • response: Association successful. Id: mydrkwalletdarkcoin - Key: AgQkcs6cI7v9tlSYKjG/+s8wJrGALHl3jLosJpPLzUE=
  • Edit darkcoin.conf and fill in these values
    keepass=1
    keepasskey=AgQkcs6cI7v9tlSYKjG/+s8wJrGALHl3jLosJpPLzUE=
    keepassid=mydrkwallet
    keepassname=testwallet
  • Restart darkcoin-qt

At this point, the association is made. The next action depends on your particular situation:

  • current wallet is not yet encrypted. Encrypting the wallet will trigger the integration and stores the password in KeePass (Under the 'KeePassHttp Passwords' group, named after keepassname.
  • current wallet is already encrypted: use "keepass setpassphrase " to store the passphrase in KeePass.

At this point, the passphrase is stored in KeePassHttp. When Unlocking the wallet, one can use keepass as the passphrase to trigger retrieval of the password. This works from the RPC commands as well as the GUI.

More info regarding KeePass: http://keepass.info/

KeePass integration will use KeePassHttp (https://github.com/pfn/keepasshttp/) to facilitate communications between the client and KeePass. KeePassHttp is a plugin for KeePass 2.x and provides a secure means of exposing KeePass entries via HTTP for clients to consume.

The implementation is dependent on the following:
- crypter.h for AES encryption helper functions.
- rpcprotocol.h for handling RPC communications. Could only be used partially however due some static values in the code.
- OpenSSL for base64 encoding. regular util.h libraries were not used for base64 encoding/decoding since they do not use secure allocation.
- JSON Spirit for reading / writing RPC communications

The following changes were made:
- Added CLI options in help
- Added RPC commands: keepass <genkey|init|setpassphrase>
- Added keepass.h and keepass.cpp which hold the integration routines
- Modified rpcwallet.cpp to support RPC commands

The following new options are available for darkcoind and darkcoin-qt:
  -keepass               Use KeePass 2 integration using KeePassHttp plugin (default: 0)
  -keepassport=<port>    Connect to KeePassHttp on port <port> (default: 19455)
  -keepasskey=<key>      KeePassHttp key for AES encrypted communication with KeePass
  -keepassid=<name>      KeePassHttp id for the established association
  -keepassname=<name>    Name to construct url for KeePass entry that stores the wallet passphrase

The following rpc commands are available:
- keepass genkey: generates a base64 encoded 256 bit AES key that can be used for the communication with KeePassHttp. Only necessary for manual configuration. Use init for automatic configuration.
- keepass init: sets up the association between darkcoind and keepass by generating an AES key and sending an association message to KeePassHttp. This will trigger KeePass to ask for an Id for the association. Returns the association and the base64 encoded string for the AES key.
- keepass setpassphrase <passphrase>: updates the passphrase in KeePassHttp to a new value. This should match the passphrase you intend to use for the wallet. Please note that the standard RPC commands walletpassphrasechange and the wallet encrption from the QT GUI already send the updates to KeePassHttp, so this is only necessary for manual manipulation of the password.

Sample initialization flow from darkcoin-qt console (this needs to be done only once to set up the association):
- Have KeePass running with an open database
- Start darkcoin-qt
- Open console
- type: "keepass init" in darkcoin-qt console
- (keepass pops up and asks for an association id, fill that in). Example: mydrkwallet
- response: Association successful. Id: mydrkwalletdarkcoin - Key: AgQkcs6cI7v9tlSYKjG/+s8wJrGALHl3jLosJpPLzUE=
- Edit darkcoin.conf and fill in these values
    keepass=1
    keepasskey=AgQkcs6cI7v9tlSYKjG/+s8wJrGALHl3jLosJpPLzUE=
    keepassid=mydrkwallet
    keepassname=testwallet
- Restart darkcoin-qt

At this point, the association is made. The next action depends on your particular situation:
- current wallet is not yet encrypted. Encrypting the wallet will trigger the integration and stores the password in KeePass (Under the 'KeePassHttp Passwords' group, named after keepassname.
- current wallet is already encrypted: use "keepass setpassphrase <passphrase>" to store the passphrase in KeePass.

At this point, the passphrase is stored in KeePassHttp. When Unlocking the wallet, one can use keepass as the passphrase to trigger retrieval of the password. This works from the RPC commands as well as the GUI.
@freynder
Copy link
Author

freynder commented Jan 1, 2015

Will write a more detailed guide with screenshots if approved

darkcoinproject added a commit that referenced this pull request Jan 12, 2015
Implemented KeePass Integration
@darkcoinproject darkcoinproject merged commit 3dcdfc6 into dashpay:v0.11.0.x Jan 12, 2015
@darkcoinproject
Copy link

Thanks for this, it looks great!

@freynder freynder deleted the keepass branch January 18, 2015 10:01
@freynder
Copy link
Author

Guide available here:
https://darkcointalk.org/threads/keepass-integration.3620

FornaxA pushed a commit to ioncoincore/ion that referenced this pull request Jul 6, 2020
[bug][regtest][build][gitian][maintenance][launchpad] Powerppc for launchpad and regtest fix
kwvg pushed a commit to kwvg/dash that referenced this pull request Dec 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants