Seld

From iPhone Development Wiki
Jump to: navigation, search

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