Support injection of alternate crypto libraries #129
Merged
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 motivation here is to be able to use a more performant crypto provider (e.g. https://github.com/corretto/amazon-corretto-crypto-provider) for biscuits. But... it's complicated and we can't just use this out of the bag.
A bit of background that I'll try to summarize as succinctly as possible:
Presently,
biscuit-javauses bouncycastle for its crypto. In some places, it does this through JCE, in others it calls the bouncycastle code directly. It would be nice if we could standardize everything and just use JCE; however, JCE doesn't support all of the options needed by biscuits. Specifically for secp256r1, these are (1) compression/decompression of the public key, and (2) curve multiplication to generate the public key from the private key.So with this in mind, I propose to have support for injecting our own crypto provider. By default, we will have a default implementation that calls bouncycastle directly (not using JCE at all so as to avoid polluting the set of registered crypto providers). Optionally, users of this library can inject their own crypto code and depend on whatever crypto implementations they wish.