Skip to content

Make IPrivateKeyDecryptor Instantiation Configurable in JWTEncryptionPreferences to avoid compilation-time errors #1310

@P1car00n

Description

@P1car00n

Is your feature request related to a problem? Please describe.

The class JWTEncryptionPreferences has a private IPrivateKeyDecryptor field (privateKeyDecryptor) that is instantiated immediately with BCPrivateKeyDecryptor(). Although it is possible to override the IPrivateKeyDecryptor later via a call to boxConfig.setPrivateKeyDecryptor, by the time this becomes possible, BCPrivateKeyDecryptor() has already been instantiated. BCPrivateKeyDecryptor imports BouncyCastleProvider, which we exclude from dependencies to ensure that only FIPS-compliant BouncyCastle libraries are present, resulting in a failure.

Describe the solution you'd like

It would be helpful if the instantiation of JWTEncryptionPreferences became more configurable. For example, moving this instantiation to a default constructor while allowing an alternative constructor, or utilizing interfaces to make it easier to override the functionality altogether.

Describe alternatives you've considered

  1. Allowing BouncyCastleProvider in just for the sake of not receiving compilation-time errors.
  2. Implementing a fake BouncyCastleProvider to "trick" the compiler.
  3. Using reflection.

Metadata

Metadata

Labels

enhancementAdded to issues that describes enhancements

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions