strat9_kernel/shell/commands/sys/
crypto.rs1use super::*;
2
3pub fn cmd_crypto(args: &[String]) -> Result<(), ShellError> {
8 if args.is_empty() {
9 shell_println!("Usage: crypto <keys|info>");
10 shell_println!(" crypto keys - list trusted signing keys");
11 shell_println!(" crypto info - show crypto subsystem status");
12 return Err(ShellError::InvalidArguments);
13 }
14
15 match args[0].as_str() {
16 "keys" => cmd_crypto_keys(),
17 "info" => cmd_crypto_info(),
18 _ => {
19 shell_println!("Usage: crypto <keys|info>");
20 Err(ShellError::InvalidArguments)
21 }
22 }
23}
24
25fn cmd_crypto_keys() -> Result<(), ShellError> {
27 let count = crate::crypto::trusted_key_count();
28 shell_println!("Trusted signing keys: {}", count);
29 shell_println!("");
30
31 if count == 0 {
32 shell_println!(" (no keys registered)");
33 return Ok(());
34 }
35
36 shell_println!(
37 " {:<12} {:<40} {}",
38 "Key ID",
39 "Public Key (first 8 bytes)",
40 "Label"
41 );
42 shell_println!(
43 " {:<12} {:<40} {}",
44 "------",
45 "---------------------------",
46 "-----"
47 );
48
49 if crate::crypto::is_key_trusted(b"STRAT9D1") {
51 shell_println!(
52 " {:<12} {:<40} {}",
53 "STRAT9D1",
54 "d75a980182b10c73...",
55 "strat9-dev"
56 );
57 }
58
59 Ok(())
60}
61
62fn cmd_crypto_info() -> Result<(), ShellError> {
64 shell_println!("Crypto Subsystem");
65 shell_println!(" Algorithm: Ed25519 (EC25519)");
66 shell_println!(" Hash: SHA-512 (internal to Ed25519)");
67 shell_println!(
68 " Key Store: {} trusted key(s)",
69 crate::crypto::trusted_key_count()
70 );
71 shell_println!(" Verification: Ed25519 signature verification");
72 shell_println!(" Module Format: CMOD with Ed25519 signatures");
73 shell_println!("");
74 shell_println!(" Module signing workflow:");
75 shell_println!(
76 " 1. Generate keypair: ed25519-keygen > key.priv && ed25519-keygen -x > key.pub"
77 );
78 shell_println!(" 2. Sign module: openssl pkeyutl -sign -inkey key.priv -in module.cmod -out sig.bin");
79 shell_println!(" 3. Embed signature: Place signature in CMOD header (offset 91)");
80 shell_println!(" 4. Register key: Add public key to kernel trusted key store");
81 Ok(())
82}