Skip to content

feat(cli): add native xmlsec1 command surface #112

Description

@polaz

Problem

The library exposes XMLDSig and XMLEnc pipelines, but cannot be used as a drop-in command-line replacement by existing libxmlsec1 automation. Upstream test scripts currently require the C xmlsec1 executable or a translation layer, so command compatibility and end-to-end coverage are not measured against the Rust implementation.

Scope

  • Add a native xmlsec1-compatible Rust binary for signing, verification, encryption, decryption, key handling, and capability queries.
  • Preserve the upstream command aliases, option syntax, output routing, and process exit-status contract for the implemented surface.
  • Drive operations through the existing provider, policy, XMLDSig, and XMLEnc APIs without a second cryptographic implementation or implicit resource access.
  • Advertise only capabilities that complete end-to-end; unsupported formats and algorithms must fail capability checks cleanly.
  • Run the unmodified upstream testDSig.sh, testEnc.sh, and testKeys.sh scripts against the Rust binary without a Python translation layer.
  • Reconcile command, option, status, transform, and key-data results with the compatibility ledger.
  • Document installation, supported CLI behavior, limitations, and representative usage.

Acceptance criteria

  • Sign/verify and encrypt/decrypt round trips work through the process interface.
  • Wrong keys, tampered data, malformed XML, invalid options, unsupported capabilities, and output failures return deterministic non-zero statuses.
  • Capability queries and runtime behavior are sourced from the same registry and cannot contradict each other.
  • Unit, process integration, donor interoperability, doctest, clippy, and all-feature workspace checks pass.

Validation

  • cargo nextest run --workspace --all-features
  • cargo test --workspace --all-features --doc
  • cargo check --workspace --all-targets --all-features
  • cargo clippy --workspace --all-targets --all-features -- -D warnings

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions