-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
More identifier checks in CoreDocument
#1067
Merged
Merged
Conversation
This file contains 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
Co-authored-by: Philipp Gackstatter <philipp.gackstatter@iota.org>
Co-authored-by: Philipp Gackstatter <philipp.gackstatter@iota.org>
Co-authored-by: Philipp Gackstatter <philipp.gackstatter@iota.org>
Co-authored-by: Philipp Gackstatter <philipp.gackstatter@iota.org>
…/identity.rs into fix/unique-method-identifiers
This reverts commit e11d108.
This reverts commit 8cf8988.
This reverts commit 1cb8d41.
9 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Breaking change
A change to the API that requires a major release. Part of "Changed" section in changelog
Rust
Related to the core Rust code. Becomes part of the Rust changelog.
Wasm
Related to Wasm bindings. Becomes part of the Wasm changelog
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.
Description of change
Currently it is possible to bypass method relationship checks and duplicate verification methods in a document by using
Deserialize
or theDocumentBuilder
. There are also no checks in place to ensure that a service does not share an identifier with a verification method. See #1061. This PR aims to fix these problems.I have measured the effect on throughput the extra checks introduce and found that they result in about 6-13% longer deserialization times depending on the size of the documents (tested with 495, 1559 and 6112 bytes) . To make it easy for us to try to improve on this in the future and ensure that the numbers don't get worse over time a simple benchmark has been added to the
identity_did
crate.Changes to the public API
CoreDocument
andIotaDocument
that can lead to broken URI dereferencing have been removed.CoreDocument::remove_method
(andIotaDocument::remove_method
) has been changed toOption<VerificationMethod>
rather thanResult<()>
. This is to encourage method manipulations going through the checkedinsert_method
API. The same kind of change has also been made to services in documents.remove_*
the core data structureOrderedSet
has been altered soOrderedSet::remove
now returnsOption<T>
instead ofbool
.Descoped for this PR
Links to any relevant issues
Sub-task of issue #1061.
Type of change
Add an
x
to the boxes that are relevant to your changes.How the change has been tested
Describe the tests that you ran to verify your changes.
Make sure to provide instructions for the maintainer as well as any relevant configurations.
Change checklist
Add an
x
to the boxes that are relevant to your changes.