Skip to main content

polymorph_webcrypto_guest/
ed25519.rs

1//! `ed25519-verify` / `ed25519-sign` key creation.
2
3use crate::{bindings, Error, SigningKey, SigningKeyOptions, VerifyingKey};
4
5/// Import a 32-byte raw public key.
6pub async fn import_verifying_key_raw(raw: impl Into<Vec<u8>>) -> Result<VerifyingKey, Error> {
7    Ok(VerifyingKey::from_raw(
8        bindings::ed25519_verify::import_verifying_key_raw(raw.into()).await?,
9    ))
10}
11
12/// Generate a fresh random signing key, returning both halves.
13pub async fn generate_key(options: SigningKeyOptions) -> Result<(SigningKey, VerifyingKey), Error> {
14    let (signing, verifying) = bindings::ed25519_sign::generate_key(options.lower()).await?;
15    Ok((
16        SigningKey::from_raw(signing),
17        VerifyingKey::from_raw(verifying),
18    ))
19}