diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-10 13:11:11 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-10 13:11:11 -0600 |
| commit | 01959b16a21b22b5df5f16569c2a8e8f92beecef (patch) | |
| tree | 32afa5d747c5466345c59ec52161a7cba3d6d755 /vendor/security-framework-sys/src/cms.rs | |
| parent | ff30574117a996df332e23d1fb6f65259b316b5b (diff) | |
chore: vendor dependencies
Diffstat (limited to 'vendor/security-framework-sys/src/cms.rs')
| -rw-r--r-- | vendor/security-framework-sys/src/cms.rs | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/vendor/security-framework-sys/src/cms.rs b/vendor/security-framework-sys/src/cms.rs new file mode 100644 index 00000000..6da3702e --- /dev/null +++ b/vendor/security-framework-sys/src/cms.rs @@ -0,0 +1,250 @@ +//! Cryptographic Message Syntax support + +use std::os::raw::c_void; + +use core_foundation_sys::array::CFArrayRef; +use core_foundation_sys::base::{Boolean, CFTypeID, CFTypeRef, OSStatus}; +use core_foundation_sys::data::CFDataRef; +use core_foundation_sys::date::CFAbsoluteTime; +use core_foundation_sys::string::CFStringRef; + +use crate::base::SecCertificateRef; +use crate::trust::SecTrustRef; + +pub enum OpaqueCMSEncoderRef {} +pub type CMSEncoderRef = *mut OpaqueCMSEncoderRef; + +pub enum OpaqueCMSDecoderRef {} +pub type CMSDecoderRef = *mut OpaqueCMSEncoderRef; + +#[repr(i32)] +#[derive(Copy, Clone, Eq, PartialEq, Debug)] +pub enum CMSSignerStatus { + kCMSSignerUnsigned = 0, + kCMSSignerValid = 1, + kCMSSignerNeedsDetachedContent = 2, + kCMSSignerInvalidSignature = 3, + kCMSSignerInvalidCert = 4, + kCMSSignerInvalidIndex = 5, +} + +pub type CMSSignedAttributes = u32; +pub const kCMSAttrNone: CMSSignedAttributes = 0x0000; +pub const kCMSAttrSmimeCapabilities: CMSSignedAttributes = 0x0001; +pub const kCMSAttrSmimeEncryptionKeyPrefs: CMSSignedAttributes = 0x0002; +pub const kCMSAttrSmimeMSEncryptionKeyPrefs: CMSSignedAttributes = 0x0004; +pub const kCMSAttrSigningTime: CMSSignedAttributes = 0x0008; +pub const kCMSAttrAppleCodesigningHashAgility: CMSSignedAttributes = 0x0010; +pub const kCMSAttrAppleCodesigningHashAgilityV2: CMSSignedAttributes = 0x0020; +pub const kCMSAttrAppleExpirationTime: CMSSignedAttributes = 0x0040; + +#[repr(i32)] +#[derive(Copy, Clone, Eq, PartialEq, Debug)] +pub enum CMSCertificateChainMode { + kCMSCertificateNone = 0, + kCMSCertificateSignerOnly = 1, + kCMSCertificateChain = 2, + kCMSCertificateChainWithRoot = 3, + kCMSCertificateChainWithRootOrFail = 4, +} + +extern "C" { + + // CMS decoder + + pub fn CMSDecoderGetTypeID() -> CFTypeID; + + pub fn CMSDecoderCreate(output: *mut CMSDecoderRef) -> OSStatus; + + pub fn CMSDecoderUpdateMessage( + decoder: CMSDecoderRef, + msg_bytes: *const c_void, + msg_bytes_len: usize, + ) -> OSStatus; + + pub fn CMSDecoderFinalizeMessage(decoder: CMSDecoderRef) -> OSStatus; + + pub fn CMSDecoderSetDetachedContent( + decoder: CMSDecoderRef, + detached_content: CFDataRef, + ) -> OSStatus; + + pub fn CMSDecoderCopyDetachedContent( + decoder: CMSDecoderRef, + detached_content_out: *mut CFDataRef, + ) -> OSStatus; + + pub fn CMSDecoderGetNumSigners( + decoder: CMSDecoderRef, + num_signers_out: *mut usize, + ) -> OSStatus; + + pub fn CMSDecoderCopySignerStatus( + decoder: CMSDecoderRef, + signer_index: usize, + policy_or_array: CFTypeRef, + evaluate_sec_trust: Boolean, + signer_status_out: *mut CMSSignerStatus, + sec_trust_out: *mut SecTrustRef, + cert_verify_result_code_out: *mut OSStatus, + ) -> OSStatus; + + pub fn CMSDecoderCopySignerEmailAddress( + decoder: CMSDecoderRef, + signer_index: usize, + signer_email_address_out: *mut CFStringRef, + ) -> OSStatus; + + pub fn CMSDecoderCopySignerCert( + decoder: CMSDecoderRef, + signer_index: usize, + signer_cert_out: *mut SecCertificateRef, + ) -> OSStatus; + + pub fn CMSDecoderIsContentEncrypted( + decoder: CMSDecoderRef, + is_encrypted_out: *mut Boolean, + ) -> OSStatus; + + pub fn CMSDecoderCopyEncapsulatedContentType( + decoder: CMSDecoderRef, + content_type_out: *mut CFDataRef, + ) -> OSStatus; + + pub fn CMSDecoderCopyAllCerts(decoder: CMSDecoderRef, certs_out: *mut CFArrayRef) -> OSStatus; + + pub fn CMSDecoderCopyContent(decoder: CMSDecoderRef, content_out: *mut CFDataRef) -> OSStatus; + + pub fn CMSDecoderCopySignerSigningTime( + decoder: CMSDecoderRef, + signer_index: usize, + sign_time_out: *mut CFAbsoluteTime, + ) -> OSStatus; + + pub fn CMSDecoderCopySignerTimestamp( + decoder: CMSDecoderRef, + signer_index: usize, + timestamp: *mut CFAbsoluteTime, + ) -> OSStatus; + + pub fn CMSDecoderCopySignerTimestampWithPolicy( + decoder: CMSDecoderRef, + timestamp_policy: CFTypeRef, + signer_index: usize, + timestamp: *mut CFAbsoluteTime, + ) -> OSStatus; + + pub fn CMSDecoderCopySignerTimestampCertificates( + decoder: CMSDecoderRef, + signer_index: usize, + certificate_refs: *mut CFArrayRef, + ) -> OSStatus; + + // CMS encoder + + pub static kCMSEncoderDigestAlgorithmSHA1: CFStringRef; + pub static kCMSEncoderDigestAlgorithmSHA256: CFStringRef; + + pub fn CMSEncoderGetTypeID() -> CFTypeID; + + pub fn CMSEncoderCreate(encoder_out: *mut CMSEncoderRef) -> OSStatus; + + pub fn CMSEncoderSetSignerAlgorithm( + encoder: CMSEncoderRef, + digest_alogrithm: CFStringRef, + ) -> OSStatus; + + pub fn CMSEncoderAddSigners(encoder: CMSEncoderRef, signer_or_array: CFTypeRef) -> OSStatus; + + pub fn CMSEncoderCopySigners(encoder: CMSEncoderRef, signers_out: *mut CFArrayRef) -> OSStatus; + + pub fn CMSEncoderAddRecipients( + encoder: CMSEncoderRef, + recipient_or_array: CFTypeRef, + ) -> OSStatus; + + pub fn CMSEncoderCopyRecipients( + encoder: CMSEncoderRef, + recipients_out: *mut CFArrayRef, + ) -> OSStatus; + + pub fn CMSEncoderSetHasDetachedContent( + encoder: CMSEncoderRef, + detached_content: Boolean, + ) -> OSStatus; + + pub fn CMSEncoderGetHasDetachedContent( + encoder: CMSEncoderRef, + detached_content_out: *mut Boolean, + ) -> OSStatus; + + pub fn CMSEncoderSetEncapsulatedContentTypeOID( + encoder: CMSEncoderRef, + content_type_oid: CFTypeRef, + ) -> OSStatus; + + pub fn CMSEncoderCopyEncapsulatedContentType( + encoder: CMSEncoderRef, + content_type_out: *mut CFDataRef, + ) -> OSStatus; + + pub fn CMSEncoderAddSupportingCerts( + encoder: CMSEncoderRef, + cert_or_array: CFTypeRef, + ) -> OSStatus; + + pub fn CMSEncoderCopySupportingCerts( + encoder: CMSEncoderRef, + certs_out: *mut CFArrayRef, + ) -> OSStatus; + + pub fn CMSEncoderAddSignedAttributes( + encoder: CMSEncoderRef, + signed_attributes: CMSSignedAttributes, + ) -> OSStatus; + + pub fn CMSEncoderSetCertificateChainMode( + encoder: CMSEncoderRef, + chain_mode: CMSCertificateChainMode, + ) -> OSStatus; + + pub fn CMSEncoderGetCertificateChainMode( + encoder: CMSEncoderRef, + chain_mode_out: *mut CMSCertificateChainMode, + ) -> OSStatus; + + pub fn CMSEncoderUpdateContent( + encoder: CMSEncoderRef, + content: *const c_void, + content_len: usize, + ) -> OSStatus; + + pub fn CMSEncoderCopyEncodedContent( + encoder: CMSEncoderRef, + encoded_content_out: *mut CFDataRef, + ) -> OSStatus; + + pub fn CMSEncodeContent( + signers: CFTypeRef, + recipients: CFTypeRef, + content_type_oid: CFTypeRef, + detached_content: Boolean, + signed_attributes: CMSSignedAttributes, + content: *const c_void, + content_len: usize, + encoded_content_out: *mut CFDataRef, + ) -> OSStatus; + + pub fn CMSEncoderCopySignerTimestamp( + encoder: CMSEncoderRef, + signer_index: usize, + timestamp: *mut CFAbsoluteTime, + ) -> OSStatus; + + pub fn CMSEncoderCopySignerTimestampWithPolicy( + encoder: CMSEncoderRef, + timestamp_policy: CFTypeRef, + signer_index: usize, + timestamp: *mut CFAbsoluteTime, + ) -> OSStatus; +} |
