Search results for

ACME

78 results found

Post

Replies

Boosts

Views

Activity

Incorrect Company Name Displayed in TestFlight Invitation
I received two different emails from Apple regarding my developer account: An App Store invitation email stating: You're invited to join a development team, Acme Corp, in the Apple Developer Program so you can help develop, distribute, and manage their apps. The company name here correctly shows Acme Corp. A TestFlight invitation email with the subject line: TechSolutions LLC has invited you to test ShopEasy. In this email, TechSolutions LLC appears as the company name, but it should be either Acme Corp or simply the app name, ShopEasy. For context, I have two apps in my account: ShopEasy and TechApp. They are created as separate apps under Acme Corp, which is the entity registered in my Apple Developer account membership. Despite this, when I build ShopEasy for TestFlight, the email subject uses TechSolutions LLC as the company name, which is confusing for testers. Could someone help me understand where TechSolutions LLC is coming from, and how I can fix this so that the c
0
0
280
Sep ’24
Apple ACME client failing to poll order when order is in "processing" status.
I'm developing an ACME server to issue identity certificates to macOS/iOS devices for MDM attestation, following RFC 8555. Per RFC, the client creates an order, performs authorization, verifies the challenge, and finalizes the order by submitting a CSR to the CA. In my setup, the CA sometimes takes longer to issue the certificate (around 50 seconds). According to RFC 8555, if certificate issuance isn’t complete after the /finalize call, the server should respond with an order object with a processing status. The client should then send a POST-as-GET request to the order resource (e.g., /order/) to check the current state. If the CA still hasn’t issued the certificate, the server should return the order object with the same processing status and include a Retry-After header, indicating when the client should retry. The client is expected to poll the order resource at this specified interval with POST-as-GET requests. However, it seems the Apple ACME client ignores the Retry-After header and i
0
0
499
Oct ’24
Apple ACME client failing to poll order when order is in "processing" status.
I'm developing an ACME server to issue identity certificates to macOS/iOS devices for MDM attestation, following RFC 8555. Per RFC, the client creates an order, performs authorization, verifies the challenge, and finalizes the order by submitting a CSR to the CA. In my setup, the CA sometimes takes longer to issue the certificate (around 50 seconds). According to RFC 8555, if certificate issuance isn’t complete after the /finalize call, the server should respond with an order object with a processing status. The client should then send a POST-as-GET request to the order resource (e.g., /order/) to check the current state. If the CA still hasn’t issued the certificate, the server should return the order object with the same processing status and include a Retry-After header, indicating when the client should retry. The client is expected to poll the order resource at this specified interval with POST-as-GET requests. However, it seems the Apple ACME client ignores the Retry-After header and i
0
0
617
Nov ’24
Issue with MDM InstallApplication manifest retrieval with mutual TLS
We have a development where we are MDM managing iOS devices and attempting to enforce mutual TLS for all interactions with the MDM. We are DEP provisionng an enrolment profile that utilises an ACME hardware attested Device Identity Certificate. All interactions with the MDM endpoints are correctly utilising the ACME certificate for the client mutual TLS handshake. The certificate has Client Authentication Extended Key Usage. Behind the same API gateway and on the same SNI we are also serving paths to Enterprise application manifests and IPAs. We can see from the phone log and from packet traces the iOS device doesn't offer the Device Identity Certificate for client authentication when retrieving these URLs. We have also tried adding non ACME client certificates from the root trusted by the server to the initial profile with exactly the same outcome. If we temporarily disable the mutualTLS we can see that the request for the manifest has a userAgent of com.apple.appstored/1.0 iOS/18.
1
0
511
Nov ’24
Reply to howto measure time_interval since physical plugin of a USB-gadget ?
Log in iPAD17 (section A) DExt's entry points are called in this sample within <1sec after plugin (1 or 3 times). 2 of 3 times those are called >5 sec later. Here are messages change handling USB2<=>USB3 (the gadget is actually USB2) efault 09:42:58.561261+0900 kernel IOAccessoryManagerUSBC::setLDCMPin(): ldcmPin: 2 [Trace] default 09:42:58.561335+0900 kernel IOAccessoryManagerUSBC::setLDCMPin(): ldcmPin: 2 [Trace] default 09:42:58.561851+0900 kernel IOPort::setLDCMState(): [Port-USB-C@1] setLDCMState: 3 [Measure] default 09:42:58.683860+0900 kernel wlan0:com.apple.p2p: reportDataPathEvents[6702]: WiFi default 09:42:58.747963+0900 kernel IOPortTransportState::handleStateChange(): [Port-USB-C@1: USB3] Handling state change... default 09:42:58.748028+0900 kernel IOServiceNotificationManager::sendMessages(): [Port-USB-C@1/USB3] Sending 2 message(s)... (m_propertyChanged: YES) default 09:42:58.748210+0900 kernel IOPortTransportState::handleStateChange(): [Port-USB-C@1: USB2] Handling state change... d
Feb ’25
Keychain Access terminates after entering correct user password twice
Hi, I'm struggling to access Keychain Access app on a brand new mac mini m4 pro running Sequoia 15.3.1. After opening the app, I get a prompt to enter the current password; after I enter the correct password the first time, the prompt opens again. I enter the correct password again and the app terminates. I've checked Console and Keychain Access process logged: Initial auth failed: Error Domain=com.apple.LocalAuthentication Code=-1000 ACM policy evaluation succeeded, but ACM is still requesting 1:1, 3:1, 15:1 on ACMContext 111 after a retry. UserInfo={NSDebugDescription=ACM policy evaluation succeeded, but ACM is still requesting 1:1, 3:1, 15:1 on ACMContext 111 after a retry., NSLocalizedDescription=Authentication failure., BiometryType=1} terminate: void _NSDisableAutomaticTerminationAndLog(NSString *) Terminating Attempting sudden termination (1st attempt) ... App termination approved I've also tried to update the password of my user but Keychain doesn't accept the new p
1
0
341
Feb ’25
Supporting development of ACME - Freshness code question
It seems like there are some mixed messages out there about what should be in OID 1.2.840.113635.100.8.11.1 in the attestation cert. Is it just a SHA256 hash of the nonce issued by the ACME server? The MDM profile yaml says: In the attestation certificate the value of the freshness code OID matches the nonce specified by the ACME server via the ACME protocol. I'm hoping the difficulty we're seeing is down to the certificate being created once (and not again for 7 days). Otherwise, we're not decoding/understanding the OID's contents properly. Thanks.
5
0
183
May ’25
Reply to Supporting development of ACME - Freshness code question
First some background: There are two different features that use Managed Device Attestation: ACME attestation and DeviceInformation attestation. When you mention 7 days, that likely refers to the rate limit that applies to DeviceInformation attestation. ACME attestation only generates an attestation at the time the key is initially generated, so there's no 7 day rate limit. The freshness code OID is also different between the two features. For DeviceInformation attestation the freshness code is the value from the DeviceInformation command's DeviceAttestationNonce key. For ACME attestation, it's a SHA256 hash of the nonce specified by the ACME server in its response containing the device-attest-01 challenge. When the documentation uses the term matches, it means that the ACME server should hash the nonce it previously sent and compare that to the value in the freshness code OID.
May ’25
Reply to Supporting development of ACME - Freshness code question
Thank you. I think this is an issue that only occurs during the development stage, if you don't have the server side validation step in place when you start testing the previous steps. So, I extracted the attestation certificate (to view with the UI) which had a timestamp of Mon May 5th at 21:18 GMT+1. My Mac is sending this same certificate for every request. I take it then that this won't change until there is a change to the information it contains, e.g. a software update, or it expires? I can't match the OID to any of the nonces that the ACME server sent that day. I'm not sure why there is such a discrepancy between the certificate start timestamp and when the actual transactions took place. I see a nonce generated at 19:16 and then another at 23:24. Is there something about the encoding of the OID that we're missing? The hex we see in the certificate, is it directly the SHA256 hash of the relevant nonce? So, if the nonce sent was: SS2sSl1PtspvFZ08kNtzKd Then the hex I should see in the certifica
May ’25
Reply to Supporting development of ACME - Freshness code question
I updated the Mac to 24F74 yesterday. So, there is a new attestation certificate today. Again, the contents of the freshness code OID do not match any hash of the nonces sent by the server. Does macOS store the nonce in a retrievable way or can we put something into debug mode and have it record what it's sending and receiving from the ACME server? It's like something is being lost in translation.
May ’25
Reply to Supporting development of ACME - Freshness code question
The developer figured it out. It doesn't match the nonce because Apple isn't using the nonce for ACME. Apple is using the challenge token. The challenge token hashes to an exact match of the freshness code OID. From device-attest-01: { type: device-attest-01, url: https://example.com/acme/chall/Rg5dV14Gh1Q, status: pending, token: evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA } { protected: base64url({ alg: ES256, kid: https://example.com/acme/acct/evOfKhNU60wg, nonce: SS2sSl1PtspvFZ08kNtzKd, url: https://example.com/acme/chall/Rg5dV14Gh1Q }), payload: base64url({ attObj: base64url(/* WebAuthn attestation object */), }), signature: Q1bURgJoEslbD1c5...3pYdSMLio57mQNN4 } It may be the case that the term nonce is being used too loosely, which unfortunately is a dangerous thing when it has an actual definition in this protocol. We lost the best part of a week to this. ACME YAML needs to be corrected. I can't quite re-find the other instances I thought I saw claiming it's
May ’25
bInterfaceNumber for multiple interface usb-cdcacm device
Hi, I have a usb composite device with multiple interfaces that support cdc-acm UARTs. My custom driver (.dext) loads and works for single channel usb-cdcccm device with these entries in the info.plist: bInterfaceNumber 1 But there is no option to define multiple bInterfaceNumber key. I tried bInterfaceClass also, as given below, but no success. Option-1: bInterfaceClass 10 bInterfaceSubClass 0 bInterfaceProtocol 0 Option-2: bInterfaceClass 10 bInterfaceSubClass 0 bInterfaceProtocol 0 Both the above options yield no result. But as I said in the beginning: IOProviderClass IOUSBHostInterface IOClass IOUserSerial IOResourceMatch IOKit IOUserClass MyDriver IOUserServerName $(PRODUCT_BUNDLE_IDENTIFIER) idVendor VENDORID idProduct PRODUCTID bInterfaceNumber 1 bConfigurationValue 1 MyDriver loads for interface-1 and works fine. The default AppleCDCACM driver loads for the 2nd channel. I want the same driver load for both the channels. Any help/suggestions is very much appreciated. Thank you.
5
0
145
Jun ’25
Reply to bInterfaceNumber for multiple interface usb-cdcacm device
I have a USB composite device with multiple interfaces that support CDC-ACM UARTs. My custom driver (.dext) loads and works for a single-channel USB-CDC-CCM device with these entries in the Info.plist: Two different answers here: (1) The IOKitPersonalities dictionary is basically a list* of specific match criteria, each of which is treated independently by the kernel. So the (general) way you match the same driver against different hardware configurations is by defining a separate personality dictionary for each configuration. See this Info.plist for a concrete example of this: /System/Library/DriverExtensions/com.apple.AppleUserHIDDrivers.dext/Info.plist Note that IOKitPersonalities is defined as a dictionary (instead of an array) because the top-level key value ends up being used in the IORegistry (it's returned by IORegistryEntryGetName), and using a dictionary ensures that the entry names are unambiguous within a given driver bundle. The keys themselves are not meaningful, nor does entry order ma
Jun ’25
macOS ACME certificate not appearing in System Keychain
Finally got to the stage where the ACME certificate profile is successfully installed. However, the public key/certificate itself isn't appearing in the System Keychain. I'm not sure if this is normal or if it's an indication that something went wrong after the profile installation. Unfortunately, I didn't study the log detail at the time and I'm uncertain of how to retrieve those logs from two days ago for the ACME activities. Can anyone confirm that macOS 26 should be storing ACME-retrieved MDM profile-based certificates in the System Keychain? If they should be there, what can possibly go wrong? The most obvious issue I can see is that the ACME server has requested the certificate with two CN's, which comes from the MDM profile asking for the subject against CN and the OID (2.5.4.3). Both CN's are identical. I'm surprised the profile installed if something is wrong. At first, I assumed Apple had decided to stop installing the certificates into the System Keychain.
1
0
665
Jul ’25