diff --git a/.gitignore b/.gitignore index cef3e4a..641f87d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ target Cargo.lock .DS_Store -sphinx-key/Cargo.lock \ No newline at end of file +sphinx-key/Cargo.lock +notes.md \ No newline at end of file diff --git a/README.md b/README.md index 5387f8a..c6cb728 100644 --- a/README.md +++ b/README.md @@ -46,3 +46,15 @@ espmonitor /dev/tty.usbserial-1420 espflash target/riscv32imc-esp-espidf/debug/clear espmonitor /dev/tty.usbserial-1420 + +### cargo generate esp-rs + +cargo generate --git https://github.com/esp-rs/esp-idf-template cargo + +std support: true + +v4.4 + +esp32c3 + +nightly \ No newline at end of file diff --git a/build.md b/build.md new file mode 100644 index 0000000..e830143 --- /dev/null +++ b/build.md @@ -0,0 +1,28 @@ + +install the gcc risv toolchain on macos: + +https://github.com/riscv-collab/riscv-gnu-toolchain + +``` +git clone --recursive https://github.com/riscv/riscv-gnu-toolchain + +cd riscv-gnu-toolchain + +./configure --prefix=/opt/riscv + +sudo make + +export PATH=$PATH:/opt/riscv/bin + +(add that line above to your ~/.bash_profile to make it stick) +``` + +OR maybe this is better? + +https://github.com/riscv-software-src/homebrew-riscv + +``` +brew tap riscv-software-src/riscv + +brew install riscv-tools +``` diff --git a/signer/.cargo/config.toml b/signer/.cargo/config.toml new file mode 100644 index 0000000..ff90964 --- /dev/null +++ b/signer/.cargo/config.toml @@ -0,0 +1,34 @@ +[build] +# Uncomment the relevant target for your chip here (ESP32, ESP32-S2, ESP32-S3 or ESP32-C3) +#target = "xtensa-esp32-espidf" +#target = "xtensa-esp32s2-espidf" +#target = "xtensa-esp32s3-espidf" +target = "riscv32imc-esp-espidf" + +[target.xtensa-esp32-espidf] +linker = "ldproxy" + +[target.xtensa-esp32s2-espidf] +linker = "ldproxy" + +[target.xtensa-esp32s3-espidf] +linker = "ldproxy" + +[target.riscv32imc-esp-espidf] +linker = "ldproxy" + +# Future - necessary for the experimental "native build" of esp-idf-sys with ESP32C3 +# See also https://github.com/ivmarkov/embuild/issues/16 +rustflags = ["-C", "default-linker-libraries"] + +[unstable] + +build-std = ["std", "panic_abort"] +#build-std-features = ["panic_immediate_abort"] # Required for older ESP-IDF versions without a realpath implementation + +[env] +# Note: these variables are not used when using pio builder +# Enables the esp-idf-sys "native" build feature (`cargo build --features native`) to build against ESP-IDF stable (v4.4) +ESP_IDF_VERSION = { value = "branch:release/v4.4" } +# Enables the esp-idf-sys "native" build feature (`cargo build --features native`) to build against ESP-IDF master (mainline) +#ESP_IDF_VERSION = { value = "master" } diff --git a/signer/.gitignore b/signer/.gitignore new file mode 100644 index 0000000..73a638b --- /dev/null +++ b/signer/.gitignore @@ -0,0 +1,4 @@ +/.vscode +/.embuild +/target +/Cargo.lock diff --git a/signer/Cargo.toml b/signer/Cargo.toml index cb5a272..b39dde9 100644 --- a/signer/Cargo.toml +++ b/signer/Cargo.toml @@ -3,4 +3,22 @@ name = "sphinx-key-signer" version = "0.1.0" authors = ["Evan Feenstra "] edition = "2018" -resolver = "2" \ No newline at end of file +resolver = "2" + +[profile.release] +opt-level = "s" + +[profile.dev] +debug = true # Symbols are nice and they don't increase the size on Flash +opt-level = "z" + +[features] +pio = ["esp-idf-sys/pio"] + +[dependencies] +esp-idf-sys = { version = "0.31.5", features = ["binstart"] } +vls-protocol-signer = { path = "../../validating-lightning-signer/vls-protocol-signer", default-features = false, features = ["secp-lowmemory"] } + +[build-dependencies] +embuild = "0.29" +anyhow = "1" diff --git a/signer/build.rs b/signer/build.rs new file mode 100644 index 0000000..4dd5e1f --- /dev/null +++ b/signer/build.rs @@ -0,0 +1,5 @@ +// Necessary because of this issue: https://github.com/rust-lang/cargo/issues/9641 +fn main() -> anyhow::Result<()> { + embuild::build::CfgArgs::output_propagated("ESP_IDF")?; + embuild::build::LinkArgs::output_propagated("ESP_IDF") +} diff --git a/signer/rust-toolchain.toml b/signer/rust-toolchain.toml new file mode 100644 index 0000000..fb33ae1 --- /dev/null +++ b/signer/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] + +channel = "nightly" \ No newline at end of file diff --git a/signer/sdkconfig.defaults b/signer/sdkconfig.defaults new file mode 100644 index 0000000..0ac9af4 --- /dev/null +++ b/signer/sdkconfig.defaults @@ -0,0 +1,10 @@ +# Rust often needs a bit of an extra main task stack size compared to C (the default is 3K) +CONFIG_ESP_MAIN_TASK_STACK_SIZE=7000 + +# Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default). +# This allows to use 1 ms granuality for thread sleeps (10 ms by default). +#CONFIG_FREERTOS_HZ=1000 + +# Workaround for https://github.com/espressif/esp-idf/issues/7631 +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=n diff --git a/signer/src/main.rs b/signer/src/main.rs new file mode 100644 index 0000000..2d3bfaf --- /dev/null +++ b/signer/src/main.rs @@ -0,0 +1,9 @@ +use esp_idf_sys as _; // If using the `binstart` feature of `esp-idf-sys`, always keep this module imported + +fn main() { + // Temporary. Will disappear once ESP-IDF 4.4 is released, but for now it is necessary to call this function once, + // or else some patches to the runtime implemented by esp-idf-sys might not link properly. + esp_idf_sys::link_patches(); + + println!("Hello, world!"); +} diff --git a/signer1/Cargo.toml b/signer1/Cargo.toml new file mode 100644 index 0000000..cb5a272 --- /dev/null +++ b/signer1/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "sphinx-key-signer" +version = "0.1.0" +authors = ["Evan Feenstra "] +edition = "2018" +resolver = "2" \ No newline at end of file diff --git a/signer/src/lib.rs b/signer1/src/lib.rs similarity index 100% rename from signer/src/lib.rs rename to signer1/src/lib.rs