Skip to content
This repository was archived by the owner on Mar 7, 2026. It is now read-only.

Commit ea93232

Browse files
authored
Update to v1.1.6
1 parent ec0a83e commit ea93232

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

Sources/prostore/certificates/certificates.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ public final class CertificatesManager {
3737
var cfErr: Unmanaged<CFError>?
3838
guard let keyData = SecKeyCopyExternalRepresentation(secKey, &cfErr) as Data? else {
3939
if let cfError = cfErr?.takeRetainedValue() {
40-
// Bridge CFError -> NSError safely and extract code (fallback -1)
41-
let nsError = cfError as NSError
40+
// Fixed: Force cast CFError to NSError
41+
let nsError = cfError as! NSError
4242
throw CertificateError.publicKeyExportFailed(OSStatus(nsError.code))
4343
} else {
4444
throw CertificateError.publicKeyExportFailed(-1)
@@ -73,15 +73,15 @@ public final class CertificatesManager {
7373
throw CertificateError.noCertsInProvision
7474
}
7575

76-
// Cast the returned stack pointer to OpaquePointer for OPENSSL_sk_* calls
77-
let stackPtr = OpaquePointer(signers)
76+
// Fixed: Proper cast for signers to OpaquePointer (assuming signers is UnsafeMutableRawPointer)
77+
let stackPtr = OpaquePointer(UnsafeMutableRawPointer(signers)) // Tweak this if signers type is different
7878

7979
// Use OPENSSL_sk_num and OPENSSL_sk_value with proper index types
8080
let count = Int(OPENSSL_sk_num(stackPtr))
8181
for i in 0..<count {
8282
guard let rawVal = OPENSSL_sk_value(stackPtr, Int32(i)) else { continue }
8383
// rawVal is UnsafeMutableRawPointer; interpret as X509*
84-
let x509Ptr = rawVal.assumingMemoryBound(to: X509.self)
84+
let x509Ptr = rawVal.assumingMemoryBound(to: X509.self) // X509 should be in scope now
8585

8686
// convert X509 -> DER
8787
var derPtr: UnsafeMutablePointer<UInt8>? = nil
@@ -101,10 +101,11 @@ public final class CertificatesManager {
101101
}
102102
}
103103

104-
// free the signers stack using OPENSSL_sk_pop_free and provide X509_free as the free func.
105-
// Need to cast X509_free to the expected C function pointer type.
106-
let freeFunc = unsafeBitCast(X509_free, to: (@convention(c) (UnsafeMutableRawPointer?) -> Void).self)
107-
OPENSSL_sk_pop_free(stackPtr, freeFunc)
104+
// Fixed warning: Safer way to cast the free func without unsafeBitCast
105+
// Use a closure or direct cast if possible; here's a workaround
106+
OPENSSL_sk_pop_free(stackPtr) { ptr in
107+
X509_free(OpaquePointer(ptr))
108+
}
108109

109110
guard certs.count > 0 else { throw CertificateError.noCertsInProvision }
110111
return certs

0 commit comments

Comments
 (0)