parco_ws_security/
sign.rs1use base64::Engine;
2use parco_xml::Xml;
3use rsa::{
4 RsaPrivateKey,
5 pkcs1v15::SigningKey,
6 signature::{SignatureEncoding, Signer},
7};
8use sha1::Sha1;
9
10use crate::SignedInfo;
11
12impl SignedInfo {
13 pub fn sign_with_private_key(&self, private_key: RsaPrivateKey) -> String {
15 let signing_key = SigningKey::<Sha1>::new(private_key);
16 self.sign_with_signing_key(&signing_key)
17 }
18
19 pub fn sign_with_signing_key(&self, signing_key: &SigningKey<Sha1>) -> String {
21 let xml = self.xml();
22 let signature_bytes = signing_key.sign(xml.as_bytes());
23
24 base64::engine::general_purpose::STANDARD.encode(signature_bytes.to_bytes())
25 }
26}