Snippets

Oskari Timperi pyobjc and AuthorizationCreate

Created by Oskari Timperi
import objc
from Foundation import NSBundle

AuthorizationRef = objc.createOpaquePointerType('AuthorizationRef', b'^{Authorization=}', None)

AuthorizationItem = objc.createStructType('AuthorizationItem', b'{AuthorizationItem=*Q^vI}', ('name', 'valueLength', 'value', 'flags'))
objc.createStructAlias("AuthorizationItem", b"{AuthorizationItem}", AuthorizationItem)

AuthorizationItemSet = objc.createStructType('AuthorizationItemSet', b'{AuthorizationItemSet=I^{AuthorizationItem=*Q^vI}}', ('count', 'items'))
objc.createStructAlias("AuthorizationItemSet", b"{AuthorizationItemSet}", AuthorizationItemSet)

Security = NSBundle.bundleWithIdentifier_("com.apple.security")

functions = [
    ('AuthorizationCreate', b'Irn^{AuthorizationItemSet}rn^{AuthorizationItemSet}Io^^{Authorization}'),
    # ('AuthorizationCopyRights', b'I^{Authorization}r^{AuthorizationItemSet}r^{AuthorizationItemSet}Io^^{AuthorizationItemSet}')
]

objc.loadBundleFunctions(Security, globals(), functions)

kAuthorizationFlagDefaults              =  0
kAuthorizationFlagInteractionAllowed    = (1 << 0)
kAuthorizationFlagExtendRights          = (1 << 1)
kAuthorizationFlagPartialRights         = (1 << 2)
kAuthorizationFlagDestroyRights         = (1 << 3)
kAuthorizationFlagPreAuthorize          = (1 << 4)

flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagExtendRights

right = AuthorizationItem()
right.name = b'system.services.systemconfiguration.network'

rights = AuthorizationItemSet()
rights.count = 1
rights.items = right

status, authref = AuthorizationCreate(rights, objc.NULL, 0, None)

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.