diff --git a/.github/workflows/celest_core.yaml b/.github/workflows/celest_core.yaml index e4a905ec..f931c818 100644 --- a/.github/workflows/celest_core.yaml +++ b/.github/workflows/celest_core.yaml @@ -57,6 +57,7 @@ jobs: api-level: 34 script: | cd packages/celest_core/example - for OS in "sdk iPhone macos"; do + for OS in sdk iPhone macos + do flutter test -d $OS integration_test/secure_storage_test.dart done diff --git a/packages/celest_core/ffigen.core_foundation.yaml b/packages/celest_core/ffigen.core_foundation.yaml index 2af63fa6..d88260a5 100644 --- a/packages/celest_core/ffigen.core_foundation.yaml +++ b/packages/celest_core/ffigen.core_foundation.yaml @@ -32,8 +32,6 @@ globals: functions: include: - CFDictionary.* - - CFArray.* - - CF(.*)GetTypeID - CFDataCreate - CFStringGetCStringPtr - CFStringGetCString @@ -47,7 +45,6 @@ structs: "__CFString": CFString "__CFData": CFData "__CFDictionary": CFDictionary - "__CFArray": CFArray unnamed-enums: include: - kCF.* diff --git a/packages/celest_core/ffigen.security.yaml b/packages/celest_core/ffigen.security.yaml index bbe4a82b..a2f42176 100644 --- a/packages/celest_core/ffigen.security.yaml +++ b/packages/celest_core/ffigen.security.yaml @@ -31,16 +31,10 @@ typedefs: functions: include: - Sec.* - - SecKeychainItem.* globals: include: - kSec.* - kCF.* -structs: - include: - - __SecKeychainItem - rename: - "__SecKeychainItem": SecKeychainItem unnamed-enums: include: - errSec.* diff --git a/packages/celest_core/lib/src/native/darwin/core_foundation.ffi.dart b/packages/celest_core/lib/src/native/darwin/core_foundation.ffi.dart index baf28626..48ee9279 100644 --- a/packages/celest_core/lib/src/native/darwin/core_foundation.ffi.dart +++ b/packages/celest_core/lib/src/native/darwin/core_foundation.ffi.dart @@ -14,9 +14,6 @@ external double kCFCoreFoundationVersionNumber; @ffi.Native() external final int kCFNotFound; -@ffi.Native() -external int CFNullGetTypeID(); - /// the singleton null instance @ffi.Native() external final CFNullRef kCFNull; @@ -55,15 +52,6 @@ external final CFAllocatorRef kCFAllocatorNull; @ffi.Native() external final CFAllocatorRef kCFAllocatorUseContext; -@ffi.Native() -external int CFAllocatorGetTypeID(); - -/// Polymorphic CF functions -@ffi.Native() -external int CFGetTypeID( - CFTypeRef cf, -); - @ffi.Native() external void CFRelease( CFTypeRef cf, @@ -650,642 +638,6 @@ external void CFDictionaryRemoveAllValues( @ffi.Native() external final CFArrayCallBacks kCFTypeArrayCallBacks; -/// ! -/// @function CFArrayGetTypeID -/// Returns the type identifier of all CFArray instances. -@ffi.Native() -external int CFArrayGetTypeID(); - -/// ! -/// @function CFArrayCreate -/// Creates a new immutable array with the given values. -/// @param allocator The CFAllocator which should be used to allocate -/// memory for the array and its storage for values. This -/// parameter may be NULL in which case the current default -/// CFAllocator is used. If this reference is not a valid -/// CFAllocator, the behavior is undefined. -/// @param values A C array of the pointer-sized values to be in the -/// array. The values in the array are ordered in the same order -/// in which they appear in this C array. This parameter may be -/// NULL if the numValues parameter is 0. This C array is not -/// changed or freed by this function. If this parameter is not -/// a valid pointer to a C array of at least numValues pointers, -/// the behavior is undefined. -/// @param numValues The number of values to copy from the values C -/// array into the CFArray. This number will be the count of the -/// array. -/// If this parameter is negative, or greater than the number of -/// values actually in the value's C array, the behavior is -/// undefined. -/// @param callBacks A pointer to a CFArrayCallBacks structure -/// initialized with the callbacks for the array to use on each -/// value in the array. The retain callback will be used within -/// this function, for example, to retain all of the new values -/// from the values C array. A copy of the contents of the -/// callbacks structure is made, so that a pointer to a -/// structure on the stack can be passed in, or can be reused -/// for multiple array creations. If the version field of this -/// callbacks structure is not one of the defined ones for -/// CFArray, the behavior is undefined. The retain field may be -/// NULL, in which case the CFArray will do nothing to add a -/// retain to the contained values for the array. The release -/// field may be NULL, in which case the CFArray will do nothing -/// to remove the array's retain (if any) on the values when the -/// array is destroyed. If the copyDescription field is NULL, -/// the array will create a simple description for the value. If -/// the equal field is NULL, the array will use pointer equality -/// to test for equality of values. This callbacks parameter -/// itself may be NULL, which is treated as if a valid structure -/// of version 0 with all fields NULL had been passed in. -/// Otherwise, if any of the fields are not valid pointers to -/// functions of the correct type, or this parameter is not a -/// valid pointer to a CFArrayCallBacks callbacks structure, -/// the behavior is undefined. If any of the values put into the -/// array is not one understood by one of the callback functions -/// the behavior when that callback function is used is -/// undefined. -/// @result A reference to the new immutable CFArray. -@ffi.Native< - CFArrayRef Function(CFAllocatorRef, ffi.Pointer>, - CFIndex, ffi.Pointer)>() -external CFArrayRef CFArrayCreate( - CFAllocatorRef allocator, - ffi.Pointer> values, - int numValues, - ffi.Pointer callBacks, -); - -/// ! -/// @function CFArrayCreateCopy -/// Creates a new immutable array with the values from the given array. -/// @param allocator The CFAllocator which should be used to allocate -/// memory for the array and its storage for values. This -/// parameter may be NULL in which case the current default -/// CFAllocator is used. If this reference is not a valid -/// CFAllocator, the behavior is undefined. -/// @param theArray The array which is to be copied. The values from the -/// array are copied as pointers into the new array (that is, -/// the values themselves are copied, not that which the values -/// point to, if anything). However, the values are also -/// retained by the new array. The count of the new array will -/// be the same as the given array. The new array uses the same -/// callbacks as the array to be copied. If this parameter is -/// not a valid CFArray, the behavior is undefined. -/// @result A reference to the new immutable CFArray. -@ffi.Native() -external CFArrayRef CFArrayCreateCopy( - CFAllocatorRef allocator, - CFArrayRef theArray, -); - -/// ! -/// @function CFArrayCreateMutable -/// Creates a new empty mutable array. -/// @param allocator The CFAllocator which should be used to allocate -/// memory for the array and its storage for values. This -/// parameter may be NULL in which case the current default -/// CFAllocator is used. If this reference is not a valid -/// CFAllocator, the behavior is undefined. -/// @param capacity A hint about the number of values that will be held -/// by the CFArray. Pass 0 for no hint. The implementation may -/// ignore this hint, or may use it to optimize various -/// operations. An array's actual capacity is only limited by -/// address space and available memory constraints). If this -/// parameter is negative, the behavior is undefined. -/// @param callBacks A pointer to a CFArrayCallBacks structure -/// initialized with the callbacks for the array to use on each -/// value in the array. A copy of the contents of the -/// callbacks structure is made, so that a pointer to a -/// structure on the stack can be passed in, or can be reused -/// for multiple array creations. If the version field of this -/// callbacks structure is not one of the defined ones for -/// CFArray, the behavior is undefined. The retain field may be -/// NULL, in which case the CFArray will do nothing to add a -/// retain to the contained values for the array. The release -/// field may be NULL, in which case the CFArray will do nothing -/// to remove the array's retain (if any) on the values when the -/// array is destroyed. If the copyDescription field is NULL, -/// the array will create a simple description for the value. If -/// the equal field is NULL, the array will use pointer equality -/// to test for equality of values. This callbacks parameter -/// itself may be NULL, which is treated as if a valid structure -/// of version 0 with all fields NULL had been passed in. -/// Otherwise, if any of the fields are not valid pointers to -/// functions of the correct type, or this parameter is not a -/// valid pointer to a CFArrayCallBacks callbacks structure, -/// the behavior is undefined. If any of the values put into the -/// array is not one understood by one of the callback functions -/// the behavior when that callback function is used is -/// undefined. -/// @result A reference to the new mutable CFArray. -@ffi.Native< - CFMutableArrayRef Function( - CFAllocatorRef, CFIndex, ffi.Pointer)>() -external CFMutableArrayRef CFArrayCreateMutable( - CFAllocatorRef allocator, - int capacity, - ffi.Pointer callBacks, -); - -/// ! -/// @function CFArrayCreateMutableCopy -/// Creates a new mutable array with the values from the given array. -/// @param allocator The CFAllocator which should be used to allocate -/// memory for the array and its storage for values. This -/// parameter may be NULL in which case the current default -/// CFAllocator is used. If this reference is not a valid -/// CFAllocator, the behavior is undefined. -/// @param capacity A hint about the number of values that will be held -/// by the CFArray. Pass 0 for no hint. The implementation may -/// ignore this hint, or may use it to optimize various -/// operations. An array's actual capacity is only limited by -/// address space and available memory constraints). -/// This parameter must be greater than or equal -/// to the count of the array which is to be copied, or the -/// behavior is undefined. If this parameter is negative, the -/// behavior is undefined. -/// @param theArray The array which is to be copied. The values from the -/// array are copied as pointers into the new array (that is, -/// the values themselves are copied, not that which the values -/// point to, if anything). However, the values are also -/// retained by the new array. The count of the new array will -/// be the same as the given array. The new array uses the same -/// callbacks as the array to be copied. If this parameter is -/// not a valid CFArray, the behavior is undefined. -/// @result A reference to the new mutable CFArray. -@ffi.Native() -external CFMutableArrayRef CFArrayCreateMutableCopy( - CFAllocatorRef allocator, - int capacity, - CFArrayRef theArray, -); - -/// ! -/// @function CFArrayGetCount -/// Returns the number of values currently in the array. -/// @param theArray The array to be queried. If this parameter is not a valid -/// CFArray, the behavior is undefined. -/// @result The number of values in the array. -@ffi.Native() -external int CFArrayGetCount( - CFArrayRef theArray, -); - -/// ! -/// @function CFArrayGetCountOfValue -/// Counts the number of times the given value occurs in the array. -/// @param theArray The array to be searched. If this parameter is not a -/// valid CFArray, the behavior is undefined. -/// @param range The range within the array to search. If the range -/// location or end point (defined by the location plus length -/// minus 1) is outside the index space of the array (0 to -/// N-1 inclusive, where N is the count of the array), the -/// behavior is undefined. If the range length is negative, the -/// behavior is undefined. The range may be empty (length 0). -/// @param value The value for which to find matches in the array. The -/// equal() callback provided when the array was created is -/// used to compare. If the equal() callback was NULL, pointer -/// equality (in C, ==) is used. If value, or any of the values -/// in the array, are not understood by the equal() callback, -/// the behavior is undefined. -/// @result The number of times the given value occurs in the array, -/// within the specified range. -@ffi.Native)>() -external int CFArrayGetCountOfValue( - CFArrayRef theArray, - CFRange range, - ffi.Pointer value, -); - -/// ! -/// @function CFArrayContainsValue -/// Reports whether or not the value is in the array. -/// @param theArray The array to be searched. If this parameter is not a -/// valid CFArray, the behavior is undefined. -/// @param range The range within the array to search. If the range -/// location or end point (defined by the location plus length -/// minus 1) is outside the index space of the array (0 to -/// N-1 inclusive, where N is the count of the array), the -/// behavior is undefined. If the range length is negative, the -/// behavior is undefined. The range may be empty (length 0). -/// @param value The value for which to find matches in the array. The -/// equal() callback provided when the array was created is -/// used to compare. If the equal() callback was NULL, pointer -/// equality (in C, ==) is used. If value, or any of the values -/// in the array, are not understood by the equal() callback, -/// the behavior is undefined. -/// @result true, if the value is in the specified range of the array, -/// otherwise false. -@ffi.Native< - ffi.UnsignedChar Function(CFArrayRef, CFRange, ffi.Pointer)>() -external int CFArrayContainsValue( - CFArrayRef theArray, - CFRange range, - ffi.Pointer value, -); - -/// ! -/// @function CFArrayGetValueAtIndex -/// Retrieves the value at the given index. -/// @param theArray The array to be queried. If this parameter is not a -/// valid CFArray, the behavior is undefined. -/// @param idx The index of the value to retrieve. If the index is -/// outside the index space of the array (0 to N-1 inclusive, -/// where N is the count of the array), the behavior is -/// undefined. -/// @result The value with the given index in the array. -@ffi.Native Function(CFArrayRef, CFIndex)>() -external ffi.Pointer CFArrayGetValueAtIndex( - CFArrayRef theArray, - int idx, -); - -/// ! -/// @function CFArrayGetValues -/// Fills the buffer with values from the array. -/// @param theArray The array to be queried. If this parameter is not a -/// valid CFArray, the behavior is undefined. -/// @param range The range of values within the array to retrieve. If -/// the range location or end point (defined by the location -/// plus length minus 1) is outside the index space of the -/// array (0 to N-1 inclusive, where N is the count of the -/// array), the behavior is undefined. If the range length is -/// negative, the behavior is undefined. The range may be empty -/// (length 0), in which case no values are put into the buffer. -/// @param values A C array of pointer-sized values to be filled with -/// values from the array. The values in the C array are ordered -/// in the same order in which they appear in the array. If this -/// parameter is not a valid pointer to a C array of at least -/// range.length pointers, the behavior is undefined. -@ffi.Native< - ffi.Void Function( - CFArrayRef, CFRange, ffi.Pointer>)>() -external void CFArrayGetValues( - CFArrayRef theArray, - CFRange range, - ffi.Pointer> values, -); - -/// ! -/// @function CFArrayApplyFunction -/// Calls a function once for each value in the array. -/// @param theArray The array to be operated upon. If this parameter is not -/// a valid CFArray, the behavior is undefined. -/// @param range The range of values within the array to which to apply -/// the function. If the range location or end point (defined by -/// the location plus length minus 1) is outside the index -/// space of the array (0 to N-1 inclusive, where N is the count -/// of the array), the behavior is undefined. If the range -/// length is negative, the behavior is undefined. The range may -/// be empty (length 0). -/// @param applier The callback function to call once for each value in -/// the given range in the array. If this parameter is not a -/// pointer to a function of the correct prototype, the behavior -/// is undefined. If there are values in the range which the -/// applier function does not expect or cannot properly apply -/// to, the behavior is undefined. -/// @param context A pointer-sized user-defined value, which is passed -/// as the second parameter to the applier function, but is -/// otherwise unused by this function. If the context is not -/// what is expected by the applier function, the behavior is -/// undefined. -@ffi.Native< - ffi.Void Function( - CFArrayRef, CFRange, CFArrayApplierFunction, ffi.Pointer)>() -external void CFArrayApplyFunction( - CFArrayRef theArray, - CFRange range, - CFArrayApplierFunction applier, - ffi.Pointer context, -); - -/// ! -/// @function CFArrayGetFirstIndexOfValue -/// Searches the array for the value. -/// @param theArray The array to be searched. If this parameter is not a -/// valid CFArray, the behavior is undefined. -/// @param range The range within the array to search. If the range -/// location or end point (defined by the location plus length -/// minus 1) is outside the index space of the array (0 to -/// N-1 inclusive, where N is the count of the array), the -/// behavior is undefined. If the range length is negative, the -/// behavior is undefined. The range may be empty (length 0). -/// The search progresses from the smallest index defined by -/// the range to the largest. -/// @param value The value for which to find a match in the array. The -/// equal() callback provided when the array was created is -/// used to compare. If the equal() callback was NULL, pointer -/// equality (in C, ==) is used. If value, or any of the values -/// in the array, are not understood by the equal() callback, -/// the behavior is undefined. -/// @result The lowest index of the matching values in the range, or -/// kCFNotFound if no value in the range matched. -@ffi.Native)>() -external int CFArrayGetFirstIndexOfValue( - CFArrayRef theArray, - CFRange range, - ffi.Pointer value, -); - -/// ! -/// @function CFArrayGetLastIndexOfValue -/// Searches the array for the value. -/// @param theArray The array to be searched. If this parameter is not a -/// valid CFArray, the behavior is undefined. -/// @param range The range within the array to search. If the range -/// location or end point (defined by the location plus length -/// minus 1) is outside the index space of the array (0 to -/// N-1 inclusive, where N is the count of the array), the -/// behavior is undefined. If the range length is negative, the -/// behavior is undefined. The range may be empty (length 0). -/// The search progresses from the largest index defined by the -/// range to the smallest. -/// @param value The value for which to find a match in the array. The -/// equal() callback provided when the array was created is -/// used to compare. If the equal() callback was NULL, pointer -/// equality (in C, ==) is used. If value, or any of the values -/// in the array, are not understood by the equal() callback, -/// the behavior is undefined. -/// @result The highest index of the matching values in the range, or -/// kCFNotFound if no value in the range matched. -@ffi.Native)>() -external int CFArrayGetLastIndexOfValue( - CFArrayRef theArray, - CFRange range, - ffi.Pointer value, -); - -/// ! -/// @function CFArrayBSearchValues -/// Searches the array for the value using a binary search algorithm. -/// @param theArray The array to be searched. If this parameter is not a -/// valid CFArray, the behavior is undefined. If the array is -/// not sorted from least to greatest according to the -/// comparator function, the behavior is undefined. -/// @param range The range within the array to search. If the range -/// location or end point (defined by the location plus length -/// minus 1) is outside the index space of the array (0 to -/// N-1 inclusive, where N is the count of the array), the -/// behavior is undefined. If the range length is negative, the -/// behavior is undefined. The range may be empty (length 0). -/// @param value The value for which to find a match in the array. If -/// value, or any of the values in the array, are not understood -/// by the comparator callback, the behavior is undefined. -/// @param comparator The function with the comparator function type -/// signature which is used in the binary search operation to -/// compare values in the array with the given value. If this -/// parameter is not a pointer to a function of the correct -/// prototype, the behavior is undefined. If there are values -/// in the range which the comparator function does not expect -/// or cannot properly compare, the behavior is undefined. -/// @param context A pointer-sized user-defined value, which is passed -/// as the third parameter to the comparator function, but is -/// otherwise unused by this function. If the context is not -/// what is expected by the comparator function, the behavior is -/// undefined. -/// @result The return value is either 1) the index of a value that -/// matched, if the target value matches one or more in the -/// range, 2) greater than or equal to the end point of the -/// range, if the value is greater than all the values in the -/// range, or 3) the index of the value greater than the target -/// value, if the value lies between two of (or less than all -/// of) the values in the range. -@ffi.Native< - CFIndex Function(CFArrayRef, CFRange, ffi.Pointer, - CFComparatorFunction, ffi.Pointer)>() -external int CFArrayBSearchValues( - CFArrayRef theArray, - CFRange range, - ffi.Pointer value, - CFComparatorFunction comparator, - ffi.Pointer context, -); - -/// ! -/// @function CFArrayAppendValue -/// Adds the value to the array giving it a new largest index. -/// @param theArray The array to which the value is to be added. If this -/// parameter is not a valid mutable CFArray, the behavior is -/// undefined. -/// @param value The value to add to the array. The value is retained by -/// the array using the retain callback provided when the array -/// was created. If the value is not of the sort expected by the -/// retain callback, the behavior is undefined. The value is -/// assigned to the index one larger than the previous largest -/// index, and the count of the array is increased by one. -@ffi.Native)>() -external void CFArrayAppendValue( - CFMutableArrayRef theArray, - ffi.Pointer value, -); - -/// ! -/// @function CFArrayInsertValueAtIndex -/// Adds the value to the array, giving it the given index. -/// @param theArray The array to which the value is to be added. If this -/// parameter is not a valid mutable CFArray, the behavior is -/// undefined. -/// @param idx The index to which to add the new value. If the index is -/// outside the index space of the array (0 to N inclusive, -/// where N is the count of the array before the operation), the -/// behavior is undefined. If the index is the same as N, this -/// function has the same effect as CFArrayAppendValue(). -/// @param value The value to add to the array. The value is retained by -/// the array using the retain callback provided when the array -/// was created. If the value is not of the sort expected by the -/// retain callback, the behavior is undefined. The value is -/// assigned to the given index, and all values with equal and -/// larger indices have their indexes increased by one. -@ffi.Native< - ffi.Void Function(CFMutableArrayRef, CFIndex, ffi.Pointer)>() -external void CFArrayInsertValueAtIndex( - CFMutableArrayRef theArray, - int idx, - ffi.Pointer value, -); - -/// ! -/// @function CFArraySetValueAtIndex -/// Changes the value with the given index in the array. -/// @param theArray The array in which the value is to be changed. If this -/// parameter is not a valid mutable CFArray, the behavior is -/// undefined. -/// @param idx The index to which to set the new value. If the index is -/// outside the index space of the array (0 to N inclusive, -/// where N is the count of the array before the operation), the -/// behavior is undefined. If the index is the same as N, this -/// function has the same effect as CFArrayAppendValue(). -/// @param value The value to set in the array. The value is retained by -/// the array using the retain callback provided when the array -/// was created, and the previous value with that index is -/// released. If the value is not of the sort expected by the -/// retain callback, the behavior is undefined. The indices of -/// other values is not affected. -@ffi.Native< - ffi.Void Function(CFMutableArrayRef, CFIndex, ffi.Pointer)>() -external void CFArraySetValueAtIndex( - CFMutableArrayRef theArray, - int idx, - ffi.Pointer value, -); - -/// ! -/// @function CFArrayRemoveValueAtIndex -/// Removes the value with the given index from the array. -/// @param theArray The array from which the value is to be removed. If -/// this parameter is not a valid mutable CFArray, the behavior -/// is undefined. -/// @param idx The index from which to remove the value. If the index is -/// outside the index space of the array (0 to N-1 inclusive, -/// where N is the count of the array before the operation), the -/// behavior is undefined. -@ffi.Native() -external void CFArrayRemoveValueAtIndex( - CFMutableArrayRef theArray, - int idx, -); - -/// ! -/// @function CFArrayRemoveAllValues -/// Removes all the values from the array, making it empty. -/// @param theArray The array from which all of the values are to be -/// removed. If this parameter is not a valid mutable CFArray, -/// the behavior is undefined. -@ffi.Native() -external void CFArrayRemoveAllValues( - CFMutableArrayRef theArray, -); - -/// ! -/// @function CFArrayReplaceValues -/// Replaces a range of values in the array. -/// @param theArray The array from which all of the values are to be -/// removed. If this parameter is not a valid mutable CFArray, -/// the behavior is undefined. -/// @param range The range of values within the array to replace. If the -/// range location or end point (defined by the location plus -/// length minus 1) is outside the index space of the array (0 -/// to N inclusive, where N is the count of the array), the -/// behavior is undefined. If the range length is negative, the -/// behavior is undefined. The range may be empty (length 0), -/// in which case the new values are merely inserted at the -/// range location. -/// @param newValues A C array of the pointer-sized values to be placed -/// into the array. The new values in the array are ordered in -/// the same order in which they appear in this C array. This -/// parameter may be NULL if the newCount parameter is 0. This -/// C array is not changed or freed by this function. If this -/// parameter is not a valid pointer to a C array of at least -/// newCount pointers, the behavior is undefined. -/// @param newCount The number of values to copy from the values C -/// array into the CFArray. If this parameter is different than -/// the range length, the excess newCount values will be -/// inserted after the range, or the excess range values will be -/// deleted. This parameter may be 0, in which case no new -/// values are replaced into the array and the values in the -/// range are simply removed. If this parameter is negative, or -/// greater than the number of values actually in the newValues -/// C array, the behavior is undefined. -@ffi.Native< - ffi.Void Function(CFMutableArrayRef, CFRange, - ffi.Pointer>, CFIndex)>() -external void CFArrayReplaceValues( - CFMutableArrayRef theArray, - CFRange range, - ffi.Pointer> newValues, - int newCount, -); - -/// ! -/// @function CFArrayExchangeValuesAtIndices -/// Exchanges the values at two indices of the array. -/// @param theArray The array of which the values are to be swapped. If -/// this parameter is not a valid mutable CFArray, the behavior -/// is undefined. -/// @param idx1 The first index whose values should be swapped. If the -/// index is outside the index space of the array (0 to N-1 -/// inclusive, where N is the count of the array before the -/// operation), the behavior is undefined. -/// @param idx2 The second index whose values should be swapped. If the -/// index is outside the index space of the array (0 to N-1 -/// inclusive, where N is the count of the array before the -/// operation), the behavior is undefined. -@ffi.Native() -external void CFArrayExchangeValuesAtIndices( - CFMutableArrayRef theArray, - int idx1, - int idx2, -); - -/// ! -/// @function CFArraySortValues -/// Sorts the values in the array using the given comparison function. -/// @param theArray The array whose values are to be sorted. If this -/// parameter is not a valid mutable CFArray, the behavior is -/// undefined. -/// @param range The range of values within the array to sort. If the -/// range location or end point (defined by the location plus -/// length minus 1) is outside the index space of the array (0 -/// to N-1 inclusive, where N is the count of the array), the -/// behavior is undefined. If the range length is negative, the -/// behavior is undefined. The range may be empty (length 0). -/// @param comparator The function with the comparator function type -/// signature which is used in the sort operation to compare -/// values in the array with the given value. If this parameter -/// is not a pointer to a function of the correct prototype, the -/// the behavior is undefined. If there are values in the array -/// which the comparator function does not expect or cannot -/// properly compare, the behavior is undefined. The values in -/// the range are sorted from least to greatest according to -/// this function. -/// @param context A pointer-sized user-defined value, which is passed -/// as the third parameter to the comparator function, but is -/// otherwise unused by this function. If the context is not -/// what is expected by the comparator function, the behavior is -/// undefined. -@ffi.Native< - ffi.Void Function(CFMutableArrayRef, CFRange, CFComparatorFunction, - ffi.Pointer)>() -external void CFArraySortValues( - CFMutableArrayRef theArray, - CFRange range, - CFComparatorFunction comparator, - ffi.Pointer context, -); - -/// ! -/// @function CFArrayAppendArray -/// Adds the values from an array to another array. -/// @param theArray The array to which values from the otherArray are to -/// be added. If this parameter is not a valid mutable CFArray, -/// the behavior is undefined. -/// @param otherArray The array providing the values to be added to the -/// array. If this parameter is not a valid CFArray, the -/// behavior is undefined. -/// @param otherRange The range within the otherArray from which to add -/// the values to the array. If the range location or end point -/// (defined by the location plus length minus 1) is outside -/// the index space of the otherArray (0 to N-1 inclusive, where -/// N is the count of the otherArray), the behavior is -/// undefined. The new values are retained by the array using -/// the retain callback provided when the array was created. If -/// the values are not of the sort expected by the retain -/// callback, the behavior is undefined. The values are assigned -/// to the indices one larger than the previous largest index -/// in the array, and beyond, and the count of the array is -/// increased by range.length. The values are assigned new -/// indices in the array from smallest to largest index in the -/// order in which they appear in the otherArray. -@ffi.Native() -external void CFArrayAppendArray( - CFMutableArrayRef theArray, - CFArrayRef otherArray, - CFRange otherRange, -); - -@ffi.Native() -external int CFDataGetTypeID(); - @ffi.Native< CFDataRef Function( CFAllocatorRef, ffi.Pointer, CFIndex)>() @@ -1300,18 +652,6 @@ external ffi.Pointer CFDataGetBytePtr( CFDataRef theData, ); -/// ! -/// @function CFCharacterSetGetTypeID -/// Returns the type identifier of all CFCharacterSet instances. -@ffi.Native() -external int CFCharacterSetGetTypeID(); - -@ffi.Native() -external int CFNotificationCenterGetTypeID(); - -@ffi.Native() -external int CFLocaleGetTypeID(); - /// Returns the display name for the given value. The key tells what /// the value is, and is one of the usual locale property keys, though /// not all locale property keys have values with display name values. @@ -1420,12 +760,6 @@ external final CFCalendarIdentifier kCFIslamicTabularCalendar; @ffi.Native() external final CFCalendarIdentifier kCFIslamicUmmAlQuraCalendar; -/// ! -/// @function CFErrorGetTypeID -/// Returns the type identifier of all CFError instances. -@ffi.Native() -external int CFErrorGetTypeID(); - /// Predefined domains; value of "code" will correspond to preexisting values in these domains. @ffi.Native() external final CFErrorDomain kCFErrorDomainPOSIX; @@ -1471,10 +805,6 @@ external final CFStringRef kCFErrorURLKey; @ffi.Native() external final CFStringRef kCFErrorFilePathKey; -/// CFString type ID -@ffi.Native() -external int CFStringGetTypeID(); - @ffi.Native< CFStringRef Function( CFAllocatorRef, ffi.Pointer, CFStringEncoding)>() @@ -1563,8 +893,6 @@ external final CFStringRef kCFStringTransformStripDiacritics; typedef CFIndex = ffi.Long; typedef DartCFIndex = int; -typedef CFTypeID = ffi.UnsignedLong; -typedef DartCFTypeID = int; /// Null representant typedef CFNullRef = ffi.Pointer<__CFNull>; @@ -1691,6 +1019,9 @@ final class CFDictionaryValueCallBacks extends ffi.Struct { external CFDictionaryEqualCallBack equal; } +typedef CFTypeID = ffi.UnsignedLong; +typedef DartCFTypeID = int; + /// ! /// @typedef CFDictionaryRef /// This is the type of a reference to immutable CFDictionarys. @@ -1776,56 +1107,6 @@ typedef CFArrayEqualCallBackFunction = ffi.UnsignedChar Function( ffi.Pointer value1, ffi.Pointer value2); typedef DartCFArrayEqualCallBackFunction = int Function( ffi.Pointer value1, ffi.Pointer value2); - -/// ! -/// @typedef CFArrayRef -/// This is the type of a reference to immutable CFArrays. -typedef CFArrayRef = ffi.Pointer; - -final class CFArray extends ffi.Opaque {} - -/// ! -/// @typedef CFMutableArrayRef -/// This is the type of a reference to mutable CFArrays. -typedef CFMutableArrayRef = ffi.Pointer; - -/// Range type -final class CFRange extends ffi.Struct { - @CFIndex() - external int location; - - @CFIndex() - external int length; -} - -/// ! -/// @typedef CFArrayApplierFunction -/// Type of the callback function used by the apply functions of -/// CFArrays. -/// @param value The current value from the array. -/// @param context The user-defined context parameter given to the apply -/// function. -typedef CFArrayApplierFunction - = ffi.Pointer>; -typedef CFArrayApplierFunctionFunction = ffi.Void Function( - ffi.Pointer value, ffi.Pointer context); -typedef DartCFArrayApplierFunctionFunction = void Function( - ffi.Pointer value, ffi.Pointer context); - -/// A standard comparison function -typedef CFComparatorFunction - = ffi.Pointer>; -typedef CFComparatorFunctionFunction = CFComparisonResult Function( - ffi.Pointer val1, - ffi.Pointer val2, - ffi.Pointer context); -typedef DartCFComparatorFunctionFunction = DartCFIndex Function( - ffi.Pointer val1, - ffi.Pointer val2, - ffi.Pointer context); - -/// Values returned from comparison functions -typedef CFComparisonResult = CFIndex; typedef CFDataRef = ffi.Pointer; final class CFData extends ffi.Opaque {} diff --git a/packages/celest_core/lib/src/native/darwin/darwin_ffi_helpers.dart b/packages/celest_core/lib/src/native/darwin/darwin_ffi_helpers.dart index 433c4024..0dba85e6 100644 --- a/packages/celest_core/lib/src/native/darwin/darwin_ffi_helpers.dart +++ b/packages/celest_core/lib/src/native/darwin/darwin_ffi_helpers.dart @@ -9,7 +9,7 @@ extension StringToCFString on String { Pointer toCFString(Arena arena) { final str = toNativeUtf8(allocator: arena); final cfStr = CFStringCreateWithCString( - nullptr, // default allocator + kCFAllocatorDefault, str.cast(), kCFStringEncodingUTF8, ); @@ -23,7 +23,7 @@ extension StringToCFString on String { Pointer toCFData(Arena arena) { final data = toNativeUtf8(allocator: arena); final cfData = CFDataCreate( - nullptr, // default allocator + kCFAllocatorDefault, data.cast(), data.length, ); @@ -112,22 +112,3 @@ extension CFStringRefToString on CFStringRef { } } } - -extension CFArrayToList on CFArrayRef { - /// Converts `this` to a [List]. - List toList() { - if (this == nullptr) { - return const []; - } - final length = CFArrayGetCount(this); - if (length == 0) { - return const []; - } - final list = []; - for (var i = 0; i < length; i++) { - final value = CFArrayGetValueAtIndex(this, i); - list.add(value); - } - return list; - } -} diff --git a/packages/celest_core/lib/src/native/darwin/security.ffi.dart b/packages/celest_core/lib/src/native/darwin/security.ffi.dart index 5693f1f3..745e0c8c 100644 --- a/packages/celest_core/lib/src/native/darwin/security.ffi.dart +++ b/packages/celest_core/lib/src/native/darwin/security.ffi.dart @@ -1745,8 +1745,6 @@ final class __CFNull extends ffi.Opaque {} final class __CFAllocator extends ffi.Opaque {} -final class SecKeychainItem extends ffi.Opaque {} - final class __CFBoolean extends ffi.Opaque {} final class __CFNumber extends ffi.Opaque {} @@ -1852,7 +1850,9 @@ final class CFDictionaryValueCallBacks extends ffi.Struct { /// ! /// @typedef SecKeychainItemRef /// @abstract Contains information about a keychain item. -typedef SecKeychainItemRef = ffi.Pointer; +typedef SecKeychainItemRef = ffi.Pointer<__SecKeychainItem>; + +final class __SecKeychainItem extends ffi.Opaque {} /// ! /// @typedef SecKeychainAttributeList