Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
a29b1c9
Fix lcov line number mismatch for ClaimTest::AudienceAsString (#1)
Copilot Feb 8, 2026
57396ec
Remove blank line
JurgenLB Feb 8, 2026
631e7d8
Add concurrency to traits job
JurgenLB Feb 8, 2026
078a86c
Additional spacing added to prevent geninfo line mismatch errors
JurgenLB Feb 8, 2026
325fa0c
Fix concurrency group in traits workflow to prevent job cancellations
JurgenLB Feb 8, 2026
fe8f752
Merge branch 'Thalhammer:master' into master
JurgenLB Feb 9, 2026
4256905
fix-msvc-type-trait-warnings
JurgenLB Feb 14, 2026
a90e807
Update jwt.h
JurgenLB Feb 14, 2026
767219d
Apply clang-format
JurgenLB Feb 14, 2026
ccd177e
Update jwt.h
JurgenLB Feb 14, 2026
2535d39
Fix formatting issues
JurgenLB Feb 14, 2026
c589c52
Fix formatting issues in jwt.h
JurgenLB Feb 14, 2026
0a53ec3
format
JurgenLB Feb 15, 2026
047b0ce
Update jwt.h
JurgenLB Feb 15, 2026
e54b768
Fix type casting for signature sizes
JurgenLB Feb 16, 2026
b8b8cfa
Merge branch 'master' of https://github.com/JurgenLB/jwt-cpp
JurgenLB Feb 16, 2026
3a68764
Fix additional MSVC C4244 warnings
JurgenLB Feb 16, 2026
69e5705
Clang Format
JurgenLB Feb 18, 2026
a0be8c3
Restore .gitignore
JurgenLB Feb 18, 2026
3d406b6
Remove unsigned int casts in OpenSSL EVP calls (#4)
Copilot Feb 18, 2026
8e84878
update clang
JurgenLB Feb 18, 2026
0078545
Merge branch 'Thalhammer:master' into master
JurgenLB Feb 18, 2026
f78ea97
Fix MSVC C4244 warning
Copilot Feb 18, 2026
228ce57
Merge branch 'Thalhammer:master' into master
JurgenLB Feb 18, 2026
8bfc292
Fix C4244 warnings on Windows MSVC by casting signature sizes to unsi…
Copilot Feb 20, 2026
b55280b
Merge branch 'Thalhammer:master' into master
JurgenLB Feb 20, 2026
801a906
fix: eliminate implicit conversion warnings in picojson.h INT64 get<d…
Copilot Feb 20, 2026
f9f87d5
C4244 implicit sign-conversion
JurgenLB Feb 20, 2026
7e412b1
Merge branch 'Thalhammer:master' into master
JurgenLB Feb 21, 2026
76c0930
Use auto for Variable declaration
JurgenLB Feb 21, 2026
505d38e
Fix variable declaration for length
JurgenLB Feb 21, 2026
cae3337
Fix C4244: remove unnecessary int cast in HMAC data length argument (#9)
Copilot Feb 21, 2026
aa0d8ac
Refactor variable declaration to AUTO
JurgenLB Feb 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 22 additions & 20 deletions include/jwt-cpp/jwt.h
Original file line number Diff line number Diff line change
Expand Up @@ -846,7 +846,7 @@ namespace jwt {
bn2raw(const BIGNUM* bn)
#endif
{
std::string res(BN_num_bytes(bn), '\0');
std::string res(static_cast<size_t>(BN_num_bytes(bn)), '\0');
BN_bn2bin(bn, (unsigned char*)res.data()); // NOLINT(google-readability-casting) requires `const_cast`
return res;
}
Expand Down Expand Up @@ -1403,7 +1403,7 @@ namespace jwt {
std::string res(static_cast<size_t>(EVP_MAX_MD_SIZE), '\0');
auto len = static_cast<unsigned int>(res.size());
if (HMAC(md(), secret.data(), static_cast<int>(secret.size()),
reinterpret_cast<const unsigned char*>(data.data()), static_cast<int>(data.size()),
reinterpret_cast<const unsigned char*>(data.data()), data.size(),
(unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
&len) == nullptr) {
ec = error::signature_generation_error::hmac_failed;
Expand Down Expand Up @@ -1501,7 +1501,7 @@ namespace jwt {
return {};
}

std::string res(EVP_PKEY_size(pkey.get()), '\0');
std::string res(static_cast<size_t>(EVP_PKEY_size(pkey.get())), '\0');
unsigned int len = 0;

if (!EVP_SignUpdate(ctx.get(), data.data(), data.size())) {
Expand Down Expand Up @@ -1538,8 +1538,9 @@ namespace jwt {
ec = error::signature_verification_error::verifyupdate_failed;
return;
}
const unsigned int sig_size = static_cast<unsigned int>(signature.size());
auto res = EVP_VerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
static_cast<unsigned int>(signature.size()), pkey.get());
sig_size, pkey.get());
if (res != 1) {
ec = error::signature_verification_error::verifyfinal_failed;
return;
Expand Down Expand Up @@ -1588,7 +1589,7 @@ namespace jwt {
}
if (!pkey) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);

size_t keysize = EVP_PKEY_bits(pkey.get());
size_t keysize = static_cast<size_t>(EVP_PKEY_bits(pkey.get()));
if (keysize != signature_length * 4 && (signature_length != 132 || keysize != 521))
throw error::ecdsa_exception(error::ecdsa_error::invalid_key_size);
}
Expand All @@ -1604,7 +1605,7 @@ namespace jwt {
ecdsa(helper::evp_pkey_handle key_pair, const EVP_MD* (*md)(), std::string name, size_t siglen)
: pkey(std::move(key_pair)), md(md), alg_name(std::move(name)), signature_length(siglen) {
if (!pkey) { throw error::ecdsa_exception(error::ecdsa_error::no_key_provided); }
size_t keysize = EVP_PKEY_bits(pkey.get());
size_t keysize = static_cast<size_t>(EVP_PKEY_bits(pkey.get()));
if (keysize != signature_length * 4 && (signature_length != 132 || keysize != 521))
throw error::ecdsa_exception(error::ecdsa_error::invalid_key_size);
}
Expand All @@ -1626,7 +1627,7 @@ namespace jwt {
ec = error::signature_generation_error::signinit_failed;
return {};
}
if (!EVP_DigestUpdate(ctx.get(), data.data(), static_cast<unsigned int>(data.size()))) {
if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
ec = error::signature_generation_error::digestupdate_failed;
return {};
}
Expand Down Expand Up @@ -1666,7 +1667,7 @@ namespace jwt {
ec = error::signature_verification_error::verifyinit_failed;
return;
}
if (!EVP_DigestUpdate(ctx.get(), data.data(), static_cast<unsigned int>(data.size()))) {
if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was just added in #405 😕

Without know what compiler flags are making these warnings, it's very difficult to verify what correction needs to be applied.

Please share how we can test this in out CI and validate these cahnges.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry for the duplicate changes, I will look into this.

Kind Regards

ec = error::signature_verification_error::verifyupdate_failed;
return;
}
Expand Down Expand Up @@ -1779,14 +1780,14 @@ namespace jwt {
ec = error::signature_verification_error::signature_encoding_failed;
return {};
}
std::string der_signature(length, '\0');
std::string der_signature(static_cast<size_t>(length), '\0');
unsigned char* psbuffer = (unsigned char*)der_signature.data();
length = i2d_ECDSA_SIG(psig, &psbuffer);
if (length < 0) {
ec = error::signature_verification_error::signature_encoding_failed;
return {};
}
der_signature.resize(length);
der_signature.resize(static_cast<size_t>(length));
return der_signature;
}

Expand Down Expand Up @@ -1849,7 +1850,7 @@ namespace jwt {
return {};
}

size_t len = EVP_PKEY_size(pkey.get());
size_t len = static_cast<size_t>(EVP_PKEY_size(pkey.get()));
std::string res(len, '\0');

// LibreSSL and OpenSSL, require the oneshot EVP_DigestSign API.
Expand Down Expand Up @@ -1904,14 +1905,14 @@ namespace jwt {
return;
}
if (EVP_DigestVerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
signature.size()) != 1) {
static_cast<unsigned int>(signature.size())) != 1) {
ec = error::signature_verification_error::verifyfinal_failed;
return;
}
#else
#else // !LIBWOLFSSL_VERSION_HEX (OpenSSL/LibreSSL)
auto res = EVP_DigestVerify(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
signature.size(), reinterpret_cast<const unsigned char*>(data.data()),
data.size());
static_cast<unsigned int>(signature.size()),
reinterpret_cast<const unsigned char*>(data.data()), data.size());
if (res != 1) {
ec = error::signature_verification_error::verifyfinal_failed;
return;
Expand Down Expand Up @@ -1985,12 +1986,12 @@ namespace jwt {
return {};
}
#endif
if (EVP_DigestUpdate(md_ctx.get(), data.data(), static_cast<unsigned int>(data.size())) != 1) {
if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
ec = error::signature_generation_error::digestupdate_failed;
return {};
}

size_t size = EVP_PKEY_size(pkey.get());
size_t size = static_cast<size_t>(EVP_PKEY_size(pkey.get()));
std::string res(size, 0x00);
if (EVP_DigestSignFinal(
md_ctx.get(),
Expand Down Expand Up @@ -2034,12 +2035,13 @@ namespace jwt {
return;
}
#endif
if (EVP_DigestUpdate(md_ctx.get(), data.data(), static_cast<unsigned int>(data.size())) != 1) {
if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
ec = error::signature_verification_error::verifyupdate_failed;
return;
}

if (EVP_DigestVerifyFinal(md_ctx.get(), (unsigned char*)signature.data(), signature.size()) <= 0) {
if (EVP_DigestVerifyFinal(md_ctx.get(), (unsigned char*)signature.data(),
static_cast<unsigned int>(signature.size())) <= 0) {
ec = error::signature_verification_error::verifyfinal_failed;
return;
}
Expand Down Expand Up @@ -3569,7 +3571,7 @@ namespace jwt {

while (in_next != in_end) {
wchar_t wc;
std::size_t result = std::mbrtowc(&wc, in_next, in_end - in_next, &state);
std::size_t result = std::mbrtowc(&wc, in_next, static_cast<size_t>(in_end - in_next), &state);
if (result == static_cast<std::size_t>(-1)) {
throw std::runtime_error("encoding error: " + std::string(std::strerror(errno)));
} else if (result == static_cast<std::size_t>(-2)) {
Expand Down
2 changes: 1 addition & 1 deletion include/picojson/picojson.h
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ GET(array, *u_.array_)
GET(object, *u_.object_)
#ifdef PICOJSON_USE_INT64
GET(double,
(type_ == int64_type && (const_cast<value *>(this)->type_ = number_type, (const_cast<value *>(this)->u_.number_ = u_.int64_)),
((void)(type_ == int64_type && (const_cast<value *>(this)->type_ = number_type, (const_cast<value *>(this)->u_.number_ = static_cast<double>(u_.int64_)), true)),
u_.number_))
GET(int64_t, u_.int64_)
#else
Expand Down