This repository has been archived by the owner on Dec 15, 2020. It is now read-only.
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 branch switches from using per-registration counters to having a single counter shared between registrations. The U2F docs indicate that its fine to have a single global counter.
This change is needed because the
SecItemUpdate
API periodically fails for no reason (#47). This had been how we were updating the per-registration counters. I haven't heard anything from Apple after having opened a radar 1.5 months ago.The new approach is to store the counter as a generic password item in the keychain. This seems hacky, but we want to prevent the counter from being tampered with by other applications and using the keychain for storage seems like a reasonable way to accomplish this.
While we can't update the per-registration counters, we should still be able to read them. For users upgrading their Soft U2F version, we'll use the highest per-registration counter value as our starting place for the global counter. I'll want to test this a bit more before merging this branch and cutting a new release.