You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Create getting-started.md
* Update getting-started.md
* Create header-only.yml
* Create package-managers.yml
* Update package-managers.yml
* Update getting-started.md
* Update getting-started.md
* Update header-only.yml
* Update header-only.yml
* Update header-only.yml
* Update header-only.yml
* use `jwt::algorithm::hs256`
to link against openssl
* add crypto
* switch to ssl
* Update header-only.yml
* tidy
* lets install conan
* tidying
* Adding a CMake target to make the docs
* cleaning up repo root folder
* fix typo
* set docs flag as on
* update awesome doxy theme to latest
* Updated overrides for new version
* output folder and target name are changed
* add a few more docs
* white space
* cmake format
* playing with settings
* move algorithms - magically fixed missing structs
* playing with the idea of more refactoring
* more testing
* moved evp_handle def to special namespace for doxygen
* split evp class by it's self
* fix doc links
* playing with evp class to fix error -- no luck
* revert testing changes
* clang format
* cache should be container specific
* clean up includes
* combined class definition
* split algos but running in ci with older version
* trying slightly newer version of doxygen
* doxygen 196
* doxygen 197
* doxygen 198
* avoid regression in 198
* more docs
* playing with adding examples
* playing around with example support to see if I like
* docs include all the example files to be referenced in the code
* bump version to 0.7.0
* missing header
* devcontainer for testing openssl 3
* add test explorer
* add clang helpers
* there's a lot of package managers in 2023
* fixup colors with doxygen 1.10
* bump doxygen version
since my bug has been fixed
* move everything to one file (too many changes)
* update doxyfile to 1.10
* minimize diff
* fix extra line
* fix whitespace
* clean up dev container
* min changes
* cleanup
* better checking + warnings for doxygen
* whitespace
* adding in more docs
* fix spelling
* make sure traits appear
* trying to add snippets from examples
cant figure it out
doxygen/doxygen#10517
* Update faqs.md
* Delete .github/workflows/header-only.yml
* Delete .github/workflows/package-managers.yml
* Delete example/conan/CMakeLists.txt
* Delete example/conan/conanfile.txt
* Delete example/conan/main.cpp
* Delete example/conan/README.md
* Update nlohmann-json.cpp
* add updated getting started docs
first pass towards Thalhammer#319
* touch ups
* linking deprecated messages
* improve cmake with find_package examples
* fix code link color
* be more clear about turning off examples
good suggestion
Thalhammer#321 (comment)
* clarify openssl install and fixup fetch tag
* apply workaround from
doxygen/doxygen#10517 (comment)
* fix renamed types
* linting
* cross reference new docs
* trying new alert syntax
https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
* move sections out of readme
trying to make it shorter and more approachable
* improve "getting started" readme section with a more through example
* sort out doubled "getting started"
second one in docs/ is just installation
* linter
* fixup english
* formatting
* whitespace
* tie in more examples with snippets
* minor touch ups
* Update signing.md
* JWT_BUILD_DOCS
* better cache string for new option
* word crafting
* word crafting
* add missing open-source-parsers/jsoncpp to traits list
* better github alert
* fixup new shields io start style
* improve docs cmake target name
* linter
---------
Co-authored-by: Christopher McArthur <[email protected]>
A header only library for creating and validating [JSON Web Tokens](https://tools.ietf.org/html/rfc7519) in C++11. For a great introduction, [read this](https://jwt.io/introduction/).
23
25
26
+
The objective is to deliver a versatile and universally applicable collection of algorithms, classes, and data structures, fostering adaptability and seamless integration with other libraries that you may already be employing.
27
+
24
28
## Signature algorithms
25
29
26
-
jwt-cpp supports all the algorithms defined by the specifications. The modular design allows to easily add additional algorithms without any problems. If you need any feel free to create a pull request or [open an issue](https://github.com/Thalhammer/jwt-cpp/issues/new).
30
+
jwt-cpp comprehensively supports all algorithms specified in the standard. Its modular design facilitates the seamless [inclusion of additional algorithms](docs/signing.md#custom-signature-algorithms) without encountering any complications. Should you wish to contribute new algorithms, feel free to initiate a pull request or [open an issue](https://github.com/Thalhammer/jwt-cpp/issues/new).
27
31
28
32
For completeness, here is a list of all supported algorithms:
29
33
30
34
| HMSC | RSA | ECDSA | PSS | EdDSA |
31
-
|-------|-------|--------|-------|---------|
35
+
|-----|-----|------|-----|-------|
32
36
| HS256 | RS256 | ES256 | PS256 | Ed25519 |
33
37
| HS384 | RS384 | ES384 | PS384 | Ed448 |
34
38
| HS512 | RS512 | ES512 | PS512 ||
35
39
||| ES256K |||
36
40
37
-
## SSL Compatibility
38
-
39
-
In the name of flexibility and extensibility, jwt-cpp supports [OpenSSL](https://github.com/openssl/openssl), [LibreSSL](https://github.com/libressl-portable/portable), and [wolfSSL](https://github.com/wolfSSL/wolfssl). Read [this page](docs/ssl.md) for more details. These are the version which are currently being tested:
There is no hard dependency on a JSON library. Instead, there's a generic `jwt::basic_claim` which is templated around type traits, which described the semantic [JSON types](https://json-schema.org/understanding-json-schema/reference/type.html) for a value, object, array, string, number, integer and boolean, as well as methods to translate between them.
In order to maintain compatibility, [picojson](https://github.com/kazuho/picojson) is still used to provide a specialized `jwt::claim` along with all helpers. Defining `JWT_DISABLE_PICOJSON` will remove this optional dependency. It's possible to directly include the traits defaults for the other JSON libraries. See the [traits examples](https://github.com/Thalhammer/jwt-cpp/tree/master/example/traits) for details.
84
-
85
-
As for the base64 requirements of JWTs, this library provides `base.h` with all the required implementation; However base64 implementations are very common, with varying degrees of performance. When providing your own base64 implementation, you can define `JWT_DISABLE_BASE64` to remove the jwt-cpp implementation.
41
+
## Getting Started
86
42
87
-
### Getting Started
43
+
Installation instructions can be found [here](docs/install.md).
88
44
89
-
Simple example of decoding a token and printing all [claims](https://tools.ietf.org/html/rfc7519#section-4) ([try it out](https://github.com/Thalhammer/jwt-cpp/tree/master/example/print-claims.cpp)):
45
+
A simple example is decoding a token and printing all of its [claims](https://tools.ietf.org/html/rfc7519#section-4)let's ([try it out](https://jwt.io/#debugger-io?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCIsInNhbXBsZSI6InRlc3QifQ.lQm3N2bVlqt2-1L-FsOjtR6uE-L4E9zJutMWKIe1v1M)):
> To see more examples working with RSA public and private keys, visit our [examples](https://github.com/Thalhammer/jwt-cpp/tree/master/example)!
97
+
If you are looking to issue or verify more unique tokens, checkout out the [examples](https://github.com/Thalhammer/jwt-cpp/tree/master/example) working with RSA public and private keys, elliptic curve tokens, and much more!
98
+
99
+
### Configuration Options
100
+
101
+
Building on the goal of providing flexibility.
102
+
103
+
#### SSL Compatibility
104
+
105
+
jwt-cpp supports [OpenSSL](https://github.com/openssl/openssl), [LibreSSL](https://github.com/libressl-portable/portable), and [wolfSSL](https://github.com/wolfSSL/wolfssl). For a listed of tested versions, check [this page](docs/ssl.md) for more details.
106
+
107
+
#### JSON Implementation
108
+
109
+
There is no strict reliance on a specific JSON library in this context. Instead, the jwt-cpp utilizes a generic `jwt::basic_claim` that is templated based on type trait. This trait provides the semantic [JSON types](https://json-schema.org/understanding-json-schema/reference/type.html) for values, objects, arrays, strings, numbers, integers, and booleans, along with methods to seamlessly translate between them.
110
+
111
+
This design offers flexibility in choosing the JSON library that best suits your needs. To leverage one of the provided JSON traits, refer to [docs/traits.md](docs/traits.md#selecting-a-json-library) for detailed guidance.
To learn how to writes a trait's implementation, checkout the [these instructions](docs/traits.md#providing-your-own-json-traits)
127
120
128
-
###Providing your own JSON Traits
121
+
#### Base64 Options
129
122
130
-
To learn how to writes a trait's implementation, checkout the [these instructions](docs/traits.md)
123
+
With regard to the base64 specifications for JWTs, this library includes `base.h` encompassing all necessary variants. While the library itself offers a proficient base64 implementation, it's worth noting that base64 implementations are widely available, exhibiting diverse performance levels. If you prefer to use your own base64 implementation, you have the option to define `JWT_DISABLE_BASE64` to exclude the jwt-cpp implementation.
131
124
132
125
## Contributing
133
126
134
-
If you have an improvement or found a bug feel free to [open an issue](https://github.com/Thalhammer/jwt-cpp/issues/new) or add the change and create a pull request. If you file a bug please make sure to include as much information about your environment (compiler version, etc.) as possible to help reproduce the issue. If you add a new feature please make sure to also include test cases for it.
127
+
If you have suggestions for improvement or if you've identified a bug, please don't hesitate to [open an issue](https://github.com/Thalhammer/jwt-cpp/issues/new) or contribute by creating a pull request. When reporting a bug, provide comprehensive details about your environment, including compiler version and other relevant information, to facilitate issue reproduction. Additionally, if you're introducing a new feature, ensure that you include corresponding test cases to validate its functionality.
135
128
136
-
## Dependencies
129
+
### Dependencies
137
130
138
131
In order to use jwt-cpp you need the following tools.
139
132
@@ -152,4 +145,5 @@ In order to build the test cases you also need
0 commit comments