1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-22 07:28:10 +00:00
Go to file
Jochen Hoenicke 32bda8d1d9
Faster PBKDF2 by reusing intermediate results.
The old implementation needed 6 sha transformations per iterations:

- 2 for computing sha512 of seed,
- 2 for computing digests of ipads/opads,
- 2 for computing digests of intermediate hashes.

The first 4 transformations are the same in every iteration so we cache
them.  A new function hmac_sha512_prepare computes these digests.
We made sha512_Transform visible in pbkdf2 and prevent unneccessary
big/little endian conversions back and forth.
2016-07-13 22:17:23 +02:00
ed25519-donna undef align for ed25519-donna 2016-04-29 17:50:20 +02:00
emscripten add node_modules to .gitignore 2016-05-16 15:29:29 +02:00
gui fix tools and gui 2016-04-25 17:46:01 +02:00
tools remove tools/Makefile 2016-04-28 14:36:04 +02:00
.gitignore remove cpython wrapper - it's broken and nobody uses it 2016-07-04 18:27:28 +02:00
.travis.yml Adding cmake to travis 2016-01-26 22:32:41 +01:00
aes_modes.c rename aes_ctr_counter_inc to aes_ctr_cbuf_inc and move it to aes_modes.c 2014-06-07 14:16:27 +02:00
aes.h rename aes_ctr_counter_inc to aes_ctr_cbuf_inc and move it to aes_modes.c 2014-06-07 14:16:27 +02:00
aescrypt.c update AES code to support different modes of operation, add unittests 2014-06-07 13:38:56 +02:00
aeskey.c update AES code to support different modes of operation, add unittests 2014-06-07 13:38:56 +02:00
aesopt.h don't include aescpp.h 2014-07-24 15:26:50 +02:00
aestab.c update AES code to support different modes of operation, add unittests 2014-06-07 13:38:56 +02:00
aestab.h update AES code to support different modes of operation, add unittests 2014-06-07 13:38:56 +02:00
AUTHORS import sources 2013-08-17 14:20:15 +02:00
base58.c Handle b58 address with shorter lengths 2016-04-27 23:15:53 +02:00
base58.h Add stdbool.h 2015-01-23 12:12:40 -08:00
bignum.c add bn_divmod1000 including unit test 2016-06-28 20:05:01 +02:00
bignum.h add bn_divmod1000 including unit test 2016-06-28 20:05:01 +02:00
bip32.c fpr -> fingerprint 2016-07-04 17:29:48 +02:00
bip32.h Revert "add __dummy field to HDNode where fingerprint used to be (in order not to binary compatibility)" 2016-07-04 18:49:25 +02:00
bip39_english.h Make word list const 2015-02-14 12:00:44 +01:00
bip39.c add mnemonic generation methods with indexes option 2016-05-13 19:46:12 +02:00
bip39.h add mnemonic generation methods with indexes option 2016-05-13 19:46:12 +02:00
CMakeLists.txt Add sha3 to cmake 2016-05-23 19:10:06 +01:00
CONTRIBUTORS add CONTRIBUTORS file 2015-07-29 16:38:45 +02:00
curves.c ed25519 support 2016-04-22 18:21:58 +02:00
curves.h ed25519 support 2016-04-22 18:21:58 +02:00
ecdsa.c Rewrite ecdsa_uncompress_pubkey() using ecdsa_read_pubkey() 2016-05-23 19:10:06 +01:00
ecdsa.h Implement ecdsa_get_ethereum_pubkeyhash() 2016-05-23 19:10:06 +01:00
hmac.c Faster PBKDF2 by reusing intermediate results. 2016-07-13 22:17:23 +02:00
hmac.h Faster PBKDF2 by reusing intermediate results. 2016-07-13 22:17:23 +02:00
LICENSE adjust format of LICENSE 2016-01-31 12:16:31 +01:00
macros.h cleanup coding style 2015-04-13 18:19:33 +02:00
Makefile Add tests for ecdsa_get_ethereum_pubkeyhash() 2016-06-13 22:18:40 +01:00
nist256p1.c ed25519 support 2016-04-22 18:21:58 +02:00
nist256p1.h ed25519 support 2016-04-22 18:21:58 +02:00
nist256p1.table Add support for NIST256P1 elliptic curve 2015-06-26 10:33:14 +03:00
options.h Implement ecdsa_get_ethereum_pubkeyhash() 2016-05-23 19:10:06 +01:00
pbkdf2.c Faster PBKDF2 by reusing intermediate results. 2016-07-13 22:17:23 +02:00
pbkdf2.h Faster PBKDF2 by reusing intermediate results. 2016-07-13 22:17:23 +02:00
rand.c fix build on _WIN32 2015-12-14 22:50:28 +01:00
rand.h fix /dev/urandom problem 2015-05-04 19:53:06 +02:00
README.md update readme 2016-05-11 21:15:48 +02:00
ripemd160.c reorder parameters of hash_final methods 2016-04-26 11:50:04 +02:00
ripemd160.h reorder parameters of hash_final methods 2016-04-26 11:50:04 +02:00
script.c add script parsing functions 2016-05-16 14:45:09 +02:00
script.h add script parsing functions 2016-05-16 14:45:09 +02:00
secp256k1.c ed25519 support 2016-04-22 18:21:58 +02:00
secp256k1.h ed25519 support 2016-04-22 18:21:58 +02:00
secp256k1.table Add support for NIST256P1 elliptic curve 2015-06-26 10:33:14 +03:00
setup.py whitespace 2015-07-06 12:48:11 -04:00
sha2.c Faster PBKDF2 by reusing intermediate results. 2016-07-13 22:17:23 +02:00
sha2.h Faster PBKDF2 by reusing intermediate results. 2016-07-13 22:17:23 +02:00
sha3.c Use proper option for USE_KECCAK via options.h 2016-05-17 18:45:08 +01:00
sha3.h Use proper option for USE_KECCAK via options.h 2016-05-17 18:45:08 +01:00
test_curves.py Adapted python unit test to new API 2016-04-25 17:44:37 +02:00
test_speed.c further optimize emscripten 2016-05-12 19:29:24 +02:00
test-openssl.c Add support for NIST256P1 elliptic curve 2015-06-26 10:33:14 +03:00
tests.c increase timeout in test_codepoints 2016-07-04 17:32:02 +02:00

trezor-crypto

Build Status gitter

Heavily optimized cryptography algorithms for embedded devices.

These include:

  • AES/Rijndael encryption/decryption
  • Big Number (256 bit) Arithmetics
  • BIP32 Hierarchical Deterministic Wallets
  • BIP39 Mnemonic code
  • ECDSA signing/verifying (supports secp256k1 and nist256p1 curves, uses RFC6979 for deterministic signatures)
  • ECDSA public key derivation + Base58 address representation
  • Ed25519 signing/verifying
  • HMAC-SHA256 and HMAC-SHA512
  • PBKDF2
  • RIPEMD-160
  • SHA256/SHA512
  • SHA3/Keccak
  • unit tests (using Check - check.sf.net; in tests.c)
  • tests against OpenSSL (in test-openssl.c)

Distibuted under MIT License.