Add ACMECertificate
payload handling with Device Attestation
#10
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds support for handling the
ACMECertificate
payload.Currently always requires configuration for the (fake) attestation CA to be supplied:
Example ACMECertificate configuration, with attestation enabled (dropdown):
The example
ACMECertificate
payload is configured to connect to a step-ca instance. Its configuration should be similar to what's described in hslatman/ios-acme-simulator.Changes in jessepeterson/cfgprofiles#2 need to be merged first for the
com.apple.security.acme
payload type to be recognized.In its current state, some ACME flow details will be logged. I can remove that if requested, or change it so that log output is only shown when requested. I noticed #1, so maybe that needs to be taken into account for that.
The (fake) attestation CA configuration is currently always required when trying the
ACMECertificate
payload, because there's no other way for the Apple ACME client to prove control over ACME identifiers. @jessepeterson Configuration of the (fake) attestation CA is done through flags (without fallback). They're only required for theACMECertificate
payload and the (fake) attestation CA is injected through acontext.Context
. Are you OK with that approach, or would you like it to be passed around as a property ofDevice
(similar to the DB instance) instead? I noticed #2, for which I think thecontext
approach might help to a certain extent.