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