- Create an enrollment object (
e2ei_new_enrollment). - Drive the ACME challenge steps through
wire_e2e_identityhelpers. - Present the signed certificate chain to CoreCrypto (
e2ei_mls_init_onlyorsave_x509_credential).
Enrollment
e2ei_new_enrollment
E2eiEnrollment instance with freshly generated private key material. The enrollment object is used to drive the ACME challenge flow and must not be shared across threads.
The Wire-qualified client identifier, e.g.
b7ac11a4-8f01-4527-af88-1c30885a7931:6add501bacd1d90e@example.com.Human-readable display name shown in the UI, e.g.
Smith, Alice M (QA).User handle, e.g.
alice.smith.qa@example.com.Optional team name for the Wire team the user belongs to.
Requested certificate lifetime in seconds. The ACME server may issue a shorter lifetime.
Ciphersuite that determines the signature algorithm for the certificate.
An enrollment session object. Drive the ACME flow using its methods, then pass it to
save_x509_credential or e2ei_mls_init_only.e2ei_mls_init_only
mls_init into one call.
A completed enrollment object (ACME flow finished).
The PEM-encoded certificate chain returned by the ACME server’s
/certificate endpoint.The delivery service transport to attach to the new MLS session.
A reference to the newly created X.509 credential.
CRL distribution points extracted from the certificate chain. Fetch and register these with
e2ei_register_crl.save_x509_credential
- Call
guard.set_credential_by_ref(&new_cred_ref)on every conversation. - Generate new key packages with
generate_keypackage. - Upload the new key packages to the DS and delete the old ones.
- Call
remove_credentialon the old credential.
A completed enrollment object.
PEM-encoded certificate chain from the ACME server.
A reference to the new credential.
New CRL distribution points that should be registered.
PKI environment
e2ei_is_enabled
true if the current MLS session uses an X.509 credential for the given ciphersuite.
The ciphersuite to check.
true when E2EI is active for this ciphersuite.Conversation state
e2ei_conversation_state
See
E2eiConversationState below.e2ei_verify_group_state
VerifiableGroupInfo using hardened sender-mode ratchet tree verification. Used to assess the E2EI state before joining a group.
E2eiConversationState
All current group members hold a valid, unexpired X.509 E2EI certificate. The conversation displays the verified shield.
At least one member has a Basic credential or an expired X.509 certificate. The conversation is degraded. If all X.509 certificates are expired, this state is returned instead of
NotEnabled.All members are using Basic credentials. E2EI has not been turned on in this conversation.
Identity queries
get_device_identities
x509_identity field will be None.
Non-empty list of client IDs to query. Returns an error if the list is empty.
One
WireIdentity per matching member. See WireIdentity below.get_user_identities
Non-empty list of Wire user IDs (UUID strings). Returns an error if the list is empty.
Keyed by user ID string. Only users with at least one matching device in the group appear in the map.
WireIdentity
Unique device identifier in Wire qualified format, e.g.
T4Coy4vdRzianwfOgXpn6A:6add501bacd1d90e@whitehouse.gov.MLS thumbprint of the client’s credential (hex-encoded hash of the public key).
Verification status of the device credential at the time of the query. See
DeviceStatus.Basic or X509.Present only for X.509 credentials. Contains the verified identity claims from the certificate.
DeviceStatus
The device’s X.509 certificate is valid and has not been revoked.
The certificate’s
NotAfter date is in the past.The certificate appears in a CRL that has been registered with the PKI environment.
CRL registration helpers
CRL distribution points are discovered when new X.509 credentials are added to the group (via commits, welcomes, or enrollment). TheNewCrlDistributionPoints value returned by enrollment and commit operations contains URLs that your application must fetch and register.