Skip to content

fix: BYTES_PER_KEY value #193

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

Merged
merged 11 commits into from
Sep 6, 2019
Merged

fix: BYTES_PER_KEY value #193

merged 11 commits into from
Sep 6, 2019

Conversation

seebees
Copy link
Contributor

@seebees seebees commented Aug 19, 2019

Maximum number of bytes which are allowed to be encrypted under a single data key
The real maximum is 2 ** 63 - 1,
However Javascript can only perform safe operations on values
up to Number.MAX_SAFE_INTEGER === 9007199254740991 === 2 ** 53 - 1.
e.g
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 => true
Number.MAX_SAFE_INTEGER + 1 > Number.MAX_SAFE_INTEGER + 2 => false
Number.MAX_SAFE_INTEGER + 1 < Number.MAX_SAFE_INTEGER + 2 => false

This means that after 2 ** 53 - 1 the process of accumulating a byte count
will never yield an accurate comparison and so, never halt.

The choice here to use 2 ** 53 - 1 instead of Number.MAX_SAFE_INTEGER is deliberate.
This is because in the future Number.MAX_SAFE_INTEGER could be raised to 2 ** 66
or some value larger 2 ** 63.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Check any applicable:

  • Were any files moved? Moving files changes their URL, which breaks all hyperlinks to the files.

@seebees seebees requested a review from a team August 19, 2019 20:26
@seebees seebees force-pushed the max_bytes_per_key branch from 699786e to f5e3805 Compare August 19, 2019 21:21
Maximum number of bytes which are allowed to be encrypted under a single data key
The _real_ maximum is 2 ** 63 - 1,
However Javascript can only perform safe operations on values
up to Number.MAX_SAFE_INTEGER === 9007199254740991 === 2 ** 53 - 1.
e.g
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 => true
Number.MAX_SAFE_INTEGER + 1 > Number.MAX_SAFE_INTEGER + 2 => false
Number.MAX_SAFE_INTEGER + 1 < Number.MAX_SAFE_INTEGER + 2 => false

This means that after 2 ** 53 - 1 the process of accumulating a byte count
will never yield an accurate comparison and so, never halt.

The choice here to use 2 ** 53 - 1 instead of Number.MAX_SAFE_INTEGER is deliberate.
This is because in the future Number.MAX_SAFE_INTEGER could be raised to 2 ** 66
or some value larger 2 ** 63.
@seebees seebees force-pushed the max_bytes_per_key branch from f5e3805 to 5d1ae29 Compare August 19, 2019 21:22
seebees and others added 3 commits August 23, 2019 16:52
Co-Authored-By: Matt Bullock <bullocm@amazon.com>
Co-Authored-By: Matt Bullock <bullocm@amazon.com>
@seebees seebees merged commit d3118d7 into aws:master Sep 6, 2019
@seebees seebees deleted the max_bytes_per_key branch September 6, 2019 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants