feat: v0.1.2

This commit is contained in:
2025-05-24 10:55:45 +08:00
parent 5e97b23bdf
commit 927350c4b1
2 changed files with 34 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "external-command-rs" name = "external-command-rs"
version = "0.1.1" version = "0.1.2"
edition = "2024" edition = "2024"
authors = ["Hatter Jiang"] authors = ["Hatter Jiang"]
repository = "https://git.hatter.ink/hatter/external-command-rs" repository = "https://git.hatter.ink/hatter/external-command-rs"

View File

@@ -1,7 +1,7 @@
use base64::engine::general_purpose::STANDARD;
use base64::Engine; use base64::Engine;
use rust_util::{debugging, opt_result, simple_error, XResult}; use base64::engine::general_purpose::STANDARD;
use serde::{de, Deserialize, Serialize}; use rust_util::{XResult, debugging, opt_result, simple_error};
use serde::{Deserialize, Serialize, de};
use serde_json::Value; use serde_json::Value;
use std::process::{Command, Output}; use std::process::{Command, Output};
@@ -37,6 +37,36 @@ struct ExternalDhResult {
pub shared_secret_hex: String, 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<ExternalSpecResult> {
external_spec(&self.external_command)
}
pub fn public_key(&self) -> XResult<Vec<u8>> {
external_public_key(&self.external_command, &self.parameter)
}
pub fn sign(&self, alg: &str, content: &[u8]) -> XResult<Vec<u8>> {
external_sign(&self.external_command, &self.parameter, alg, content)
}
pub fn ecdh(&self, ephemera_public_key: &[u8]) -> XResult<Vec<u8>> {
external_ecdh(&self.external_command, &self.parameter, ephemera_public_key)
}
}
pub fn external_spec(external_command: &str) -> XResult<ExternalSpecResult> { pub fn external_spec(external_command: &str) -> XResult<ExternalSpecResult> {
let mut cmd = Command::new(external_command); let mut cmd = Command::new(external_command);
cmd.arg("external_spec"); cmd.arg("external_spec");