use cdx_core::{Document, Result};
#[cfg(feature = "signatures")]
use cdx_core::security::{EcdsaSigner, Signer, SignerInfo};
fn main() -> Result<()> {
let document = Document::builder()
.title("Document to Sign")
.creator("Signing Example")
.add_heading(1, "Important Content")
.add_paragraph("This document will be digitally signed.")
.build()?;
println!("Created document");
println!("State: {:?}", document.state());
let doc_id = document.compute_id()?;
println!("Document ID: {doc_id}");
#[cfg(feature = "signatures")]
{
let signer_info = SignerInfo::new("Example Signer")
.with_email("signer@example.com")
.with_organization("Example Corp");
let (signer, public_key_pem) = EcdsaSigner::generate(signer_info)?;
println!("\nGenerated new signing key");
println!("Public key:\n{public_key_pem}");
let signature = signer.sign(&doc_id)?;
println!("\nDocument signed!");
println!("Signature ID: {}", signature.id);
println!("Algorithm: {}", signature.algorithm);
println!("Signed at: {}", signature.signed_at);
println!("Signer: {}", signature.signer.name);
}
#[cfg(not(feature = "signatures"))]
{
println!("\nNote: Enable the 'signatures' feature to see signing in action:");
println!(" cargo run --example sign_document --features signatures");
}
Ok(())
}