├── .clog.toml ├── .gitignore ├── .projections.json ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Cargo.toml ├── LICENSE ├── Makefile ├── README.md ├── circle.yml ├── contributing.json ├── crypto ├── Cargo.toml ├── src │ ├── asymmetric │ │ ├── dh │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── rsa │ │ │ └── mod.rs │ │ └── utils │ │ │ ├── mod.rs │ │ │ ├── modular │ │ │ ├── inverse.rs │ │ │ ├── mod.rs │ │ │ └── power.rs │ │ │ └── primes │ │ │ ├── mod.rs │ │ │ └── tests.rs │ ├── block │ │ ├── blowfish.rs │ │ └── mod.rs │ ├── lib.rs │ └── stream │ │ ├── chacha20.rs │ │ └── mod.rs └── tests │ ├── asymmetric │ ├── dh │ │ └── mod.rs │ ├── mod.rs │ └── rsa │ │ └── mod.rs │ ├── block │ ├── blowfish.rs │ └── mod.rs │ ├── lib.rs │ └── stream │ ├── chacha20.rs │ └── mod.rs ├── digest ├── Cargo.toml ├── benches │ ├── blake2 │ │ └── mod.rs │ ├── lib.rs │ ├── md5 │ │ └── mod.rs │ ├── ripemd │ │ └── mod.rs │ ├── sha1 │ │ └── mod.rs │ ├── sha2 │ │ └── mod.rs │ ├── sha3 │ │ └── mod.rs │ ├── tiger │ │ └── mod.rs │ └── whirlpool │ │ └── mod.rs ├── src │ ├── blake2 │ │ └── mod.rs │ ├── lib.rs │ ├── md5.rs │ ├── ripemd.rs │ ├── sha1 │ │ ├── intrinsics.rs │ │ └── mod.rs │ ├── sha2.rs │ ├── sha3.rs │ ├── simd.rs │ ├── tiger │ │ ├── mod.rs │ │ └── sboxes.rs │ ├── whirlpool │ │ ├── mod.rs │ │ └── sboxes.rs │ └── wrapping.rs └── tests │ ├── blake2 │ ├── blake2-kat.json │ ├── blake2b.toml │ ├── blake2bp-kat.txt │ ├── blake2s.toml │ ├── blake2sp-kat.txt │ └── mod.rs │ ├── lib.rs │ ├── md5 │ ├── mod.rs │ └── rfc1321.toml │ ├── ripemd │ └── mod.rs │ ├── sha1 │ ├── mod.rs │ └── shavs │ │ ├── long.toml │ │ └── short.toml │ ├── sha2 │ ├── mod.rs │ ├── sha224.rs │ ├── sha256.rs │ ├── sha384.rs │ ├── sha512.rs │ └── shavs │ │ ├── sha224 │ │ ├── long.toml │ │ └── short.toml │ │ ├── sha256 │ │ ├── long.toml │ │ └── short.toml │ │ ├── sha384 │ │ ├── long.toml │ │ └── short.toml │ │ └── sha512 │ │ ├── long.toml │ │ └── short.toml │ ├── sha3 │ ├── mod.rs │ ├── sha224.toml │ ├── sha256.toml │ ├── sha384.toml │ └── sha512.toml │ ├── tiger │ ├── mod.rs │ └── tiger.toml │ ├── utils │ ├── mod.rs │ └── tests.rs │ └── whirlpool │ ├── iso.toml │ └── mod.rs ├── docs ├── after.html ├── header.html ├── keys │ └── hauleth.asc ├── logo.png └── logo.svg ├── examples └── sums.rs ├── graph.svg ├── kdf ├── Cargo.toml └── src │ ├── bcrypt.rs │ └── lib.rs ├── mac ├── Cargo.toml ├── src │ ├── hmac.rs │ └── lib.rs └── tests │ └── hmac.rs ├── src └── lib.rs ├── tests ├── kdf │ ├── bcrypt.rs │ └── mod.rs └── lib.rs └── tools ├── doc-upload.sh ├── flame └── stackcollapse /.clog.toml: -------------------------------------------------------------------------------- 1 | [clog] 2 | repository = "https://github.com/libOctavo/octavo" 3 | 4 | changelog = "CHANGELOG.md" 5 | from-latest-tag = true 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /oprofile_data 2 | 3 | target 4 | Cargo.lock 5 | 6 | /.envrc 7 | -------------------------------------------------------------------------------- /.projections.json: -------------------------------------------------------------------------------- 1 | { 2 | "src/*.rs": { "type": "source", "alternate": "tests/{}.rs" }, 3 | "tests/*.rs": { "type": "test", "alternate": "benches/{}.rs" }, 4 | "benches/*.rs": { "type": "bench", "alternate": "src/{}.rs" }, 5 | "README.md": { "type": "doc" }, 6 | "docs/*": { "type": "doc" } 7 | } 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | sudo: false 3 | cache: cargo 4 | rust: 5 | - stable 6 | - beta 7 | - nightly 8 | script: 9 | - make $crate 10 | after_success: 11 | - test "$TRAVIS_RUST_VERSION" = "stable" && test "$crate" = "octavo" && make doc-upload 12 | notifications: 13 | webhooks: 14 | urls: 15 | - 'https://webhooks.gitter.im/e/0b41a49fe5bcca9dcc0c' 16 | - 'https://liboctavo-octavo.getbadges.io/api/app/webhook/2a97cf2f-1d37-4eba-a4dd-04c5c7259ea6' 17 | on_start: never 18 | env: 19 | global: 20 | - secure: K8PmeJg4fvz7+9pdZrxR2QDPi8pILppySsp8a93yi/my8nuXOunSR9vljwdRZfwU/TyT5RDUz8TPcP8cZEsgHRafHid+Q4x7eJd7ufXGfMNT6T+oqmkR0uG8HZF6HyingilgrZnDwf5CT7A0X3yIuA5nrR+YigmJLmk7XvHBAHt3fpTOwD66D4pa0+a/tPBBOK/npxin6q6jaxsOdQWNNfX5vu64McI8JS4A96R+S49rUc5OXbMXUItNQEUZZ6i7T+Jp9xy4IA9l3XQHr1pgRSn9OrR7lK7+zr9L5o0VvU7CDrhawGhAuGHZ4tKmWQqfxIbWhI6oA2cJbZS+KC/jaL7p68M3PaXG+bBX+0p1RXPemJ/p5QKQ1mkns87GY8LkU2LEW0rn+MySsAtsr71ZRIoIQlFFxmXlIShsjwEMBkPBAaPzJCrdqeVft3DjWKkjvdPvAhK1Zo22lE1mN502IbZ2mHw/Q0K8mLuVPWjD9ZRpp+stLJwrHauo7u53S1gPuBhU0vbd7Y9lHmcRPdZw83XTCjoORMqutqtI3xpfCF0/ZCttv6nfIoh4umKl12K0E4fT7TGMAdW2r1l6lUtTyaWHBMCJEgad+OCCxPkXveznbaRjw9iJx1i/Wk+Jr9oZeBuSSnTk5MXtIfqkApKdumhVQGdhO9QZr+0vc11TiPI= 21 | matrix: 22 | - crate=digest 23 | - crate=crypto 24 | - crate=kdf 25 | - crate=mac 26 | - crate=octavo 27 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | ## 0.1.1 (2016-04-12) 3 | 4 | 5 | #### Features 6 | 7 | * Add main crate to Makefile ([10a24789](https://github.com/libOctavo/octavo/commit/10a24789b2f4bb78f82c9b4e9c8c752820a6d559)) 8 | * TravisCI should use Makefile to test crates ([7d05296c](https://github.com/libOctavo/octavo/commit/7d05296c54b49eaad76ee8b0bc112114655c5a4c)) 9 | * Create Makefile to execute tasks on each crate ([32f098b6](https://github.com/libOctavo/octavo/commit/32f098b66eafb6fc3855aa10b874e56186bd193a)) 10 | * Extract modules into independent crates ([b9ec1a47](https://github.com/libOctavo/octavo/commit/b9ec1a47445d1dd7cba3a79c3bbe1c94015df419)) 11 | * use `debug_assert` instead of `assert_eq` ([50066e0e](https://github.com/libOctavo/octavo/commit/50066e0e4d58295e6a44a0375c226bac24edc169)) 12 | * Add `no-std` flag to byteorder ([8dd0143e](https://github.com/libOctavo/octavo/commit/8dd0143e2e0db663a857c803f641edc085dbb125)) 13 | * Add profiling options for benchmarks ([74de1d97](https://github.com/libOctavo/octavo/commit/74de1d97e0faa4be81f2d10423c36c6d5afb0c0e)) 14 | * Add Redox support ([c442e7a9](https://github.com/libOctavo/octavo/commit/c442e7a93352ece3af7c855f16c7b272bf7eea54)) 15 | * Use only byteorder::ByteOrder to allow usage without libstd ([f6d53b30](https://github.com/libOctavo/octavo/commit/f6d53b304ccf55bd3dde512ae343d5304d5e64f4)) 16 | * Add projectionist configuration ([e75fc701](https://github.com/libOctavo/octavo/commit/e75fc70141c90665be2552c36795364a733af568)) 17 | * Add Clippy lints ([34da1d01](https://github.com/libOctavo/octavo/commit/34da1d011a51248ad7c4e73e65dcba5a908772a7)) 18 | * **.clog.toml:** Add clog configuration ([bd5a603f](https://github.com/libOctavo/octavo/commit/bd5a603ff6f791dbc145730e4f74c206624582c9)) 19 | * **.travis.yml:** GetBadges integration ([39bbb4b7](https://github.com/libOctavo/octavo/commit/39bbb4b7d28a1a3fc9435b301edb855820d42127)) 20 | * **README:** 21 | * add License badge ([f52b9bdf](https://github.com/libOctavo/octavo/commit/f52b9bdf55269d3109e7862a8d4deba61d08e7ae)) 22 | * Add more shields ([f629fe55](https://github.com/libOctavo/octavo/commit/f629fe5572dbeed3f8ce67f5bef031dfaa82e73f)) 23 | * **benches/digest:** Use block size in benches ([cff8835e](https://github.com/libOctavo/octavo/commit/cff8835e2eaaa2d94342b258d6c423315ed24e86)) 24 | * **bin:** Remove tools ([7023679b](https://github.com/libOctavo/octavo/commit/7023679b5a0c385944f6b13e9ec11cbd839481e6)) 25 | * **digest:** 26 | * Use typenum in Digest ([93b0d72f](https://github.com/libOctavo/octavo/commit/93b0d72fec3053c64f79302a1030a7c557afd6fb)) 27 | * Implement `Clone` trait ([35e0f07e](https://github.com/libOctavo/octavo/commit/35e0f07e33bae25b775e55aad9a844ceed336396), closes [#57](https://github.com/libOctavo/octavo/issues/57)) 28 | * Add SHA-512/224 and SHA-512/256 hash functions ([9932a497](https://github.com/libOctavo/octavo/commit/9932a497dde12b993cc59f8e56f90f031066a74b)) 29 | * Add quickchecks against OpenSSL ([8f970ce9](https://github.com/libOctavo/octavo/commit/8f970ce9db1cccec786d5ecdaa508a0f6394468a)) 30 | * **digest::blake2:** Add Blake2 digest function ([c1594432](https://github.com/libOctavo/octavo/commit/c15944325117b4a0006e5d823b21ef41df84c4db)) 31 | * **digest::sha3:** Remove std::io dependency ([7eadab57](https://github.com/libOctavo/octavo/commit/7eadab578f1833a1b141782aad141c5faa05d048)) 32 | * **digest::tiger:** 33 | * finish implementation and add tests ([9b33bea3](https://github.com/libOctavo/octavo/commit/9b33bea37dd25e56c326052efdf83ef8d103eb5b)) 34 | * initial commit ([f0b29a85](https://github.com/libOctavo/octavo/commit/f0b29a8574e9f2a5c6d6b0971f137c19613d8154)) 35 | * **digest::tiger::Tiger2:** Add implementation ([329e3f2c](https://github.com/libOctavo/octavo/commit/329e3f2c26c0811f85dac007cf014ce6f1d42893)) 36 | * **examples/sums:** add Tiger hash ([c61d1392](https://github.com/libOctavo/octavo/commit/c61d13929e6915d3f2b018953101b973079016d0)) 37 | * **kdf::bcrypt:** Move `bcrypt` to kdf module ([9cb4747e](https://github.com/libOctavo/octavo/commit/9cb4747e5765d50dc68a03b787655da258b36648)) 38 | * **mac::hmac:** 39 | * Use GenericArray in Hmac ([3a5e7d26](https://github.com/libOctavo/octavo/commit/3a5e7d263d26c0e9c4d7303470684fa40e5f85ae)) 40 | * Add more tests ([89079951](https://github.com/libOctavo/octavo/commit/89079951e04ad03ebd505017beb3c096cf4018c4)) 41 | * **sum:** add Tiger supported hashes ([ded917cb](https://github.com/libOctavo/octavo/commit/ded917cb60471a4051832a363054cdc60d0e44ad)) 42 | * **utils::buffer:** Make buffers generic over size ([07c87c0d](https://github.com/libOctavo/octavo/commit/07c87c0d11b31760c9f2f1b56fd4c964076d70a2)) 43 | * **utils::buffer::StandardPadding:** allow custom pads ([52e5201f](https://github.com/libOctavo/octavo/commit/52e5201f0e0e169e1430ec133e329d6ea5bd6d2c)) 44 | 45 | #### Bug Fixes 46 | 47 | * Test script ([339c0575](https://github.com/libOctavo/octavo/commit/339c05755a812a49121ded2937d526b0f8eb2071)) 48 | * Add empty unstable feature to all ([ac8b6e71](https://github.com/libOctavo/octavo/commit/ac8b6e71b2e96394949da4c8d2d688b7e1ee9e96)) 49 | * TravisCI build script ([416481a6](https://github.com/libOctavo/octavo/commit/416481a65b23d6344355c0d51f4e206e2d851a22)) 50 | * disallow failures on nightly ([94f29db5](https://github.com/libOctavo/octavo/commit/94f29db5dde460f4d22813847b03f23f7b94ccef)) 51 | * loosen dependencies a little and allow failures on nightly ([d8aa832a](https://github.com/libOctavo/octavo/commit/d8aa832a5634ebff3f354def847a45ea53177b9a)) 52 | * rename `bin/` to `tools/` ([9df2b1c3](https://github.com/libOctavo/octavo/commit/9df2b1c3d3c6abe74cd49ce63e3b5812e065a890)) 53 | * Add Cargo feature `no-std` ([d8761f49](https://github.com/libOctavo/octavo/commit/d8761f49084415c51b504a9113a8139d259c98f0)) 54 | * Update Clippy ([81997bf7](https://github.com/libOctavo/octavo/commit/81997bf7d95589ef459aed89e6d773b6d8095dfb)) 55 | * Fix SHA2-512/224 build ([e87d691f](https://github.com/libOctavo/octavo/commit/e87d691fc4190086199c4de018208f8177a7045e)) 56 | * Fix SHA-224 implementation ([6c402ca1](https://github.com/libOctavo/octavo/commit/6c402ca11c7b0bfdba77b298390ccccf69bdf487)) 57 | * Remove old lint ([3d49ddd9](https://github.com/libOctavo/octavo/commit/3d49ddd944ef6c9b37a5a223aad1487c2893e113)) 58 | * typos in benches ([2cda3553](https://github.com/libOctavo/octavo/commit/2cda35531cbd6e2bc722f544ee031969ade26f10)) 59 | * travis-cargo already skip benches when impossible ([3efdc9c4](https://github.com/libOctavo/octavo/commit/3efdc9c4a942e8eedefd3c26e707fb40ca46e252)) 60 | * Test names ([fb490b46](https://github.com/libOctavo/octavo/commit/fb490b469caab51c14455e3c8fadd6d32ed768dc)) 61 | * cleanup unneded parens ([2b3f906f](https://github.com/libOctavo/octavo/commit/2b3f906ffda31c836f966a175ed079846f9008f5)) 62 | * follow Rust naming convention ([6fbce255](https://github.com/libOctavo/octavo/commit/6fbce2559bb4e94ccbc148a96c4c2a888ac00f3f)) 63 | * use different type params for bcrypt salt and input ([06dc12f5](https://github.com/libOctavo/octavo/commit/06dc12f52d7377731f214a00bfbd4e61e3e9a88a)) 64 | * follow Rust naming convention ([fee98257](https://github.com/libOctavo/octavo/commit/fee9825776e364a349a874cfce5f2ae2bfaa9028)) 65 | * links in README ([70f05d4a](https://github.com/libOctavo/octavo/commit/70f05d4ab586d8fb2cabac0fa52a1e4099ee5836)) 66 | * **.travis.yml:** Use standard `cargo` instead of `travis-cargo` ([da498d25](https://github.com/libOctavo/octavo/commit/da498d25731d09f279e83b050297af8c6ca22520)) 67 | * **README:** 68 | * Centerize logo ([cb58b104](https://github.com/libOctavo/octavo/commit/cb58b1044a9ec62afd685d13cc9561894f3eff17)) 69 | * Centerize logo ([cbb91631](https://github.com/libOctavo/octavo/commit/cbb91631d18f9c822a6b176ac6806f09dab2783c)) 70 | * link typos ([4977bc31](https://github.com/libOctavo/octavo/commit/4977bc31bae15c4ea2fa1c21369cbc3c986fad5c)) 71 | * **bin/sum:** fix typo ([f11af49e](https://github.com/libOctavo/octavo/commit/f11af49e4d2720396f975c8a8f30c9ee485948fa)) 72 | * **crypto::stream:** publicize Stream{Encrypt,Decrypt} ([5bd3ec74](https://github.com/libOctavo/octavo/commit/5bd3ec7430d2e77b5124844146c249452037145e)) 73 | * **crypto::stream::chacha20:** Fix buffer utilisation ([3e0b9b82](https://github.com/libOctavo/octavo/commit/3e0b9b827dd16f1a0f63cf5979d22e4e989a274c), closes [#34](https://github.com/libOctavo/octavo/issues/34)) 74 | * **digest:** Use `copy_nonoverlapping` instead loops ([148b3156](https://github.com/libOctavo/octavo/commit/148b3156148d614f49eb7c6bf419a19267431257)) 75 | * **digest::sha2:** Fix SHA-512 implementation ([c828d9cd](https://github.com/libOctavo/octavo/commit/c828d9cdb92991cb8f988ae6490a6cf5b9883145)) 76 | * **utils::buffer:** Performance issues ([5f14349a](https://github.com/libOctavo/octavo/commit/5f14349ab56f5c678151020b45a4557b27f3a4d0)) 77 | 78 | #### Performance 79 | 80 | * **bin/sum:** Speed up bin/sum a little ([64badd33](https://github.com/libOctavo/octavo/commit/64badd33cf14a4095c7a7d3d09a56509031fd1f3)) 81 | 82 | 83 | 84 | 85 | ## 0.1.0 (2016-04-12) 86 | 87 | 88 | #### Bug Fixes 89 | 90 | * fix typos ([ab0713ab](https://github.com/libOctavo/octavo/commit/ab0713ab2e2c395fbc0cdd62e7594ad083468bde)) 91 | * Fix PGP key link in README ([177e644d](https://github.com/libOctavo/octavo/commit/177e644d7ab9c7f2ca3159d77e578c48e1862216)) 92 | * more typos ([db62aec2](https://github.com/libOctavo/octavo/commit/db62aec2d85eefa49c61b1800c5c8ecf761d7f78)) 93 | * fix typos ([ea67f8e7](https://github.com/libOctavo/octavo/commit/ea67f8e7a932500d98e9b23d1d44bf556e5be706)) 94 | * Remove Clippy linters ([d61e61a5](https://github.com/libOctavo/octavo/commit/d61e61a50602dc91d5f6025504a266c782fe6691)) 95 | * copy pasta error ([cd3037db](https://github.com/libOctavo/octavo/commit/cd3037dbeeef456cf41877b64c796082762e92c2)) 96 | * **crypto::stream::chacha20:** 97 | * Cast buffer in read-only matter ([af8d20f4](https://github.com/libOctavo/octavo/commit/af8d20f499b892f2c749712741ed92b8ad511668)) 98 | * Fix unsafe code to provide valid size for slice ([ade5b292](https://github.com/libOctavo/octavo/commit/ade5b292aec6b9330692f092ea28a8f908dcfbb5)) 99 | * Fix wrong test case ([dd78633f](https://github.com/libOctavo/octavo/commit/dd78633fa9102c2338c1a30b7b7f803bbeb813fb)) 100 | * **utils::buffer:** Remove unsafe call ([ce71c57b](https://github.com/libOctavo/octavo/commit/ce71c57bd6bcb65c8c07b4345a7df20b58cfae75)) 101 | 102 | #### Features 103 | 104 | * **chacha20:** Finish implementation ([4ad38899](https://github.com/libOctavo/octavo/commit/4ad38899c0589098ac0aa47d0eaff0a3984eabcc)) 105 | * **crypto::block:** Move encryption traits ([43af74ff](https://github.com/libOctavo/octavo/commit/43af74ff640ce4d7cf9ed7106d8a799155799d65)) 106 | * **digest::Digest:** Remove Digest::hex_result ([4bc3d165](https://github.com/libOctavo/octavo/commit/4bc3d165c142109c69e4f6f49f64e297ce0429b8)) 107 | * **sum:** Add `sum` tool ([0b475b52](https://github.com/libOctavo/octavo/commit/0b475b5296c8deceda613f7cf090e0c6637d0725)) 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Commit Message Format 2 | 3 | Each commit message consists of a **header**, a **body** and a **footer**. 4 | The header has a special format that includes a **type**, a **scope** and 5 | a **subject**: 6 | 7 | ``` 8 | (): 9 | 10 | 11 | 12 |