stronghold_engine 2.0.1

A rust implementation of the IOTA Stronghold low-level libraries
Documentation
# Changelog

## \[2.0.1]

- [`4ccc99fa`]https://www.github.com/iotaledger/stronghold.rs/commit/4ccc99faec7000cfaefa4feab3a26d52435c3cd6 Fixed compilation for armv7-unknown-linux-gnueabihf target.

### Dependencies

- Upgraded to `stronghold-runtime@2.0.1`

## \[2.0.0]

- [`b9ce406a`]https://www.github.com/iotaledger/stronghold.rs/commit/b9ce406a1a3396a7c8cc7cca42f2bb5c0768dde9([#495]https://www.github.com/iotaledger/stronghold.rs/pull/495) Stable release of 2.0.

### Dependencies

- Upgraded to `stronghold-runtime@2.0.0`

## \[2.0.0-rc.2]

- [`1b46f415`]https://www.github.com/iotaledger/stronghold.rs/commit/1b46f4153ef30f9ca3ea9704c8edefe08ed217b7([#491]https://www.github.com/iotaledger/stronghold.rs/pull/491) Bump `iota-crypto` version to 0.23.

### Dependencies

- Upgraded to `stronghold-runtime@2.0.0-rc.2`

## \[2.0.0-rc.1]

- [`f9619747`]https://www.github.com/iotaledger/stronghold.rs/commit/f96197471cb894e1a5a08caa4e9393703e5b8d1b([#489]https://www.github.com/iotaledger/stronghold.rs/pull/489) Added support for Secp256k1 ECDSA with SHA256/Keccak256 variants.
  Bump `iota-crypto` version to 0.22.1.

### Dependencies

- Upgraded to `stronghold-runtime@2.0.0-rc.1`

## \[2.0.0-rc.0]

- [`12ce12fe`]https://www.github.com/iotaledger/stronghold.rs/commit/12ce12fe3d28456eabacce6e608e81c3b4e0ec20 Secp256k1 ECDSA + SLIP-10 support added.
  Bump `iota-crypto` version to 0.21.2.
- [`1e72f00f`]https://www.github.com/iotaledger/stronghold.rs/commit/1e72f00fe8e188082e55b39c46986d928817e2dd([#474]https://www.github.com/iotaledger/stronghold.rs/pull/474) Upgraded snapshot format to age-encryption.org/v1 with password-based recipient stanza. This resolves the issue with the previous snapshot format encryption being insecure if used with weak passwords. Snapshot encryption doesn't use associated data.
  Added sensitive data zeroization which would otherwise leak in stack and heap memory in plaintext after use.
  `KeyProvider` unsafe constructors `with_passphrase_truncated`, `with_passphrase_hashed_argon2` were removed, `with_passphrase_hashed` constructor should be used instead.
- [`988a9d1f`]https://www.github.com/iotaledger/stronghold.rs/commit/988a9d1fda6f8f652e014712b4cfff3737e0fb54([#477]https://www.github.com/iotaledger/stronghold.rs/pull/477) Added snapshot encryption work factor public access. It should only be used in tests to decrease snapshot encryption/decryption times. It must not be used in production as low values of work factor might lead to secrets/seeds leakage.

## \[1.1.0]

- Bump `iota-crypto` version to 0.18.0. `Pbkdf2Hmac::count` changed to a `NonZeroU32`.
  - [a860896c]https://www.github.com/iotaledger/stronghold.rs/commit/a860896c56a3ebae2bef9ffb37e3effff074fa79 Bump crypto on 2023-05-03
  - [03ff2dcd]https://www.github.com/iotaledger/stronghold.rs/commit/03ff2dcd59326b923d319b7ee33224091db838b6 better changelog on 2023-05-03
  - [74e564d2]https://www.github.com/iotaledger/stronghold.rs/commit/74e564d2d76624e267d85c02ac3a6eca1bc1af32 even more betterer changelog on 2023-05-03
  - [6d32ae45]https://www.github.com/iotaledger/stronghold.rs/commit/6d32ae4549c02989b6d68b15f8536bb8374c40a4 remove native on 2023-05-03

## \[1.0.2]

- Disable frag module for android and ios targets.
  - [0a2331a9]https://www.github.com/iotaledger/stronghold.rs/commit/0a2331a906493c3466f029155601aa0cda8f363d Fix clippy and add covector changefile on 2022-11-14
  - [21fbdc68]https://www.github.com/iotaledger/stronghold.rs/commit/21fbdc68dbee1e803be1ed214e0e1f98ebffe711 Add changefiles on 2022-11-15
  - [4561e4a9]https://www.github.com/iotaledger/stronghold.rs/commit/4561e4a93e2c7119e5da04c1eb5b505303bb3114 Merge changefiles on 2022-11-15

## \[1.0.1]

- update version of zeroize
  - [5eba6e8c]https://www.github.com/iotaledger/stronghold.rs/commit/5eba6e8cc77caeb30e1259c90518a03226212877 update zeroize on 2022-10-19

## \[1.0.0]

- update to Stronghold 1.0
  - [f5a0cfdf]https://www.github.com/iotaledger/stronghold.rs/commit/f5a0cfdfc7c9a127cf92256b7782bbcae3d406b6 update bindings to Stronghold 1.0 on 2022-10-18
  - [a47c3cf3]https://www.github.com/iotaledger/stronghold.rs/commit/a47c3cf3c64d8aa6ee307e3b68069c259d5ea427 fix changes file on 2022-10-18

## \[0.5.6]

- - Upgrade to crypto.rs 0.15.1
- Downgrade Zeroize to 1.3.0
- Bumped due to a bump in stronghold-runtime.
- [be680479]https://www.github.com/iotaledger/stronghold.rs/commit/be68047942788c047c1ac8a9ef12776a974fee0a dep: upgrade crypto.rs to latest version; downgrade zeroize on 2022-10-18

## \[0.5.5]

- upgrade dev-dependency for criterion
  - [f41e5dd7]https://www.github.com/iotaledger/stronghold.rs/commit/f41e5dd7b56bba30cf5e25ed9475cddef6f8b8e3 version: bump dev dependency of criterion to 0.4.0 on 2022-09-13

## \[0.5.4]

- bump dependency on crypto.rs to latest version
  - [5aee6c28]https://www.github.com/iotaledger/stronghold.rs/commit/5aee6c283a92eeee9f738b421f3c24f9e726ca7f dep: upgrade dependency on crypto.rs on 2022-09-09
  - [1dc143d0]https://www.github.com/iotaledger/stronghold.rs/commit/1dc143d0e0373bd43ad21cf76985c0e1ca4989fd feat: remove stronghold-native from version updates on 2022-09-09

## \[0.5.3]

- split random byte string into fixed and variable sized
  - Bumped due to a bump in stronghold-utils.
  - [34af5797]https://www.github.com/iotaledger/stronghold.rs/commit/34af5797df675912d9a78ea6a673b8a535ce1f91 Fix/remove riker from utils ([#252]https://www.github.com/iotaledger/stronghold.rs/pull/252) on 2021-08-27
  - [3816aef5]https://www.github.com/iotaledger/stronghold.rs/commit/3816aef5111684ffbdbd12ed7f93b887e43e7a02 chore(release-doc): clean up outdated release notes, merge existing into one on 2022-05-31
  - [cc655878]https://www.github.com/iotaledger/stronghold.rs/commit/cc6558782928162f70614f6274a2ec87bd1a68d0 fix: utils version on 2022-06-27

## \[0.5.2]

- bump all crate versions to update to new utils modules
  - [29ad7932]https://www.github.com/iotaledger/stronghold.rs/commit/29ad7932550ec558915ec88c7f26408dd2c763e7 version: bump all crates to include updated utils on 2022-06-03
  - [699117f7]https://www.github.com/iotaledger/stronghold.rs/commit/699117f7ea834c043596418f8ff2c502c477bf6b version: bump all crates to include updated utils on 2022-06-03
  - [34ada641]https://www.github.com/iotaledger/stronghold.rs/commit/34ada641a6ac987e9c17d8d71581a5083bd61911 fix: covector fixx crate name on 2022-06-03
  - [092ce898]https://www.github.com/iotaledger/stronghold.rs/commit/092ce898a31440e4d5740f40952fbf711da8ce02 fix: covector fixx crate name on 2022-06-03
  - [f01e99e3]https://www.github.com/iotaledger/stronghold.rs/commit/f01e99e319f286f2b094ee9efe88cf44a638fa45 version: reset to former versions on 2022-06-03
  - [b441e6f4]https://www.github.com/iotaledger/stronghold.rs/commit/b441e6f476571f067cdddd93c9ae8370d59733ba fix: versions on 2022-06-03

## \[0.5.2]

- bump all crate versions to update to new utils crate
  - [29ad7932]https://www.github.com/iotaledger/stronghold.rs/commit/29ad7932550ec558915ec88c7f26408dd2c763e7 version: bump all crates to include updated utils on 2022-06-03
  - [699117f7]https://www.github.com/iotaledger/stronghold.rs/commit/699117f7ea834c043596418f8ff2c502c477bf6b version: bump all crates to include updated utils on 2022-06-03
  - [34ada641]https://www.github.com/iotaledger/stronghold.rs/commit/34ada641a6ac987e9c17d8d71581a5083bd61911 fix: covector fixx crate name on 2022-06-03
  - [092ce898]https://www.github.com/iotaledger/stronghold.rs/commit/092ce898a31440e4d5740f40952fbf711da8ce02 fix: covector fixx crate name on 2022-06-03

## \[0.5.2]

- bump version
  - Bumped due to a bump in stronghold-utils.
  - [8548949b]https://www.github.com/iotaledger/stronghold.rs/commit/8548949b691ed85ec9140f28fc7eff11126916b3 version: bump utils on 2022-06-02
  - [96d895ae]https://www.github.com/iotaledger/stronghold.rs/commit/96d895aea09504d146176dd5b878e6144a01f1ae apply version updates on 2022-06-02
  - [f5e8a7a8]https://www.github.com/iotaledger/stronghold.rs/commit/f5e8a7a80fc9e7b16a8974f2905fe1cfb4d645f2 version: fix utils version; enable bump on 2022-06-02
  - [c3757950]https://www.github.com/iotaledger/stronghold.rs/commit/c3757950fc1cd3b16167512584bfe89c5c50ffa6 apply version updates on 2022-06-02
  - [a6524545]https://www.github.com/iotaledger/stronghold.rs/commit/a6524545088fbf02ac013e47a80c0bf3e987c481 version: reset all versions; bump utils on 2022-06-02

## \[0.5.3]

- bump version
  - Bumped due to a bump in stronghold-utils.
  - [8548949b]https://www.github.com/iotaledger/stronghold.rs/commit/8548949b691ed85ec9140f28fc7eff11126916b3 version: bump utils on 2022-06-02
  - [96d895ae]https://www.github.com/iotaledger/stronghold.rs/commit/96d895aea09504d146176dd5b878e6144a01f1ae apply version updates on 2022-06-02
  - [f5e8a7a8]https://www.github.com/iotaledger/stronghold.rs/commit/f5e8a7a80fc9e7b16a8974f2905fe1cfb4d645f2 version: fix utils version; enable bump on 2022-06-02

## \[0.5.2]

- bump
  - Bumped due to a bump in stronghold-utils.
  - [8548949b]https://www.github.com/iotaledger/stronghold.rs/commit/8548949b691ed85ec9140f28fc7eff11126916b3 version: bump utils on 2022-06-02

## \[0.5.1]

- Bump
  - Bumped due to a bump in stronghold-runtime.
  - [6f1c160a]https://www.github.com/iotaledger/stronghold.rs/commit/6f1c160a3182f136868406bdca99022efd45dd67 Fix versions for covector on 2022-06-01

## \[0.5.0]

- - Refactor Sink and Stream implementation for EventChannel
- Add `CopyRecord` procedure.
- In the `StrongholdP2p` Interface enable / disable mdns and relay functionality on init via config flags in the `StrongholdP2pBuilder`. Per default, both are enabled.
- In the `Stronghold` client interface enable / disable mdns and relay in the `NetworkConfig` when spawning a new p2p-network actor. Per default, both are disabled.
- Use `libp2p::swarm::toggle` to enable/ disable relay and mdns
- Persist config and keypair of stronghold-p2p in client
- Implement messages to write the keypair used for `StrongholdP2p` in the vault and derive the `PeerId` and a new noise `AuthenticKeypair` from it.
- Implement API for the Stronghold Procedures
- Make stronghold interface clonable
- Update inline Docs and README files to reflect the current state of the project.
- Add communication fuzzer for distributed fuzzing with docker.
- Patch Stronghold engine fuzzer.
- Patch crypto.rs version v0.7 -> v0.8.
- Persist the state of stronghold-p2p in the `SecureClient` by serializing the `NetworkConfig` and writing it to the store.
- Allow loading stored states into the `NetworkActor` on init.
- Allow reuse of same `Keypair` that is stored in the vault.
- Software transactional memory framework as replacement for actix actor system
- Integration is runtime agnostic an can be used by any async runtime for rust, tkio is encouraged though
- Extract `random` functions from `test_utils` into own module.
- Remove Riker as dependency from utils.
- Introduce KeyProvider instead of repeatedly providing a passphrase.
- Introduce non-contiguous memory types for secure key handling.
- Abstract over locked and encrypted data types for use internally.
- Stronghold interface rewrite to work on type level with Stronghold as root type, Client as secure container, Store as insecure storage and ClientVault as vault access.
- [3816aef5]https://www.github.com/iotaledger/stronghold.rs/commit/3816aef5111684ffbdbd12ed7f93b887e43e7a02 chore(release-doc): clean up outdated release notes, merge existing into one on 2022-05-31

## \[0.4.0]

- Merged Store, Vault and Snapshot into a single crate called Stronghold-Engine.
  Merged utils-derive and communication-macros into a new crate called stronghold-derive
  Export Stronghold-derive through Stronghold-utils.
  - [36c8983]https://www.github.com/iotaledger/stronghold.rs/commit/36c8983eefd594c702a9e8b32bad25354ad127c0 merge derive/macro crates. on 2021-04-21
  - [b7d44f5]https://www.github.com/iotaledger/stronghold.rs/commit/b7d44f530e08be27128f25f46b4bb05cf3da99bd update config. on 2021-04-21

## \[0.3.1]

- Updated cargo.toml files with the updated crypto.rs revisions and authors.
  Fixed logic in snapshot and providers to use the `try_*` encryption and decryption functions.
  Fixed commandline and stopped it from overwriting snapshots.
  - Bumped due to a bump in snapshot.
  - [64e08fe]https://www.github.com/iotaledger/stronghold.rs/commit/64e08fe39454d2191561783d009b155c91db37c1 add .changes. on 2021-03-19
  - [0758b67]https://www.github.com/iotaledger/stronghold.rs/commit/0758b6734a1e22d491345a6b894acea12ab5b1b7 add .changes. on 2021-03-19
- Remove old logic from client and vault.
  Added clear cache logic and message to stop the client actor.
  Removed Client Derive Data hashmap.
  - [81892aa]https://www.github.com/iotaledger/stronghold.rs/commit/81892aa704b920c50de2517e8073943d8bf0c2b9 add md file. on 2021-04-20
- move stronghold-utils and add utils-derive for proc macros.
  rebuild vault and remove versioning.
  update client to use new vault.
  - [5490f0a]https://www.github.com/iotaledger/stronghold.rs/commit/5490f0aaaf58e5322a5569c02669514ec067b02f refactor vault ([#181]https://www.github.com/iotaledger/stronghold.rs/pull/181) on 2021-04-15

## \[0.3.0]

- Added zeroing allocator to the runtime.\
  Placed zeroing allocator in the vualt.
  - Bumped due to a bump in vault.
  - [a960e50]https://www.github.com/iotaledger/stronghold.rs/commit/a960e50a591e82e74df12093513a136594a5f8e6 add changes. on 2021-03-12
- Add documentation and cleanup the code for these crates and modules in preparation for beta.
  - Bumped due to a bump in vault.
  - [dae0457]https://www.github.com/iotaledger/stronghold.rs/commit/dae04579cb20ad69a7aecdf102fb66ecac4aaf46 Beta Cleanup ([#166]https://www.github.com/iotaledger/stronghold.rs/pull/166) on 2021-03-19
- Refactor the communication actor, enable using a relay peer, and integrate communication as feature into the stronghold interface.
  Remove unecessary Option/ Result wraps in `random` and `iota-stronghold`.
  Rename stronghold-test-utils to stronghold-utils and added riker ask pattern to it.
  - Bumped due to a bump in vault.
  - [9c7cba6]https://www.github.com/iotaledger/stronghold.rs/commit/9c7cba624e2a99f04a2d033b8673f8a4b8735f0b Feat/integrate comms ([#130]https://www.github.com/iotaledger/stronghold.rs/pull/130) on 2021-02-26
  - [fcb62bb]https://www.github.com/iotaledger/stronghold.rs/commit/fcb62bbf966bfcd543b13a79d73839a3fee0219e fix/covector-2 ([#163]https://www.github.com/iotaledger/stronghold.rs/pull/163) on 2021-03-12
- Address two new clippy warnings: `needless_lifetimes` (addressed in the vault)
  and `unnecessary_cast` (ignored in the runtime since they are necessary for
  portability: `0 as libc::c_char` is not necessarily the same as `0_u8`).
  - Bumped due to a bump in vault.
  - [1614243]https://www.github.com/iotaledger/stronghold.rs/commit/161424322af84bd4626aac5a3f96b0c529d7b39a Add a changelog message on 2021-01-04
  - [42ed9d6]https://www.github.com/iotaledger/stronghold.rs/commit/42ed9d6b5fe93f7cf7ecb1b9591bd10de9c35e58 fix(covector) ([#162]https://www.github.com/iotaledger/stronghold.rs/pull/162) on 2021-03-12
- Remove Crypto, Random and Primitives libraries in favor of Crypto.rs
  Moved Runtime into the engine.
  Add new guarded types for Runtime and remove old logic.
- Add documentation and cleanup the code for these crates and modules in preparation for beta.
  - [dae0457]https://www.github.com/iotaledger/stronghold.rs/commit/dae04579cb20ad69a7aecdf102fb66ecac4aaf46 Beta Cleanup ([#166]https://www.github.com/iotaledger/stronghold.rs/pull/166) on 2021-03-19
- Create key:value store for insecure data storage and retrieval.
  - [0ba3398]https://www.github.com/iotaledger/stronghold.rs/commit/0ba3398987dcbb168e210bc4b2b6e295e5a020c6 chore(covector): add store config & changelog on 2021-01-05
- Blake2b hashing revision to use new upstream digest approach.
  - [04cc457]https://www.github.com/iotaledger/stronghold.rs/commit/04cc457497fc594a4453c86e23c999731efcb174 fix(snapshot): blake2b ([#153]https://www.github.com/iotaledger/stronghold.rs/pull/153) on 2021-02-25
- Change the snapshot format to use an ephemeral X25519 private key and a key
  exchange with the users snapshot key to generate the key used in the XChaCha20
  cipher. This in order to mitigate offline attacks in the scenario that the
  cipher is compromised in such a way to reveal the key.
  - [6fca456]https://www.github.com/iotaledger/stronghold.rs/commit/6fca456a80993a99f38949f1cd3137a4a265a2e6 Use X25519 in the snapshot format ([#123]https://www.github.com/iotaledger/stronghold.rs/pull/123) on 2021-02-08

## Features:

- Causes segfault upon access without borrow
- Protects using mprotect
- Adds guard pages proceeding and following the allocated memory.
- Adds a canary pointer to detect underflows.
- Locks memory with mlock.
- Frees memory using munlock
- Memory is zeroed when no longer in use through sodium_free
- Can be compared in constant time
- Can not be printed using debug
- Can not be cloned using the Clone trait.

Implement guarded types in Vault to protect the data and the keys.
Clean up logic inside of the Client library.

- Bumped due to a bump in vault.
- [dd65b67]https://www.github.com/iotaledger/stronghold.rs/commit/dd65b67f42718150c7c7dbab9606ee2167cf11ce add changes. on 2021-03-11
- [829ecac]https://www.github.com/iotaledger/stronghold.rs/commit/829ecac2e8090d478706c673cd45f1b91a60b2de fix(covector) ([#164]https://www.github.com/iotaledger/stronghold.rs/pull/164) on 2021-03-12

## \[0.2.0]

- Alpha release of Stronghold: "Saint-Malo"
  - [4b6f4af]https://www.github.com/iotaledger/stronghold.rs/commit/4b6f4af29f6c21044f5063ec4a8d8aff643f81a7 chore(release) ([#105]https://www.github.com/iotaledger/stronghold.rs/pull/105) on 2020-12-24
  - [06c6d51]https://www.github.com/iotaledger/stronghold.rs/commit/06c6d513dfcd1ba8ed6379177790ec6db28a6fea fix(changelog): Alpha Release ([#106]https://www.github.com/iotaledger/stronghold.rs/pull/106) on 2020-12-24
- Added the initial client logic and integrated it with the Riker actor model. Change includes a Client/Cache actor, a Bucket actor, a Snapshot actor, and a keystore actor.  All of the Stronghold APIs are available.
  - [7c7320a]https://www.github.com/iotaledger/stronghold.rs/commit/7c7320ab0bc71749510a590f418c9bd70329dc02 add client changelog. on 2020-11-30
  - [4986685]https://www.github.com/iotaledger/stronghold.rs/commit/49866854f32dde8589f37c6d9ea0c2e7ddb3c461 remove todos and update readme. on 2020-11-30
  - [7f1e9ed]https://www.github.com/iotaledger/stronghold.rs/commit/7f1e9edf5f5c5e148376575057a55d1d1398708a Chore/covector fix ([#61]https://www.github.com/iotaledger/stronghold.rs/pull/61) on 2020-12-01
  - [f882754]https://www.github.com/iotaledger/stronghold.rs/commit/f88275451e7d3c140bbfd1c90a9267aa222fb6d0 fix(client): readme and changelog ([#64]https://www.github.com/iotaledger/stronghold.rs/pull/64) on 2020-12-01
- Alpha release of Stronghold: "Saint-Malo"
  - [4b6f4af]https://www.github.com/iotaledger/stronghold.rs/commit/4b6f4af29f6c21044f5063ec4a8d8aff643f81a7 chore(release) ([#105]https://www.github.com/iotaledger/stronghold.rs/pull/105) on 2020-12-24
  - [06c6d51]https://www.github.com/iotaledger/stronghold.rs/commit/06c6d513dfcd1ba8ed6379177790ec6db28a6fea fix(changelog): Alpha Release ([#106]https://www.github.com/iotaledger/stronghold.rs/pull/106) on 2020-12-24