Skip to main content

security/
lib.rs

1#![doc = include_str!("../README.md")]
2//!
3//! ---
4//!
5//! # API documentation
6//!
7//! Safe Rust bindings for Apple's `Security.framework` on macOS.
8
9#![cfg_attr(docsrs, feature(doc_cfg))]
10#![allow(
11    clippy::missing_const_for_fn,
12    clippy::missing_errors_doc,
13    clippy::missing_panics_doc,
14    clippy::module_name_repetitions,
15    clippy::must_use_candidate,
16    clippy::needless_pass_by_value,
17    clippy::option_if_let_else,
18    clippy::redundant_pub_crate,
19    clippy::unnecessary_lazy_evaluations
20)]
21
22#[cfg(feature = "async")]
23#[cfg_attr(docsrs, doc(cfg(feature = "async")))]
24pub mod async_api;
25/// Safe wrappers for Authorization Services APIs in Security.framework.
26pub mod authorization;
27mod bridge;
28/// Safe wrappers for `SecCertificateRef` and public-key APIs in Security.framework.
29pub mod certificate;
30/// Safe wrappers for CMS encoder and decoder APIs in Security.framework.
31pub mod cms;
32/// Safe wrappers for code-signing APIs such as `SecCodeRef` and `SecTaskRef`.
33pub mod code;
34/// Re-exports code-signing wrappers built on Security.framework.
35pub mod code_signing;
36/// Error types used by the Security.framework wrappers.
37pub mod error;
38#[cfg(feature = "raw-ffi")]
39#[cfg_attr(docsrs, doc(cfg(feature = "raw-ffi")))]
40pub mod ffi;
41/// Safe wrappers for `SecIdentityRef`.
42pub mod identity;
43/// Safe wrappers for `SecKeyRef` algorithms and private-key APIs.
44pub mod key;
45/// Safe wrappers for `SecKeyRef` key-agreement APIs.
46pub mod key_agreement;
47/// Safe wrappers for password-based key-derivation APIs in Security.framework.
48pub mod key_derivation;
49/// Safe wrappers for keychain and access-control APIs in Security.framework.
50pub mod keychain;
51/// Safe wrappers for `SecPolicyRef` and policy configuration APIs.
52pub mod policy;
53/// Re-exports secure-random wrappers built on `SecRandomCopyBytes`.
54pub mod random;
55/// Safe wrappers for `SecRandomCopyBytes`.
56pub mod random_bytes;
57/// Safe wrappers for Secure Transport session APIs in Security.framework.
58pub mod secure_transport;
59/// Safe wrappers for Security Transforms APIs.
60pub mod transform;
61/// Safe wrappers for `SecTrustRef` and trust-evaluation APIs.
62pub mod trust;
63
64pub use authorization::{Authorization, AuthorizationOptions};
65pub use certificate::{Certificate, PublicKey};
66pub use cms::{
67    Cms, CmsCertificateChainMode, CmsDecoder, CmsDigestAlgorithm, CmsEncoder, CmsSignedAttributes,
68};
69pub use code::{
70    Code, CodeSigningFlags, Requirement, SigningInformation, SigningValue, StaticCode, Task,
71};
72pub use error::{OsStatus, Result, SecurityError, StatusError};
73pub use identity::Identity;
74pub use key::{
75    EncryptionAlgorithm, ExternalFormat, ExternalItemType, KeyType, PrivateKey, SignatureAlgorithm,
76};
77pub use key_agreement::{AgreementPrivateKey, AgreementPublicKey};
78pub use key_derivation::{DerivedKey, KeyDerivation};
79pub use keychain::{
80    AccessControl, AccessControlFlags, AccessControlProtection, Keychain, KeychainEntry,
81};
82pub use policy::{Policy, PolicyIdentifier, PolicyName, PolicyProperties, RevocationFlags};
83pub use random_bytes::SecureRandom;
84pub use secure_transport::{ProtocolVersion, SecureTransportContext, SecureTransportState};
85pub use transform::Transform;
86pub use trust::{Trust, TrustOptions, TrustResultType};
87
88/// Common imports for users of this crate.
89pub mod prelude {
90    pub use crate::authorization::{Authorization, AuthorizationOptions};
91    pub use crate::certificate::{Certificate, PublicKey};
92    pub use crate::cms::{
93        Cms, CmsCertificateChainMode, CmsDecoder, CmsDigestAlgorithm, CmsEncoder,
94        CmsSignedAttributes,
95    };
96    pub use crate::code::{
97        Code, CodeSigningFlags, Requirement, SigningInformation, SigningValue, StaticCode, Task,
98    };
99    pub use crate::error::{OsStatus, Result, SecurityError, StatusError};
100    pub use crate::identity::Identity;
101    pub use crate::key::{
102        EncryptionAlgorithm, ExternalFormat, ExternalItemType, KeyType, PrivateKey,
103        SignatureAlgorithm,
104    };
105    pub use crate::key_agreement::{AgreementPrivateKey, AgreementPublicKey};
106    pub use crate::key_derivation::{DerivedKey, KeyDerivation};
107    pub use crate::keychain::{
108        AccessControl, AccessControlFlags, AccessControlProtection, Keychain, KeychainEntry,
109    };
110    pub use crate::policy::{
111        Policy, PolicyIdentifier, PolicyName, PolicyProperties, RevocationFlags,
112    };
113    pub use crate::random_bytes::SecureRandom;
114    pub use crate::secure_transport::{
115        ProtocolVersion, SecureTransportContext, SecureTransportState,
116    };
117    pub use crate::transform::Transform;
118    pub use crate::trust::{Trust, TrustOptions, TrustResultType};
119}