A minimal Bitcoin wallet intended for embedded devices
C C++ Makefile Matlab Assembly Protocol Buffer Objective-C
Switch branches/tags
Nothing to show
Permalink
Failed to load latest commit information.
avr adding OtpRequest interjection Nov 13, 2013
gen_twiddle moving platform-dependent stuff back into lpc11uxx and doing more ref… Nov 4, 2012
lpc11uxx miscellaneous fixes that weren't committed Apr 6, 2015
pic32 partitions in non-volatile storage model Apr 12, 2015
test_vectors adding hmac-sha512; updating a few things Nov 11, 2012
GPL adding PIC32 linker script Mar 29, 2013
LIBFIXMATH_LICENCE moving code which is mostly platform independent out of lpc11uxx Nov 4, 2012
LICENCE importing everything Jan 29, 2012
Makefile deprecating p2sh_addr_gen Apr 6, 2015
PROTOCOL initial changes for transition to protocol buffer interface Mar 7, 2013
README adding hmac-sha512; updating a few things Nov 11, 2012
aes.c fixing issue #10 Mar 4, 2013
aes.h some refactoring Apr 22, 2012
baseconv.c fixing issue #10 Mar 4, 2013
baseconv.h miscellaneous fixes that weren't committed Apr 6, 2015
bignum256.c implementing RFC 6979 and canonical signatures Apr 9, 2015
bignum256.h implementing RFC 6979 and canonical signatures Apr 9, 2015
bip32.c adding updated BIP32 key derivation code Dec 6, 2014
bip32.h adding updated BIP32 key derivation code Dec 6, 2014
common.h updating nanopb to nanopb-0.2.4 Dec 31, 2013
ecdsa.c implementing RFC 6979 and canonical signatures Apr 9, 2015
ecdsa.h implementing RFC 6979 and canonical signatures Apr 9, 2015
endian.c initial changes for transition to protocol buffer interface Mar 7, 2013
endian.h initial changes for transition to protocol buffer interface Mar 7, 2013
fft.c fixing issue #10 Mar 4, 2013
fft.h fixing issue #10 Mar 4, 2013
fix16.c fixing issue #10 Mar 4, 2013
fix16.h fixing issue #10 Mar 4, 2013
hash.c fixing issue #10 Mar 4, 2013
hash.h fixing issue #10 Mar 4, 2013
hmac_drbg.c implementing RFC 6979 and canonical signatures Apr 9, 2015
hmac_drbg.h adding HMAC_DRBG based on SHA-256 Apr 6, 2015
hmac_sha512.c adding HMAC_DRBG based on SHA-256 Apr 6, 2015
hmac_sha512.h using BIP 0032 algorithm for deterministic wallet key generation Nov 13, 2012
hwinterface.h partitions in non-volatile storage model Apr 12, 2015
int64.h moving code which is mostly platform independent out of lpc11uxx Nov 4, 2012
messages.pb.c updating nanopb to nanopb-0.2.4 Dec 31, 2013
messages.pb.h updating nanopb to nanopb-0.2.4 Dec 31, 2013
messages.proto uninitialised wallets no longer displayed for ListWallets Dec 31, 2013
pb.h updating nanopb to nanopb-0.2.4 Dec 31, 2013
pb_decode.c updating nanopb to nanopb-0.2.4 Dec 31, 2013
pb_decode.h updating nanopb to nanopb-0.2.4 Dec 31, 2013
pb_encode.c updating nanopb to nanopb-0.2.4 Dec 31, 2013
pb_encode.h updating nanopb to nanopb-0.2.4 Dec 31, 2013
pbkdf2.c adding PBKDF2-HMAC-SHA512 Mar 30, 2013
pbkdf2.h adding PBKDF2-HMAC-SHA512 Mar 30, 2013
prandom.c partitions in non-volatile storage model Apr 12, 2015
prandom.h adding OtpRequest interjection Nov 13, 2013
ripemd160.c fixing issue #10 Mar 4, 2013
ripemd160.h doxygen-ising comments part 2 Apr 16, 2012
sha256.c fixing issue #10 Mar 4, 2013
sha256.h adding HMAC_DRBG based on SHA-256 Apr 6, 2015
statistics.c fixing issue #10 Mar 4, 2013
statistics.h fixing issue #10 Mar 4, 2013
storage_common.h partitions in non-volatile storage model Apr 12, 2015
stream_comm.c partitions in non-volatile storage model Apr 12, 2015
stream_comm.h replacing UnloadWallet with Initialize; Ping replays session_id Nov 20, 2013
test_helpers.c adding HMAC_DRBG based on SHA-256 Apr 6, 2015
test_helpers.h adding HMAC_DRBG based on SHA-256 Apr 6, 2015
transaction.c implementing RFC 6979 and canonical signatures Apr 9, 2015
transaction.h implementing RFC 6979 and canonical signatures Apr 9, 2015
wallet.c partitions in non-volatile storage model Apr 12, 2015
wallet.h partitions in non-volatile storage model Apr 12, 2015
xex.c partitions in non-volatile storage model Apr 12, 2015
xex.h partitions in non-volatile storage model Apr 12, 2015

README

Hardware Bitcoin Wallet
by someone42, unless stated otherwise

A minimal Bitcoin (see http://bitcoin.org/ ) wallet for embedded devices. The
wallet is responsible for parsing transactions, prompting the user and signing
transactions. In order to do this, the wallet also stores and manages private
keys, but it does not store anything else. The wallet is not aware of the
blockchain and communicates with a BitCoin client ("the host" from the point
of view of the code here) via. a point-to-point stream-based link.

Everything in the top-level source directory is self-contained and should be
platform-independent. The only platform-dependent file there is common.h,
which should be modified if porting to other platforms. hwinterface.h
describes what platform-dependent functions need to be implemented. The
Makefile in the top-level source directory will build platform-independent
unit tests. Those unit tests can make use of the test vectors in the
test_vectors/ subdirectory.

Everything in the avr/ subdirectory is specific to the 8 bit AVR platform. The
Makefile in avr/ will produce a (non-testing) binary suitable for programming
an 8 bit AVR device with.

Everything in the lpc11uxx/ subdirectory is specific to the LPC11Uxx series of
microcontrollers. The lpc11uxx/ subdirectory also contains a Makefile which
will produce a non-testing binary.