-
Notifications
You must be signed in to change notification settings - Fork 71
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
Set iat
timestamp by default instead of nbf
#43
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #43 +/- ##
========================================
Coverage 96.65% 96.65%
========================================
Files 7 7
Lines 209 209
Branches 51 50 -1
========================================
Hits 202 202
Misses 7 7
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great.
There is a breaking change that should be reflected in a version bump. The expiresIn
parameter used to be applied to iat
and even when that was missing(undefined
) it was used to compute the exp
field based on the system clock.
3a336c1
to
44bf4f7
Compare
* refactor: change createJWT to set iat by default instead of nbf * test: add tests for iat behavior in createJWT * feat: do not set iat if value in payload is null * fix: set payload.iat to undefined instead of null to omit from JWT * fix code style for division * fix code style BREAKING CHANGE: expiresIn option passed to createJWT now calculates exp from nbf instead of iat.
* change iat to nbf * feat: Set `iat` timestamp by default instead of `nbf` (#43) * refactor: change createJWT to set iat by default instead of nbf * test: add tests for iat behavior in createJWT * feat: do not set iat if value in payload is null * fix: set payload.iat to undefined instead of null to omit from JWT * fix code style for division * fix code style BREAKING CHANGE: expiresIn option passed to createJWT now calculates exp from nbf instead of iat. * chore: add release automation configuration (#44) * feat: verifyJWT against nbf if present but use iat if not (#45) * feat: verifyJWT against nbf if present but use iat if not * fix: apply skew in the opposite direction when checking exp * test: make some test inputs more clear * test: use hard coded JWTs to test validFrom teimstamp * style: remove unused constants * feat: upgrade to local did resolver (#48) * feat: upgrade to local did resolver * refactor: export resolver so it can be mocked in tests * wip: refactor tests to remove dependency on uport and nacl did resolvers * test: fix tests to verify pregenerated JWT * test: fix hard coded jwts for validFrom timestamp tests * test: fix remaining * test: add tests for normalizeDID * refactor: upgrade ethr-did-resolver to fix imports * refactor: rename variables and clean up async syntax for tests
* change iat to nbf * feat: Set `iat` timestamp by default instead of `nbf` (#43) * refactor: change createJWT to set iat by default instead of nbf * test: add tests for iat behavior in createJWT * feat: do not set iat if value in payload is null * fix: set payload.iat to undefined instead of null to omit from JWT * fix code style for division * fix code style BREAKING CHANGE: expiresIn option passed to createJWT now calculates exp from nbf instead of iat. * chore: add release automation configuration (#44) * feat: verifyJWT against nbf if present but use iat if not (#45) * feat: verifyJWT against nbf if present but use iat if not * fix: apply skew in the opposite direction when checking exp * test: make some test inputs more clear * test: use hard coded JWTs to test validFrom teimstamp * style: remove unused constants * feat: upgrade to local did resolver (#48) * feat: upgrade to local did resolver * refactor: export resolver so it can be mocked in tests * wip: refactor tests to remove dependency on uport and nacl did resolvers * test: fix tests to verify pregenerated JWT * test: fix hard coded jwts for validFrom timestamp tests * test: fix remaining * test: add tests for normalizeDID * refactor: upgrade ethr-did-resolver to fix imports * refactor: rename variables and clean up async syntax for tests
* refactor: change createJWT to set iat by default instead of nbf * test: add tests for iat behavior in createJWT * feat: do not set iat if value in payload is null * fix: set payload.iat to undefined instead of null to omit from JWT * fix code style for division * fix code style BREAKING CHANGE: expiresIn option passed to createJWT now calculates exp from nbf instead of iat.
This PR reverts the changes to
createJWT
introduced in #41 and slightly alters the behavior of how some of the arguments are used:createJWT
no longer attempts sets thenbf
attribute to the current timestamp by defaultcreateJWT
once again sets theiat
attribute to the current timestamp by defaultcreateJWT
omits theiat
attribute if it is passed in asundefined
in thepayload
createJWT
only calculates theexp
value given theexpiresIn
option ifnbf
is present in thepayload
nbf
no longer defaults to the current timestamp is because it's an optional attribute for JWTs, and therefore does not justify causing a breaking change in this library.did-jwt-vc
will provide higher level functions for creating Verifiable Credentials and Presentations which are responsible for defaulting the value ofnbf
since it is a necessary attribute for verification in those contexts.Another slight difference in behavior here is that the
expiresIn
option will be ignored if thepayload
does not specifynbf
. The previous behavior would only function appropriately in the scenario thatnbf
was not passed in as part of thepayload
since it would always calculateexp
from the automatically generatednbf
even if a value was assigned explicitly.