zerodds_corba_csiv2/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! Crate `zerodds-corba-csiv2`. Safety classification: **STANDARD**.
5//!
6//! OMG CORBA 3.3 Part 3 — Common Secure Interoperability v2 (CSIv2).
7//! Voller CSIv2-Stack als pure-Rust `no_std + alloc`,
8//! `forbid(unsafe_code)`:
9//!
10//! - **Association-Options** (Spec §24.2.4) — Bitmasken
11//! `Integrity` / `Confidentiality` / `EstablishTrustInTarget` /
12//! `EstablishTrustInClient` / `IdentityAssertion` /
13//! `DelegationByClient` / `NoProtection`.
14//! - **Compound-Sec-Mech-List** (Spec §24.2.6.5) als
15//! `TAG_CSI_SEC_MECH_LIST`-Component-Body (AS-Layer + SAS-Layer).
16//! - **GSSUP** Username-Password-Token (Spec §24.7) mit
17//! `INITIAL_CONTEXT_TOKEN`-Wrapping.
18//! - **SAS-Protocol** (Spec §24.2): EstablishContext /
19//! CompleteEstablishContext / MessageInContext / ContextError.
20//! - **TLS-Mechanism-OID** (Spec §24.2.6.5): `1.3.6.1.5.5.13` fuer
21//! `TLS_SEC_TRANS`.
22//!
23//! Spec: OMG CORBA 3.3 Part 3 §24.
24//!
25//! ## Schichten-Position
26//!
27//! Layer 8 — CORBA-Stack (Tier-A). Sitzt auf `zerodds-cdr` (Wire-
28//! Codec). Konsumenten sind GIOP-/IIOP-Server (Layer-8-Tier-B/C) mit
29//! Security-Stack-Konfiguration.
30//!
31//! ## Public API (Stand 1.0.0-rc.1)
32//!
33//! - [`AssociationOptions`] — §24.2.4 Bitmask.
34//! - [`CompoundSecMech`] / [`CompoundSecMechList`] / [`AsContextSec`]
35//! / [`SasContextSec`] — §24.2.6.5.
36//! - [`GssupCredentialToken`] / [`INITIAL_CONTEXT_TOKEN_TAG`] — §24.7.
37//! - [`SasMessage`] / [`EstablishContext`] /
38//! [`CompleteEstablishContext`] / [`MessageInContext`] /
39//! [`ContextError`] / [`IdentityToken`] — §24.2 SAS-Protocol.
40//!
41//! ## Beispiel
42//!
43//! ```rust
44//! use zerodds_corba_csiv2::AssociationOptions;
45//!
46//! // Spec §24.2.4 — Association-Options-Bitmask: Integrity + Confidentiality.
47//! let opts = AssociationOptions(AssociationOptions::INTEGRITY | AssociationOptions::CONFIDENTIALITY);
48//! assert!(opts.0 & AssociationOptions::INTEGRITY != 0);
49//! assert!(opts.0 & AssociationOptions::CONFIDENTIALITY != 0);
50//! ```
51
52#![cfg_attr(not(feature = "std"), no_std)]
53#![forbid(unsafe_code)]
54#![warn(missing_docs)]
55
56#[cfg(feature = "alloc")]
57extern crate alloc;
58
59pub mod association_options;
60pub mod gssup;
61pub mod mech_list;
62pub mod sas;
63
64pub use association_options::AssociationOptions;
65pub use gssup::{GssupCredentialToken, INITIAL_CONTEXT_TOKEN_TAG};
66pub use mech_list::{AsContextSec, CompoundSecMech, CompoundSecMechList, SasContextSec};
67pub use sas::{
68 CompleteEstablishContext, ContextError, EstablishContext, IdentityToken, MessageInContext,
69 SasMessage,
70};