Seld
From iPhone Development Wiki
This is the "Secure Element Daemon" used to communicate with the secure element hardware on the device. It is interacted with the nfcd daemon using XPC.
SELD plist:
{ EnablePressuredExit = 1; EnableTransactions = 1; ExitTimeOut = 40; Label = "com.apple.seld"; MachServices = { "com.apple.seld" = 1; "com.apple.seld.aps" = 1; }; Program = "/usr/libexec/seld"; RunAtLoad = 1; UserName = mobile; }
ApplePay personalization is performed using EMV BER-TLV commands to the secure element.
Major objects in the seld binary are:
- NFSecureElement(CertificateAuthority)
- SEDaemon
- NFSecureElement(ISO7816)
- NFSecureElement
- NFSecureElement(ContactlessRegistry)
- NFSecureElementCache
- NFSecureElementRemoteAdminAgent
- NFSecureElementRemoteAdminRequest
- NFSecureElementRemoteAdminRegistry
- NFResponseAPDU
- NFCardManagerAgent
- NFCardManagerAgent_XPC
NFCardManagerAgent Supported XPC Commands
| ID | Command | Object |
|---|---|---|
| 0x0 - 0x8 | throw "unknown command" error | ??? |
| 0x10 | [NFCardAgentManager getInfoCache] | ?? |
| 0x11 | [NFCardManagerAgent signChallenge:callback:] | raw challenge data |
| 0x12 | [NFCardManagerAgent authorize:callback:] | dict{Authtype=??, SSEHandle=??} |
| 0x13 | [NFCardManagerAgent deauthorize] | ??? |
| 0x14 | [NFCardManagerAgent getApplications:] | ??? |
| 0x15 | [NFCardManagerAgent asActive:checkCache:callback:] | ??? |
| 0x16 | [NFCardManagerAgent markAllApplicationsForDelete] | ??? |
| 0x17 | [NFCardManagerAgent getActiveApplications:] | ??? |
| 0x18 | [NFCardManagerAgent getRestrictedMode:] | ??? |
| 0x19-0x89 | throw unknown command error | N/A |
| 0x90 | call [NFCardManagerAgent dumpAppData:callback:] | ??? |
| 0x91 | call [NFCardManagerAgent dumpRestrictedModeLogWithCallBack:] | ??? |
| >0x91 | throw unknown command error | N/A |
SEDaemon Supported XPC Commands
| ID | Command | Object |
|---|---|---|
| <0x20 | [NFCardManagerApplet XPCConnection:didReceiveCommand] | raw challenge data |
| 0x20 | [SEDaemon setDbgURL: | dict{Authtype=??, SSEHandle=??} |
| 0x21 | [SEDaemon getStateInfo] | ??? |
| 0x22 | [SEDaemon getNextPushInfo] | ??? |
| 0x23 | ??? | ??? |
| 0x24 | [SEDaemon pushTopicList:] | ??? |
| 0x25 | [SEDaemon isWiredModeAvailable:] | ??? |
| 0x26 | updateRegionalRegistrationData | ??? |
| 0x27 | [SEDaemon sharedRegistry] | ??? |
| 0x30 | register event listenter | ??? |
| 0x31 | something else for event listening? | ??? |
| >0x31 | [NFCardManagerApplet XPCConnection:didReceiveCommand] | ??? |
NFCardManagerAgent_XPC Supported XPC Commands
| ID | Command | Object |
|---|---|---|
| 0x0 - 0x8 | throw "unknown command" error | ??? |
| 0x10 | [NFCardAgentManager getInfoCache] | ?? |
| 0x11 | [NFCardManagerAgent signChallenge:callback:] | raw challenge data |
| 0x12 | [NFCardManagerAgent authorize:callback:] | dict{Authtype=??, SSEHandle=??} |
| 0x13 | [NFCardManagerAgent deauthorize] | ??? |
| 0x14 | [NFCardManagerAgent getApplications:] | ??? |
| 0x15 | [NFCardManagerAgent asActive:checkCache:callback:] | ??? |
| 0x16 | [NFCardManagerAgent markAllApplicationsForDelete] | ??? |
| 0x17 | [NFCardManagerAgent getActiveApplications:] | ??? |
| 0x18 | [NFCardManagerAgent getRestrictedMode:] | ??? |
| 0x19-0x89 | throw unknown command error | N/A |
| 0x90 | call [NFCardManagerAgent dumpAppData:callback:] | ??? |
| 0x91 | call [NFCardManagerAgent dumpRestrictedModeLogWithCallBack:] | ??? |
| >0x91 | throw unknown command error | N/A |