fix(encryption): improve setKey robustness (better checks/throws) #57628
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.
Summary
getKey()for clarity (dropping dead code, flattening conditionals, simplified migration logic, type hinting)Context:
The
setKey()function is the underlying basis for all theset*Key()functions. It's extremely important for data integrity. While it can in theory return false for failures, in reality almost no callers (direct or indirect) actually check the return value (nor would they necessarily know what to do with a false/failure since it's inherently catastrophic).This change maintains the API contract (boolean -- though only
trueis realistically returned) while utilizing exceptions for all catastrophic errors (and they're all catastrophic).In additional to generally being wise, this may surface the causes of weird issues that sometimes get reported with keys.
TODO
ServerNotAvailableExceptionlikegetKey()though that seems just as genericChecklist
3. to review, feature component)stable32)