#dicom #layer-protocols #tls

dicom-ul

Types and methods for interacting with the DICOM Upper Layer Protocol

16 releases

0.9.1 Mar 28, 2026
0.9.0 Oct 4, 2025
0.8.2 Jul 27, 2025
0.8.1 Jan 16, 2025
0.1.0 May 24, 2020

#1374 in Network programming

Download history 5671/week @ 2025-12-18 4741/week @ 2025-12-25 7082/week @ 2026-01-01 12128/week @ 2026-01-08 12195/week @ 2026-01-15 20628/week @ 2026-01-22 18289/week @ 2026-01-29 48546/week @ 2026-02-05 52384/week @ 2026-02-12 75765/week @ 2026-02-19 86457/week @ 2026-02-26 99623/week @ 2026-03-05 94356/week @ 2026-03-12 55585/week @ 2026-03-19 43905/week @ 2026-03-26 51016/week @ 2026-04-02

266,368 downloads per month
Used in 6 crates

MIT/Apache

730KB
14K SLoC

DICOM-rs ul

CratesIO Documentation

An implementation of the DICOM upper layer protocol. This crate contains the types and methods needed to interact with DICOM nodes through the upper layer protocol. It can be used as a base for finite-state machines and higher-level helpers, enabling the creation of concrete service class users (SCUs) and service class providers (SCPs). TLS support for secure transport connections is also available via Rustls.

Examples of DICOM network tools constructed using dicom-ul include dicom-storescp, dicom-storescu, and dicom-findscu.

This crate is part of the DICOM-rs project and is contained by the parent crate dicom for convenience.

Testing

TLS

TLS testing requires a Certificate authority, and signed client/server key pairs

A function is provided within tests/association.rs which:

  1. Creates a CA with a US country code
  2. Creates certificate signing requests for two "clients" (one client and one server)
  3. Signs the certificates using the CA

When finished, there should be a .pem, and a .key.pem for the client, server and CA client and server,

You can change the country or the IP/DNS of the configured client/server by modifying country_name and/or organization_name in the test code.

Dependencies

~11–25MB
~236K SLoC