MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / run

Method run

atomic-cli/src/commands/identity/verify.rs:36–69  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

34
35impl Command for Verify {
36 fn run(&self) -> CliResult<()> {
37 let sig_bytes = BASE64.decode(self.signature.as_bytes()).map_err(|e| {
38 CliError::Internal(anyhow::anyhow!("Invalid signature encoding: {}", e))
39 })?;
40
41 if sig_bytes.len() != 64 {
42 return Err(CliError::Internal(anyhow::anyhow!(
43 "Invalid signature: expected 64 bytes, got {}",
44 sig_bytes.len()
45 )));
46 }
47
48 let mut sig_arr = [0u8; 64];
49 sig_arr.copy_from_slice(&sig_bytes);
50
51 let public_key = PublicKey::from_base32(&self.public_key)
52 .map_err(|e| CliError::Internal(anyhow::anyhow!("Invalid public key: {}", e)))?;
53
54 let mut data = Vec::new();
55 std::io::stdin()
56 .read_to_end(&mut data)
57 .map_err(|e| CliError::Internal(anyhow::anyhow!("Failed to read stdin: {}", e)))?;
58
59 match public_key.verify(&data, &sig_arr) {
60 Ok(()) => {
61 eprintln!("Signature valid");
62 std::process::exit(0);
63 }
64 Err(_) => {
65 eprintln!("Signature invalid");
66 std::process::exit(1);
67 }
68 }
69 }
70}

Callers

nothing calls this directly

Calls 4

decodeMethod · 0.80
as_bytesMethod · 0.45
lenMethod · 0.45
verifyMethod · 0.45

Tested by

no test coverage detected