| Crates.io | parco-ws-security |
| lib.rs | parco-ws-security |
| version | 0.2.1 |
| created_at | 2026-01-12 20:16:54.139565+00 |
| updated_at | 2026-01-18 19:30:45.406607+00 |
| description | Parco Web Services Security |
| homepage | https://github.com/williamcparks/parco-ws-security |
| repository | https://github.com/williamcparks/parco-ws-security |
| max_upload_size | |
| id | 2038768 |
| size | 42,737 |
This Rust library provides utilities for constructing WS-Security headers with XML signatures, timestamps, and X.509 certificate support, suitable for SOAP messages.
The library allows you to:
[✅] - "cms-sign" adds support for Crypto Message Syntax via Sha256 Digest + Rsa Signature
use parco_ws_security::{
Security,
crypto::{
rsa::{
RsaPrivateKey, pkcs8::DecodePrivateKey
},
sha1::Sha1
}
};
const PRIVATE_KEY_PEM: &str = include_str!("YOUR_PRIVATE_KEY.pem");
const CERTIFICATE_BASE64: &str = include_str!("CERT_BASE64.txt");
/// if you're key is pkcs8 use this else refer to [`rsa`] documentation for parsing your key
let private_key = RsaPrivateKey::from_pkcs8_pem(PRIVATE_KEY_PEM).unwrap();
let security_header = Security::new_with_private_key(CERTIFICATE_BASE64, private_key);
The "cms-sign" feature enables
use parco_ws_security::crypto::{CmsSign, chrono::Utc, rsa::{RsaPrivateKey, pkcs8::DecodePrivateKey}};
let cert_pem = include_str!("CERT_PEM");
let private_key_pem = include_str!("PKEY_PEM");
let rsa_private_key = RsaPrivateKey::from_pkcs8_pem(private_key_pem).unwrap();
let cms_sign = CmsSign::try_new(cert_pem, rsa_private_key).unwrap();
let timestamp = Utc::now().to_rfc3339_opts(SecondsFormat::Millis, true);
println!(
"{}",
cms_sign.try_sign_base64(timestamp.as_bytes()).unwrap()
);