Remove co-dependencies for different modules found in `crates` and migrate the development history to a new repository. The docs were stale, and largely not getting used, so simply deleted for now. When code stabilizes more, they will become useful again. Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
41 lines
1.1 KiB
Rust
41 lines
1.1 KiB
Rust
#![no_std]
|
|
|
|
use core::ptr::addr_of_mut;
|
|
use ed25519_dalek::{SigningKey, Signer};
|
|
|
|
static mut BUF: [u8; 8192] = [0u8; 8192];
|
|
|
|
#[no_mangle]
|
|
pub extern "C" fn buffer_ptr() -> *const u8 {
|
|
addr_of_mut!(BUF).cast()
|
|
}
|
|
|
|
/// Read seed from BUF[0..32], write public key to BUF[32..64]
|
|
#[no_mangle]
|
|
pub extern "C" fn get_public_key() {
|
|
unsafe {
|
|
let buf = &mut *addr_of_mut!(BUF);
|
|
let seed: [u8; 32] = buf[0..32].try_into().unwrap_unchecked();
|
|
let sk = SigningKey::from_bytes(&seed);
|
|
buf[32..64].copy_from_slice(sk.verifying_key().as_bytes());
|
|
}
|
|
}
|
|
|
|
/// Read seed from BUF[0..32], message from BUF[128..128+msg_len].
|
|
/// Write 64-byte signature to BUF[64..128].
|
|
#[no_mangle]
|
|
pub extern "C" fn ed25519_sign(msg_len: usize) {
|
|
unsafe {
|
|
let buf = &mut *addr_of_mut!(BUF);
|
|
let seed: [u8; 32] = buf[0..32].try_into().unwrap_unchecked();
|
|
let msg = &buf[128..128 + msg_len];
|
|
let sk = SigningKey::from_bytes(&seed);
|
|
let sig = sk.sign(msg);
|
|
buf[64..128].copy_from_slice(&sig.to_bytes());
|
|
}
|
|
}
|
|
|
|
#[panic_handler]
|
|
fn panic(_: &core::panic::PanicInfo) -> ! {
|
|
core::arch::wasm32::unreachable()
|
|
}
|