27#include <kcenon/common/patterns/result.h>
89 [[nodiscard]]
static auto sign(
94 ) -> kcenon::common::VoidResult;
112 std::span<const core::dicom_tag> tags_to_sign,
114 ) -> kcenon::common::VoidResult;
132 [[nodiscard]]
static auto verify(
148 const std::vector<certificate>& trusted_certs
166 ) -> std::optional<signature_info>;
178 ) -> std::vector<signature_info>;
219 std::span<const core::dicom_tag> tags,
221 ) -> std::vector<std::uint8_t>;
224 std::span<const std::uint8_t> mac_data,
230 std::span<const std::uint8_t> mac_data,
231 std::span<const std::uint8_t> signature,
X.509 Certificate and Private Key handling for DICOM digital signatures.
static auto compute_mac(const core::dicom_dataset &dataset, std::span< const core::dicom_tag > tags, mac_algorithm algo) -> std::vector< std::uint8_t >
static auto sign_mac(std::span< const std::uint8_t > mac_data, const private_key &key, signature_algorithm algo) -> kcenon::common::Result< std::vector< std::uint8_t > >
static auto has_signature(const core::dicom_dataset &dataset) -> bool
Check if a dataset contains digital signatures.
static auto remove_signatures(core::dicom_dataset &dataset) -> bool
Remove all digital signatures from a dataset.
static auto sign(core::dicom_dataset &dataset, const certificate &cert, const private_key &key, signature_algorithm algo=signature_algorithm::rsa_sha256) -> kcenon::common::VoidResult
Sign a DICOM dataset.
static auto verify_with_trust(const core::dicom_dataset &dataset, const std::vector< certificate > &trusted_certs) -> kcenon::common::Result< signature_status >
Verify digital signatures with a trusted certificate store.
static auto verify(const core::dicom_dataset &dataset) -> kcenon::common::Result< signature_status >
Verify digital signatures in a dataset.
static auto sign_tags(core::dicom_dataset &dataset, const certificate &cert, const private_key &key, std::span< const core::dicom_tag > tags_to_sign, signature_algorithm algo=signature_algorithm::rsa_sha256) -> kcenon::common::VoidResult
Sign specific tags in a DICOM dataset.
static auto verify_mac_signature(std::span< const std::uint8_t > mac_data, std::span< const std::uint8_t > signature, const certificate &cert, signature_algorithm algo) -> bool
static auto get_signature_info(const core::dicom_dataset &dataset) -> std::optional< signature_info >
Get information about signatures in a dataset.
static auto get_all_signatures(const core::dicom_dataset &dataset) -> std::vector< signature_info >
Get all signatures in a dataset.
static auto generate_signature_uid() -> std::string
Generate a new Digital Signature UID.
DICOM Dataset - ordered collection of Data Elements.
DICOM Tag representation (Group, Element pairs)
mac_algorithm
MAC algorithm identifiers per DICOM PS3.15.
signature_algorithm
Signature algorithms supported for DICOM digital signatures.
@ rsa_sha256
RSA with SHA-256 (recommended for most use cases)
Digital signature types and structures for DICOM PS3.15 compliance.