pub use auths_crypto::SecureSeed;
use auths_crypto::{Pkcs8Der, build_ed25519_pkcs8_v2};
use ssh_key::private::Ed25519Keypair as SshEd25519Keypair;
use super::CryptoError;
pub fn extract_seed_from_pkcs8(pkcs8: &Pkcs8Der) -> Result<SecureSeed, CryptoError> {
let parsed = auths_crypto::parse_key_material(pkcs8.as_ref()).map_err(CryptoError::from)?;
Ok(parsed.seed.to_secure_seed())
}
pub fn build_ed25519_pkcs8_v2_from_seed(seed: &SecureSeed) -> Result<Pkcs8Der, CryptoError> {
let ssh_kp = SshEd25519Keypair::from_seed(seed.as_bytes());
let pubkey: [u8; 32] = ssh_kp.public.0;
let pkcs8 = build_ed25519_pkcs8_v2(seed.as_bytes(), &pubkey);
Ok(Pkcs8Der::new(pkcs8))
}
pub fn extract_pubkey_from_key_bytes(key_bytes: &[u8]) -> Result<Vec<u8>, CryptoError> {
let parsed = auths_crypto::parse_key_material(key_bytes).map_err(CryptoError::from)?;
Ok(parsed.public_key)
}