Hello,
I have a max os application that is supposed to copy files into /Library/Application Support folder.
I found a piece of code that performs the authorization with authentication and even creates the rights successfully.
Right after I try to perform a priviledged operation like creating a directory in /Library/Application Support folder.
I get a no permission error 513. How do I use the authorization I created. Seems like my case suits self-restricted application authorization. But I'm missing something there. Will appreciate your help. Here is the code I use to gainAccess:
Thanks in advance
privatefunc gainPermissions() {
var authorizationRef: AuthorizationRef? = nil
var authItem = AuthorizationItem(name: "xmpie.com.XMPieInstaller.filesRight", valueLength: 0, value: nil, flags: 0)
var authRights = AuthorizationRights(count: 1, items: &authItem)
let flags: AuthorizationFlags = [.interactionAllowed, .preAuthorize, .extendRights]
var authStatus = AuthorizationCreate(&authRights, nil, flags, &authorizationRef)
guard let authRef = authorizationRef else {
NSLog("Failed to get authorization! \(authStatus) - \(String(authStatus: authStatus))")
return
}
authStatus = AuthorizationCopyRights(authRef, &authRights, nil, flags, nil)
NSLog("Auth status #\(authStatus) - \(String(authStatus: authStatus))")
let paths = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .localDomainMask, true)
if paths.count != 0 {
let resolvedPath = paths[0] as NSString
let resolvedPath1 = resolvedPath.appendingPathComponent("XMPieTest")
do {
try FileManager.default.createDirectory(atPath: resolvedPath1, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
print(error.localizedDescription);
}