newton-core 0.4.16

newton protocol core sdk
//! Key management utilities for Newton Prover AVS
//!
//! This crate provides utilities for generating, storing, and loading
//! ECDSA and BLS keys used by the Newton Prover AVS system.

pub mod bls;
pub mod ecdsa;
pub mod error;
#[cfg(feature = "config")]
pub mod storage;

#[cfg(all(feature = "config", feature = "signing"))]
use crate::{
    config::key::{BlsKey, EcdsaKey},
    keys::{
        bls::{load_bls_key_from_keystore, load_operator_bls_key},
        ecdsa::{load_ecdsa_key_from_keystore, load_operator_ecdsa_key},
        error::KeyResult,
        storage::{ensure_keys_directory, get_bls_key_path, get_ecdsa_key_path},
    },
};
#[cfg(feature = "signing")]
use alloy_signer_local::PrivateKeySigner;
#[cfg(feature = "eigen")]
use newton_crypto_bls::BlsKeyPair;

/// Load an ECDSA key from ECDSAKey config
#[cfg(all(feature = "config", feature = "signing"))]
pub fn load_ecdsa(ecdsa_key: &EcdsaKey) -> KeyResult<PrivateKeySigner> {
    if let Some(private_key) = ecdsa_key.private_key.as_ref() {
        load_operator_ecdsa_key(private_key)
    } else {
        load_ecdsa_key_from_keystore(
            ecdsa_key.keystore_path.as_ref().unwrap(),
            ecdsa_key.keystore_password.as_ref().unwrap(),
        )
    }
}

/// Load a BLS key from BlsKey config
#[cfg(all(feature = "config", feature = "eigen"))]
pub fn load_bls(bls_key: &BlsKey) -> KeyResult<BlsKeyPair> {
    if let Some(private_key) = bls_key.private_key.as_ref() {
        load_operator_bls_key(private_key)
    } else {
        load_bls_key_from_keystore(
            bls_key.keystore_path.as_ref().unwrap(),
            bls_key.keystore_password.as_ref().unwrap(),
        )
    }
}