Commit Graph

307 Commits

Author SHA1 Message Date
Michael Pfaff 4d8679a53b
cargo fmt 2022-03-06 12:27:27 -05:00
Michael Pfaff c562d2f22e
Use crosstime git instead of local 2022-03-06 12:17:15 -05:00
Michael Pfaff 3948597cd9
Remove no_verify feature flag in favor of cfg(target_arch) 2022-03-06 12:11:22 -05:00
Michael Pfaff 86ba5e1d6c
Support for WASM 2022-02-27 23:24:26 -05:00
Vincent Prouillet d8a33def00 New minor version for docs 2022-02-03 20:50:31 +01:00
Vincent Prouillet 1a9ca38b76 Update leeway docs
Closes #234
2022-02-03 16:23:33 +01:00
Vivien Maisonneuve 0ed16a34ad Fix function name in doc comment 2022-02-03 13:08:21 +01:00
Vincent Prouillet af684c146f Get ready for release 2022-02-02 22:10:11 +01:00
Pietro 03927bf319 reduced default double allocation to one (#232) 2022-02-02 22:10:11 +01:00
Vincent Prouillet 75b9f8ae00 More update to MSRV 2022-02-02 22:10:11 +01:00
Vincent Prouillet 5162b6391c Update pinned ci version 2022-02-02 22:10:11 +01:00
Vincent Prouillet 1a46cfa7c9 Add default feature use_pem 2022-02-02 22:10:11 +01:00
Vincent Prouillet 5486f96f52 Remove iat mention
Closes #228
2022-02-02 22:10:11 +01:00
Vincent Prouillet 4598ba0a8c Beta 7 2022-02-02 22:10:11 +01:00
Vincent Prouillet 255c740e47 Add required_spec_claims (#225) 2022-02-02 22:10:11 +01:00
Vincent Prouillet 356fac075d Fix validation for issuers 2022-02-02 22:10:11 +01:00
Vincent Prouillet 5ed8af440c Rename set_iss to be in line with set_audience 2022-02-02 22:10:11 +01:00
Vincent Prouillet d73f3dd3a3 Beta 6 2022-02-02 22:10:11 +01:00
Vincent Prouillet c9c94c2b02 Change default leeway 2022-02-02 22:10:11 +01:00
Vincent Prouillet bebeb5f222 Fix #220 2022-02-02 22:10:11 +01:00
Andrew Walbran 7301e928b0 Implement Clone, Eq and PartialEq for Error. (#218)
* Implement Eq and PartialEq for Error.

* Implement Clone for Error.

serde_json::Error doesn't implement Clone, so wrapped it in an Arc.
2022-02-02 22:10:11 +01:00
Vincent Prouillet 855793f6a9 Beta 5 2022-02-02 22:10:11 +01:00
Vincent Prouillet ebef09e9ab Update CI pinned version 2022-02-02 22:10:11 +01:00
Adam Gleave 369d1090bb (`next`) Remove chrono (#213)
* Remove chrono from all dependencies

* Fix tests

* Fix tests and comments
2022-02-02 22:10:11 +01:00
emeryc 2cc95b9f37 Numeric type (#214)
* exp & nbf as float

In order to properly align with JWT NumericType wire protocol
allow for type on wire to either be u64 or f64. In either case we
convert in the most lossless way possible to a u64, so that nobody
needs to know that the spec is overly permissive.

* minimal cleanup
2022-02-02 22:10:11 +01:00
Vincent Prouillet 733d29aa87 Add back Validation::default()
Closes #208
2022-02-02 22:10:11 +01:00
Vincent Prouillet 2e8aa8d3f8 Beta 3 2022-02-02 22:10:11 +01:00
Ten0 f9771f7835 Improve deserialization performance around validation and its tests (#202)
* Improve deserialization performance around validation and its tests

The claims validation was done via deserializing into a Map, which
implies allocations/deallocations. This was done even if the map was not
used afterwards.

This commit improves performance of the validation by never
deserializing in a `Map`, and deserializing only when necessary, to
a struct that typically only borrows from the original b64-decoded
json string.

The validation function interface change required update to the tests,
which are also made easier to read by using the `serde_json::json!`
macro.

* unrelated: fix bench compilation
2022-02-02 22:10:11 +01:00
Vincent Prouillet 1dcfda92f0 Unify various decode into the validation struct (#199) 2022-02-02 22:10:11 +01:00
Ten0 6a7eec9030 Add support for x5t#S256 header (#203) 2022-02-02 22:10:11 +01:00
Vincent Prouillet a11106faff Add types for JWK/JWKS based on biscuit (#195)
* Add types for JWK/JWKS based on biscuit

* Address comments

* Fix issues
2022-02-02 22:10:11 +01:00
Matteo Bertucci 94fef12259 Docs: fix copy paste error in ErrorKind::InvalidSubject (#196)
The documentation for `ErrorKind::InvalidSubject` mentioned the `aud` claim instead of `sub`. This commit fixes it.
2022-02-02 22:10:11 +01:00
Vincent Prouillet 3e245e3e6b Allow uppercase algorithms (too much breakage otherwise) 2022-02-02 22:10:11 +01:00
Vincent Prouillet b6dafd63dd Make Validation::algorithms an error if empty 2022-02-02 22:10:11 +01:00
Jarred Nicholls fd2c314d3c Add tests for Header::x5c_der(), and modify its return type to be fallible. (#185) 2022-02-02 22:10:11 +01:00
Jarred Nicholls 8bdc5215ea Add an access method to decode the Header x5c field into DER PKIX format. (#184) 2022-02-02 22:10:11 +01:00
Saber Haj Rabiee 45fb43c1f7 removed unnecessary conversions (#180)
* removed unnecessary conversions
2022-02-02 22:10:11 +01:00
Oliver Thallmair de5a1903b0 add x5c header (#182)
* add x5c header

* fix format
2022-02-02 22:10:11 +01:00
Saber Haj Rabiee f3566ecd82 clone-free validate function (#179)
* clone-free validate function

It could save up to 300ns in my benches
2022-02-02 22:10:11 +01:00
Saber Haj Rabiee d8cc36dd0c clone-free serde Value deserialization (#178)
* clone-free serde Value deserialization
2022-02-02 22:10:11 +01:00
Saber Haj Rabiee 9fd9db55cd Update validation.rs (#176) 2022-02-02 22:10:11 +01:00
Vincent Prouillet 6f05ec9a1a v8 beta1 2022-02-02 22:10:11 +01:00
Saber Haj Rabiee da761fe039 checking iss for multiple values (#173) 2022-02-02 22:10:11 +01:00
Vincent Prouillet 48770d4797 Prepare for v8 2022-02-02 22:10:11 +01:00
Vincent Prouillet 874952b7a5 More clippy 2022-02-02 22:10:11 +01:00
Vincent Prouillet c9442834ed Make DecodingKey own all the data
Closes #120
Supersedes #128
2022-02-02 22:10:11 +01:00
Vincent Prouillet 60c92f2882 Fix clippy 2022-02-02 22:10:11 +01:00
Vincent Prouillet f50e4901cb Avoid allocation 2022-02-02 22:10:11 +01:00
Adrian Black 2aad217087 add verify_sig fn (#161)
* add verify_sig fn

* fix missing comma

* fmt whitespace changes
2022-02-02 22:10:11 +01:00
Vincent Prouillet d2c8ae3f11 Impl PartialEq for ErrorKind
Closes #125
2022-02-02 22:10:11 +01:00
Vincent Prouillet 5c706b005a Remove deprecated fn 2022-02-02 22:10:11 +01:00
Vincent Prouillet 2c9c57fc4b Expose get_current_timestamp
Closes #152
2022-02-02 22:10:11 +01:00
Vincent Prouillet 30571cafd2 Keep RSA key error message from ring
Closes #164
2022-02-02 22:10:11 +01:00
Vincent Prouillet 2662f6ad1f fmt + clippy 2022-02-02 22:10:11 +01:00
Vincent Prouillet ea4ed55551 Bytes everywhere for sign/verify 2022-02-02 22:10:11 +01:00
Charles Lehner 4aee8bc382 Add sign and verify on bytes (#150) 2022-02-02 22:10:11 +01:00
Charles Lehner 2178cc7506 Add EdDSA (Ed25519) (#154) 2022-02-02 22:10:11 +01:00
Vincent Prouillet 445dfe037e Prepare for v8 2022-02-02 22:10:11 +01:00
Arniu Tseng 2f25cbed0a
Add note about encoding keys (#163)
* Add note about encoding keys

* Update encoding.rs

* Format code
2020-12-07 16:00:44 +01:00
Piotr Maks 90b9700748
Clippy (#146)
* Bump minimum required Rust version to 1.40

Motivation for this change is use of `#[non_exhaustive]` attribute that
was stabilized in Rust 1.40.0

* Migrate benchmarks to criterion

Remove use of unstable features in favour of criterion benchmarks

* Enable clippy in Github Actions

* Fix clippy::manual_non_exhaustive

Remove manual implementations of the non-exhaustive pattern. Instead
use the `#[non_exhaustive]` attribute.

* Allow reexport of deprecated function

Silence rustc `deprecated` working in function reexport

* Remove redundant clone

* Fix various clippy warnings

* Remove redundant pattern
* Use `unreachable!()` to fail test
* No need to add `&` to all patterns
2020-08-31 12:04:57 +02:00
Piotr Maks 29aad97739
Format code and check style in Github Actions (#145) 2020-08-07 18:10:26 +02:00
Vincent Prouillet a2c259588a Mention utc timestamps 2020-06-30 21:26:50 +02:00
Ivan Solovev 98efa500f9
Fix documentation (#142)
* Fix documentation

* Fix types in documentation
2020-06-30 21:25:41 +02:00
Vincent Prouillet 7a7367361f
Prepare for 7.2.0 (#143) 2020-06-30 21:25:25 +02:00
Craig Colegrove 64f276c814
Add new function and tests (#138)
Co-authored-by: Vincent Prouillet <balthek@gmail.com>
2020-06-30 20:03:53 +02:00
Vincent Prouillet 6262b4700b Slight tweaks 2020-06-30 19:58:11 +02:00
Craig Colegrove 636c0dc203
Rename dangerous_unsafe_decode to dangerous_insecure_decode (#139)
* Rename dangerous_unsafe_decode to dangerous_insecure_decode

* Add back old function name with deprecation flag
2020-06-30 19:50:45 +02:00
Vincent Prouillet 952d34c139 v7.1.2 2020-06-16 12:07:08 +02:00
Craig Colegrove 693a100128
Derive Hash for Header and Algorithm (#137) 2020-06-16 12:04:22 +02:00
Vincent Prouillet cf6ac78714
Update for 7.1.1 (#134) 2020-06-09 22:00:37 +02:00
Marc Mettke 3cae0df3dd
Updating base64 to 0.12 (#133) 2020-06-09 21:50:19 +02:00
Valentin Brandl 09aad3ca2f
Fix Broken chrono Example (#126)
* Add quickcheck as test dependencie

* Use timestamp nanos

* Add test property for en/decoding

* Fix existing test

* Remove quickcheck dependency

* Normalize `DateTime` values in claims
2020-04-24 19:57:51 +02:00
Vincent Prouillet fa05ece73c Prepare for 7.1.0 2020-03-01 19:58:18 +01:00
Vincent Prouillet d00d2f4e4b
Merge pull request #123 from Hexilee/master
fix issue 120: DecodingKey can be converted to static
2020-03-01 19:55:01 +01:00
Hexilee 946aef1b57 revert breaking change of DecodingKey 2020-02-28 15:20:41 +08:00
Hexilee a750d5586f fix issue 120: DecodingKey can be converted to static 2020-02-28 01:26:58 +08:00
Vincent Prouillet cecc353f02
Merge pull request #121 from jareddlc/readme-update
Update readme
2020-02-21 09:19:06 +01:00
Jared De La Cruz 179f72155f Add claims and validation to the readme 2020-02-20 22:56:09 -08:00
Vincent Prouillet 2484d47f7d v7.0.1 2020-01-30 21:28:00 -08:00
Vincent Prouillet aae977651c
Merge pull request #117 from fujiapple852/hotfix-display-stack-overflow
Fix recursive Display::fmt implementation on Error to avoid stack overflow
2020-01-30 21:26:06 -08:00
FujiApple 2f359b515c - Fix recursive `Display::fmt` implementation on `Error` to avoid stack overflow
- Added unit test to cover a sample case
2020-01-31 13:11:40 +08:00
Vincent Prouillet e89fa41b7a
Merge pull request #91 from Keats/next
7.0.0
2020-01-28 23:00:26 -08:00
Vincent Prouillet b9989d14cf Prepare for release 2020-01-28 18:18:21 -08:00
Vincent Prouillet c2f6093309 Get rid of deprecrated std error description 2020-01-27 20:52:46 -08:00
Vincent Prouillet 1cc14b04eb Beta 1 2020-01-21 07:41:55 -08:00
Vincent Prouillet e46f8f9d58
Merge pull request #113 from Keats/keys_struct
Add EncodingKey & DecodingKey
2020-01-17 20:18:30 +01:00
Vincent Prouillet 689cc6d32e Validate key type with algo in encode/decode 2020-01-13 19:41:06 +01:00
Vincent Prouillet 4dd2f12c6d Remove EncodingKey lifetime 2020-01-02 19:40:53 +01:00
Vincent Prouillet 77ae0effc8 Add DecodingKey 2019-12-29 21:50:06 +01:00
Vincent Prouillet 0abeeac25f Add EncodingKey 2019-12-29 19:33:17 +01:00
Vincent Prouillet 771f955690 Better GH workflow 2019-11-28 19:28:59 +01:00
Vincent Prouillet bfcfc1d341 Handle aud not being a sequence
Closes #110
2019-11-28 19:27:33 +01:00
Vincent Prouillet 499b439cb0 Wrong badge 2019-11-15 20:39:19 +01:00
Vincent Prouillet 8d678086eb v7 alpha 1 2019-11-15 20:37:47 +01:00
Vincent Prouillet 1a727f7095
Merge pull request #107 from Keats/pem-handling
Add PEM decoding support (#106)
2019-11-15 20:29:59 +01:00
Vincent Prouillet d550c5f318 Add more tests and document SEC1 lack of support 2019-11-15 20:16:38 +01:00
Vincent Prouillet 6121db3d07 Min version is 1.36? 2019-11-14 20:35:20 +01:00
Vincent Prouillet b35719b555 Point to validation example 2019-11-14 20:32:03 +01:00
Vincent Prouillet 3fe0bc1f83 Update README 2019-11-14 20:24:38 +01:00
Vincent Prouillet dd642bed1d Use GH actions 2019-11-14 20:02:59 +01:00