Remove dependency on crc_any #78
Open
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.
The crc_any is not currently imported in Chromium, and since the dcsctp library only uses a very small part of it, reimplement this ourselves.
In contrast to the crc_any crate, we generate the tables by the compiler, but similarly to it, we process 8 bytes at a time, so performance should be identical.
The correctness of this algorithm is guaranteed by test vectors and with the recorded packet captures that exist in other unit tests.
We could add an optional feature to add a dependency on the crc32c crate, which adds hardware accelerated support for some platforms, but that library is not imported in Chromium and other monorepos.
Note that the crc32c checksum becomes less relevant with support for https://datatracker.ietf.org/doc/rfc9653/, which his library has, and will use if configured and when both sides support it.