Commit graph

786 commits

Author SHA1 Message Date
Ben Collins
8ac420048a One compiler's warning is another's error
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-08 02:40:30 +00:00
Ben Collins
bdbed377a6 Fix typo
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-07 22:01:02 +00:00
Ben Collins
5f2c45ec2b kcapi: Enable offloading HS algs to kcapi
Linux Kernel Crypto API

At some point I'd like to make use of kcapi to store keys for persistent
crypto ops.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-07 21:32:39 +00:00
Ben Collins
e5f00796c7 jwks_load_strn: Don't toy around with pointer expectations
Remove use of __FLAG_EMPTY as indirect way of signaling that NULL was ok
to pass to this function.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-07 09:31:15 +00:00
Ben Collins
f31983dfef tests/jwt_builder: Increase test time outs more
Signed-off-by: Ben Collins <bcollins@swissdisk.com>
2025-03-04 14:52:00 +00:00
Ben Collins
e58c61a416
tests/jwt_builder: Increase timeouts for memcheck
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-04 11:13:53 +00:00
Ben Collins
035958164b
jwt_set_json(): fix leaks in two cases
We need to make sure to call json_decref() in cases where the json_t ref is
not taken by the underlying header/payload json_t object.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-04 10:23:30 +00:00
Ben Collins
3b735a8d49
openssl: fix leak on ec_sig path
openssl_verify_sha_pem() was allocating a new buffer when doing ec_sig
and was not freeing it.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-04 10:22:07 +00:00
Ben Collins
04a6320073
gnutls: fix double call of gnutls_pubkey_init()
Causing a leak on every verify.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-04 10:21:26 +00:00
Ben Collins
3f79001527
tests: Fix some memory leaks in the testing
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-04 10:20:59 +00:00
Ben Collins
528ffe6438
memcheck: Force valgrind to follow exec*()
Well damn, the MemCheck has only ever been testing bash, not the test
programs. Fixed, and found some leaks.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-04 10:19:38 +00:00
Ben Collins
84101b13d9
jwt_verify_sig: Remove extraneous call to jwt_base64uri_decode()
This is only used on the non-HMAC case.

Fixes #212

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-03-03 12:03:16 +00:00
Ben Collins
96dbe9a2b2 tests/jwt_jwks: CUrl error strings vary
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-21 15:49:06 +00:00
Ben Collins
d7f494b2de tests/jwt_builder: Set timeout to 30 on stress test
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-21 02:27:08 +00:00
Ben Collins
ef87e5be17
jwks_load_fromurl: Correct usage of SSL verify in libcurl
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-14 07:24:54 -05:00
Ben Collins
2d90a2a81d
tests: Stress test ES256
We do this in the hopes of hitting a few lines of code in GnuTLS that
are arbitrarily hit based on EC improbability.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-14 06:58:57 -05:00
Ben Collins
a46a08c4b4
workflow: Install bats for test builds
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-14 06:51:33 -05:00
Ben Collins
89727aae38
codecov: Complete coverage
- Added some test cases
- Cleaned up some code

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-14 06:48:02 -05:00
Ben Collins
b76a984d0a
v3.2.0
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 22:19:20 -05:00
Ben Collins
b7462435dd
Updates to builds for curl
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 22:01:41 -05:00
Ben Collins
0eb5c8c44b
jwks_load_fromurl(): Add verify param
Meant for enabling or disabling SSL certificate verification.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 21:52:45 -05:00
Ben Collins
c7fbb4d5e8
jwks_load_fromurl(): New function to load JWKS from a URL
e.g. https://example.com/.well-known/jwks.json

Requires libcurl

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 21:36:02 -05:00
Ben Collins
cc305d2945
base64: Rework to cover lines in base64 that were excluded
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 16:01:17 -05:00
Ben Collins
62a6f564eb
jwks_find_bykid: New function to find keys by "kid"
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 15:47:31 -05:00
Ben Collins
99cd27d258
setcb: Allow setting a new ctx for existing cb setup
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 15:04:12 -05:00
Ben Collins
40b28567b1
doxygen: Allow 1.9.8 version so it produces output on debian/unstable
These Linux distros really need to catch up on this package

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 13:25:39 -05:00
Ben Collins
b9eff948ce
jwt-common: Make jwt-builder and jwt-checker truly generated at build time
Still keeps the code coverage and mingw builds working.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 11:45:20 -05:00
Ben Collins
032b0d2fa1
cmake: Call sed directly and remove Makefile for jwt-common.c gen
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 11:21:54 -05:00
Ben Collins
615f5b333b
jwt-common: Ensure builder and checker get generated on changes
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 11:06:48 -05:00
Ben Collins
6f8bcdbdb8
codecov: jwt-common => gen
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 10:46:25 -05:00
Ben Collins
519abb6f0f
codecov: More codecoverage, more tests
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 10:43:43 -05:00
Ben Collins
e9e8a5a20a
v3.1.0
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 08:25:31 -05:00
Ben Collins
2b8c1fce86
mingw: Add cmake snippet for easier setup
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 08:12:36 -05:00
Ben Collins
4ea993a23f
win32: Compile working
Closes #208

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 08:06:42 -05:00
Ben Collins
db9f17c42e
example.sh: Show jwk during example output
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 07:39:13 -05:00
Ben Collins
546ce331b5
tools: Hopefully some capitability for win32
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 07:31:06 -05:00
Ben Collins
ea9cc324c2
key2jwk: win32 fixes
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 07:10:50 -05:00
Ben Collins
ec04179348
codecov: Covering more corner cases
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 06:59:04 -05:00
Ben Collins
4278a6eee6
coverage: Cannot force json errors
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 21:25:03 -05:00
Ben Collins
c19aef6805
jwt_strdup: No more users of this, remove
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 21:20:34 -05:00
Ben Collins
70b92e338f
jwt-memory: Last user of realloc is gone
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 21:02:12 -05:00
Ben Collins
2ea11b126a
openssl/verify_sha: Fix double free on EC sigs
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-13 01:56:06 +00:00
Ben Collins
d0d464e1e0
verify_sha: Move base64 decode out of crypto backends
No reason to put that in there.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 20:08:27 -05:00
Ben Collins
5001ad7148
hmac_verify: Move to common code
This basically just does a hmac_sign and compare. The crypto backends
all did the same thing.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 19:42:32 -05:00
Ben Collins
0d15d75fb3
jwks: Implement jwks_error_any(), jwks_item_free_bad(), and jwks_item_count()
Closes #209

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 17:09:58 -05:00
Ben Collins
b494699781
jwt-cli.bats: Delete output files before running test
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 15:33:46 -05:00
Ben Collins
734c0c5840
jwt-common: Generate jwt-builder and jwt-checker
The way I was build this was causing some off issues, especially for
windows builds. The dll* attributes don't like playing these games.

In retrospect, autoconf/make would have handled this nicely. I could
have done a %.c:%.i make rule and built off of there, but cmake does not
appear to have anything that easy.

Oh well, builder and checker have way too much code in commong to split
them, so for now this is still the easier option.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 15:30:52 -05:00
Ben Collins
444ea08d0e
jwt-cli: Add more tests and connect in with unit testing
The tools/*.c files are not part of coverage, yet.

Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 13:27:02 -05:00
Ben Collins
e976cdbe3b
jwt-common: Call __setkey_check directly
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 12:49:33 -05:00
Ben Collins
67cb474de0
key2jwt: Fix unchecked buffer length
Signed-off-by: Ben Collins <bcollins@libjwt.io>
2025-02-12 12:49:00 -05:00