1#![allow(
4 non_camel_case_types,
5 non_snake_case,
6 non_upper_case_globals,
7 missing_docs
8)]
9
10use libc::{c_char, c_void, size_t};
11
12pub type CFTypeRef = *const c_void;
13pub type CFAllocatorRef = *const c_void;
14pub type CFStringRef = *const c_void;
15pub type CFDataRef = *const c_void;
16pub type CFArrayRef = *const c_void;
17pub type CFDictionaryRef = *const c_void;
18pub type CFMutableDictionaryRef = *mut c_void;
19pub type CFBooleanRef = *const c_void;
20pub type CFNumberRef = *const c_void;
21pub type CFErrorRef = *const c_void;
22pub type CFIndex = isize;
23pub type CFTypeID = usize;
24pub type OSStatus = i32;
25pub type Boolean = u8;
26pub type SecRandomRef = *const c_void;
27pub type SecCertificateRef = *const c_void;
28pub type SecKeyRef = *const c_void;
29pub type SecPolicyRef = *const c_void;
30pub type SecTrustRef = *const c_void;
31pub type SecCodeRef = *const c_void;
32pub type SecStaticCodeRef = *const c_void;
33pub type SecCSFlags = u32;
34
35pub const kCFStringEncodingUTF8: u32 = 0x0800_0100;
36pub const kCFNumberSInt64Type: i64 = 4;
37
38pub const kSecCSDefaultFlags: SecCSFlags = 0;
39pub const kSecCSSigningInformation: SecCSFlags = 1 << 1;
40pub const kSecCSDynamicInformation: SecCSFlags = 1 << 3;
41
42pub mod status {
43 use super::OSStatus;
44
45 pub const SUCCESS: OSStatus = 0;
46 pub const DUPLICATE_ITEM: OSStatus = -25299;
47 pub const ITEM_NOT_FOUND: OSStatus = -25300;
48 pub const INTERACTION_NOT_ALLOWED: OSStatus = -25308;
49}
50
51extern "C" {
52 pub static kCFAllocatorDefault: CFAllocatorRef;
53 pub static kCFBooleanTrue: CFBooleanRef;
54 pub static kCFTypeDictionaryKeyCallBacks: c_void;
55 pub static kCFTypeDictionaryValueCallBacks: c_void;
56 pub static kCFTypeArrayCallBacks: c_void;
57
58 pub fn CFRelease(cf: CFTypeRef);
59 pub fn CFGetTypeID(cf: CFTypeRef) -> CFTypeID;
60
61 pub fn CFStringCreateWithCString(
62 alloc: CFAllocatorRef,
63 c_str: *const c_char,
64 encoding: u32,
65 ) -> CFStringRef;
66 pub fn CFStringGetLength(string: CFStringRef) -> CFIndex;
67 pub fn CFStringGetCString(
68 string: CFStringRef,
69 buffer: *mut c_char,
70 buffer_size: CFIndex,
71 encoding: u32,
72 ) -> bool;
73 pub fn CFStringGetTypeID() -> CFTypeID;
74
75 pub fn CFDataCreate(alloc: CFAllocatorRef, bytes: *const u8, length: CFIndex) -> CFDataRef;
76 pub fn CFDataGetLength(data: CFDataRef) -> CFIndex;
77 pub fn CFDataGetBytePtr(data: CFDataRef) -> *const u8;
78 pub fn CFDataGetTypeID() -> CFTypeID;
79
80 pub fn CFArrayCreate(
81 allocator: CFAllocatorRef,
82 values: *const *const c_void,
83 num_values: CFIndex,
84 call_backs: *const c_void,
85 ) -> CFArrayRef;
86 pub fn CFArrayGetCount(array: CFArrayRef) -> CFIndex;
87 pub fn CFArrayGetValueAtIndex(array: CFArrayRef, index: CFIndex) -> *const c_void;
88 pub fn CFArrayGetTypeID() -> CFTypeID;
89
90 pub fn CFDictionaryCreateMutable(
91 allocator: CFAllocatorRef,
92 capacity: CFIndex,
93 key_call_backs: *const c_void,
94 value_call_backs: *const c_void,
95 ) -> CFMutableDictionaryRef;
96 pub fn CFDictionarySetValue(
97 dictionary: CFMutableDictionaryRef,
98 key: *const c_void,
99 value: *const c_void,
100 );
101 pub fn CFDictionaryGetValue(dictionary: CFDictionaryRef, key: *const c_void) -> *const c_void;
102 pub fn CFDictionaryGetCount(dictionary: CFDictionaryRef) -> CFIndex;
103 pub fn CFDictionaryGetKeysAndValues(
104 dictionary: CFDictionaryRef,
105 keys: *mut *const c_void,
106 values: *mut *const c_void,
107 );
108 pub fn CFDictionaryGetTypeID() -> CFTypeID;
109
110 pub fn CFBooleanGetValue(boolean: CFBooleanRef) -> bool;
111 pub fn CFBooleanGetTypeID() -> CFTypeID;
112
113 pub fn CFNumberGetValue(number: CFNumberRef, number_type: i64, value_ptr: *mut c_void) -> bool;
114 pub fn CFNumberGetTypeID() -> CFTypeID;
115
116 pub fn CFErrorCopyDescription(err: CFErrorRef) -> CFStringRef;
117
118 pub fn SecCopyErrorMessageString(status: OSStatus, reserved: *mut c_void) -> CFStringRef;
119
120 pub static kSecClass: CFStringRef;
121 pub static kSecClassGenericPassword: CFStringRef;
122 pub static kSecAttrAccount: CFStringRef;
123 pub static kSecAttrService: CFStringRef;
124 pub static kSecValueData: CFStringRef;
125 pub static kSecReturnData: CFStringRef;
126 pub static kSecReturnAttributes: CFStringRef;
127 pub static kSecMatchLimit: CFStringRef;
128 pub static kSecMatchLimitOne: CFStringRef;
129 pub static kSecMatchLimitAll: CFStringRef;
130
131 pub fn SecItemCopyMatching(query: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus;
132 pub fn SecItemAdd(attributes: CFDictionaryRef, result: *mut CFTypeRef) -> OSStatus;
133 pub fn SecItemUpdate(query: CFDictionaryRef, attributes_to_update: CFDictionaryRef)
134 -> OSStatus;
135 pub fn SecItemDelete(query: CFDictionaryRef) -> OSStatus;
136
137 pub fn SecCertificateCreateWithData(
138 allocator: CFAllocatorRef,
139 data: CFDataRef,
140 ) -> SecCertificateRef;
141 pub fn SecCertificateCopySubjectSummary(certificate: SecCertificateRef) -> CFStringRef;
142 pub fn SecCertificateCopyData(certificate: SecCertificateRef) -> CFDataRef;
143 pub fn SecCertificateCopyKey(certificate: SecCertificateRef) -> SecKeyRef;
144
145 pub fn SecPolicyCreateBasicX509() -> SecPolicyRef;
146 pub fn SecPolicyCreateSSL(server: Boolean, hostname: CFStringRef) -> SecPolicyRef;
147
148 pub fn SecTrustCreateWithCertificates(
149 certificates: CFTypeRef,
150 policies: CFTypeRef,
151 trust: *mut SecTrustRef,
152 ) -> OSStatus;
153 pub fn SecTrustSetPolicies(trust: SecTrustRef, policies: CFTypeRef) -> OSStatus;
154 pub fn SecTrustEvaluateWithError(trust: SecTrustRef, error: *mut CFErrorRef) -> Boolean;
155
156 pub fn SecCodeCopySelf(flags: SecCSFlags, self_code: *mut SecCodeRef) -> OSStatus;
157 pub static kSecCodeInfoIdentifier: CFStringRef;
158 pub static kSecCodeInfoTeamIdentifier: CFStringRef;
159 pub static kSecCodeInfoEntitlementsDict: CFStringRef;
160 pub static kSecCodeInfoStatus: CFStringRef;
161 pub fn SecCodeCopySigningInformation(
162 code: SecStaticCodeRef,
163 flags: SecCSFlags,
164 information: *mut CFDictionaryRef,
165 ) -> OSStatus;
166
167 pub static kSecRandomDefault: SecRandomRef;
168 pub fn SecRandomCopyBytes(rnd: SecRandomRef, count: size_t, bytes: *mut c_void) -> i32;
169}