Neobytes - Reinventing Cryptocurrency https://neobytes.network/
Go to file
Francis Reynders bdb50539de Implemented KeePass Integration
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.
2015-01-01 20:06:24 +01:00
.tx qt: add transifex configuration file 2014-05-01 10:16:05 +02:00
contrib Fix for gitian windows compiling 2015-01-01 09:47:45 -07:00
depends update gitian descriptors 2014-12-31 12:03:18 -07:00
doc Update release notes for darkcoin 0.11 2015-01-01 17:00:03 +01:00
qa Update strings. 2014-12-12 12:44:25 +01:00
share build: fix release name strings for gitian builds 2014-09-25 10:56:39 +02:00
src Implemented KeePass Integration 2015-01-01 20:06:24 +01:00
.gitattributes Build identification strings 2012-04-10 18:16:53 +02:00
.gitignore Merged in Darksend/InstantX/Masternodes 2014-12-11 08:10:35 -07:00
autogen.sh autogen.sh: Stop passing --verbose to autoreconf 2013-11-27 17:29:00 -08:00
configure.ac Merged in Darksend/InstantX/Masternodes 2014-12-11 08:10:35 -07:00
COPYING Bump version numbers for 0.8 release 2013-01-30 14:19:09 -05:00
INSTALL Prettify some /Contrib READMEs 2013-10-21 20:07:31 -04:00
Makefile.am Brought over 10.18 changes from old branch 2014-12-11 08:36:02 -07:00
pkg.m4 autotools: switch to autotools buildsystem 2013-09-05 21:31:03 -04:00
README.md Update README.md 2014-12-12 13:05:25 +01:00

Darkcoin Core staging tree 0.11

http://www.darkcoin.io

Copyright (c) 2009-2014 Bitcoin Core Developers

Copyright (c) 2014 Darkcoin Core Developers

What is Darkcoin?

Darkcoin is an experimental new digital currency that enables anonymous, instant payments to anyone, anywhere in the world. Darkcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Darkcoin Core is the name of open source software which enables the use of this currency.

For more information, as well as an immediately useable, binary version of the Darkcoin Core software, see http://www.darkcoin.io/downloads.

License

Darkcoin Core is released under the terms of the MIT license. See COPYING for more information or see http://opensource.org/licenses/MIT.

Building process

compiling Darkcoin from git

Use the autogen script to prepare the build environment.

./autogen.sh
./configure
make

precompiled binaries

Precompiled binaries are available at github, see https://github.com/darkcoinproject/darkcoin-binaries

Always verify the signatures and checksums.

Development tips and tricks

compiling for debugging

Run configure with the --enable-debug option, then make. Or run configure with CXXFLAGS="-g -ggdb -O0" or whatever debug flags you need.

debug.log

If the code is behaving strangely, take a look in the debug.log file in the data directory; error and debugging message are written there.

The -debug=... command-line option controls debugging; running with just -debug will turn on all categories (and give you a very large debug.log file).

The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt to see it.

testnet and regtest modes

Run with the -testnet option to run with "play darkcoins" on the test network, if you are testing multi-machine code that needs to operate across the internet.

If you are testing something that can run on one machine, run with the -regtest option. In regression test mode blocks can be created on-demand; see qa/rpc-tests/ for tests that run in -regest mode.

DEBUG_LOCKORDER

Darkcoin Core is a multithreaded application, and deadlocks or other multithreading bugs can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of what locks are held, and adds warning to the debug.log file if inconsistencies are detected.