Repository navigation
Pair with plain-key app credentials - #16
Merged
Merged
Conversation
On a fresh pair, select an RoundWhiteDiscKit AppIdentity from the NFC patch info and run the first-pair handshake with it: its certificate, a random ephemeral, kAuth from plain ECDH, and standard AES for Phase 5/6. If the sensor refuses it, try the remaining identities, then fall back to the whitebox, all within the same NFC scan. The identities blob is downloaded from Arweave like the runtime tables; if it can't be fetched, pairing logs why and uses the whitebox. The Keychain record gains a v4 form carrying the identity label, so a cached reconnect uses the cipher that matches how its kAuth was made. For field reports: - Selection is logged with the raw patch info, and every rejection is logged. A certificate the sensor won't accept shows up as a disconnect right after SendCertificateLoadDone and is reported as such. Pairing on an identity other than the one selected is logged as GUESS WRONG. - Device-log lines from a first-time pair, made before Loop adopts the manager, are held and flushed when the delegate arrives instead of being dropped. Lines mentioning a rejection are logged as errors. - The Issue Report shows pairedWith, appIdentitiesInstalled and appIdentityPairingEnabled. The tables downloader becomes a shared ArweaveBlob used for both blobs. A debug toggle on the Glucose Streams screen turns the identity path off. Region 2 maps to ROW: a US-region Libre 3 Plus disconnected on the US certificate and paired with ROW.
The standalone LibreLoop project resolves RoundWhiteDiscKit by exact revision; dccf013 predates the app-identity API this branch uses.
ps2
marked this pull request as ready for review
October 5, 2026 20:58
This was referenced Oct 5, 2026
carolvchn
pushed a commit
to carolvachon-org/LoopWorkspace
that referenced
this pull request
Oct 5, 2026
- RoundWhiteDiscKit 0e076b2: pair with plain-key app identities, without the runtime tables (airedev326/RoundWhiteDiscKit#3). - LibreLoop 252b079: use them before the whitebox, with field diagnostics for identity selection and rejection (LoopKit/LibreLoop#16). - OmnipodKit 65a6ec4: acknowledge the expired-pod alert, and retry the acknowledgement once (LoopKit/OmnipodKit#182).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Pairs Libre 3 / 3+ sensors with a plain-key app credential (certificate plus P-256 key).
Pairing
SHA-256(00000001 ‖ Ze ‖ Zs)[0..<16]from plain ECDH; Phase 5/6 use standard AES-CCM.Field diagnostics
SendCertificateLoadDoneis reported as a certificate rejection.pairedWithandappIdentitiesInstalled.Tested
On a US-region Libre 3 Plus (security version 1, region 2): paired through Phase 6, readings decrypt and forward normally with 0 decrypt failures, and cached reconnect with the saved kAuth succeeded repeatedly across app restarts.