From 927350c4b101b01e8dd240ffbc3ff31e65ad4b5d Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sat, 24 May 2025 10:55:45 +0800 Subject: [PATCH] feat: v0.1.2 --- Cargo.toml | 2 +- src/lib.rs | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2685adb..6400277 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "external-command-rs" -version = "0.1.1" +version = "0.1.2" edition = "2024" authors = ["Hatter Jiang"] repository = "https://git.hatter.ink/hatter/external-command-rs" diff --git a/src/lib.rs b/src/lib.rs index efb094e..d32934d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,7 @@ -use base64::engine::general_purpose::STANDARD; use base64::Engine; -use rust_util::{debugging, opt_result, simple_error, XResult}; -use serde::{de, Deserialize, Serialize}; +use base64::engine::general_purpose::STANDARD; +use rust_util::{XResult, debugging, opt_result, simple_error}; +use serde::{Deserialize, Serialize, de}; use serde_json::Value; use std::process::{Command, Output}; @@ -37,6 +37,36 @@ struct ExternalDhResult { pub shared_secret_hex: String, } +pub struct ExternalCommand { + pub external_command: String, + pub parameter: String, +} + +impl ExternalCommand { + pub fn new(external_command: String, parameter: String) -> ExternalCommand { + ExternalCommand { + external_command, + parameter, + } + } + + pub fn spec(&self) -> XResult { + external_spec(&self.external_command) + } + + pub fn public_key(&self) -> XResult> { + external_public_key(&self.external_command, &self.parameter) + } + + pub fn sign(&self, alg: &str, content: &[u8]) -> XResult> { + external_sign(&self.external_command, &self.parameter, alg, content) + } + + pub fn ecdh(&self, ephemera_public_key: &[u8]) -> XResult> { + external_ecdh(&self.external_command, &self.parameter, ephemera_public_key) + } +} + pub fn external_spec(external_command: &str) -> XResult { let mut cmd = Command::new(external_command); cmd.arg("external_spec");