diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/annotated.html b/annotated.html new file mode 100644 index 00000000..8d23a044 --- /dev/null +++ b/annotated.html @@ -0,0 +1,178 @@ + + + + + + + +JWT-CPP: Class List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NjwtJSON Web Token
 NalgorithmVarious cryptographic algorithms when working with JWT
 CecdsaBase class for ECDSA family of algorithms
 Ced25519
 Ced448
 CeddsaBase class for EdDSA family of algorithms
 Ces256
 Ces256k
 Ces384
 Ces512
 ChmacshaBase class for HMAC family of algorithms
 Chs256
 Chs384
 Chs512
 Cnone"none" algorithm
 Cps256
 Cps384
 Cps512
 CpssBase class for PSS-RSA family of algorithms
 Crs256
 Crs384
 Crs512
 CrsaBase class for RSA family of algorithms
 NalphabetCharacter maps when encoding and decoding
 Nhelper
 Cbase64url_percent_encodingA General purpose base64url alphabet respecting the URI Case Normalization
 Cbase64Valid list of character when working with Base64
 Cbase64urlValid list of character when working with Base64URL
 NerrorEverything related to error codes issued by the library
 Cclaim_not_present_exception
 Cecdsa_exception
 Cinvalid_json_exception
 Crsa_exception
 Csignature_generation_exception
 Csignature_verification_exception
 Ctoken_verification_exception
 NhelperA collection for working with certificates
 Cevp_pkey_handleHandle class for EVP_PKEY structures
 NtraitsNamespace containing all the json_trait implementations for a jwt::basic_claim
 Cboost_jsonBasic_claim's JSON trait implementation for Boost.JSON
 Cdanielaparker_jsonconsBasic_claim's JSON trait implementation for jsoncons
 Carray_type
 Cobject_type
 Ckazuho_picojsonBasic_claim's JSON trait implementation for picojson
 Cnlohmann_jsonBasic_claim's JSON trait implementation for Modern C++ JSON
 Copen_source_parsers_jsoncppBasic_claim's JSON trait implementation for jsoncpp
 Carray_type
 Cobject_type
 Nverify_ops
 Cdate_after_claim
 Cdate_before_claim
 Cequals_claim
 Cinsensitive_string_claim
 Cis_subset_claim
 Cverify_context
 Cbasic_claimClass to store a generic JSON value as claim
 Cbuilder
 Cdecoded_jwt
 Cdefault_clock
 Cheader
 CjwkJSON Web Key
 CjwksJWK Set
 Cpayload
 Cverifier
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 00000000..fec4471f --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,71 @@ +var annotated_dup = +[ + [ "jwt", "namespacejwt.html", [ + [ "algorithm", "namespacejwt_1_1algorithm.html", [ + [ "ecdsa", "structjwt_1_1algorithm_1_1ecdsa.html", "structjwt_1_1algorithm_1_1ecdsa" ], + [ "ed25519", "structjwt_1_1algorithm_1_1ed25519.html", "structjwt_1_1algorithm_1_1ed25519" ], + [ "ed448", "structjwt_1_1algorithm_1_1ed448.html", "structjwt_1_1algorithm_1_1ed448" ], + [ "eddsa", "structjwt_1_1algorithm_1_1eddsa.html", "structjwt_1_1algorithm_1_1eddsa" ], + [ "es256", "structjwt_1_1algorithm_1_1es256.html", "structjwt_1_1algorithm_1_1es256" ], + [ "es256k", "structjwt_1_1algorithm_1_1es256k.html", "structjwt_1_1algorithm_1_1es256k" ], + [ "es384", "structjwt_1_1algorithm_1_1es384.html", "structjwt_1_1algorithm_1_1es384" ], + [ "es512", "structjwt_1_1algorithm_1_1es512.html", "structjwt_1_1algorithm_1_1es512" ], + [ "hmacsha", "structjwt_1_1algorithm_1_1hmacsha.html", "structjwt_1_1algorithm_1_1hmacsha" ], + [ "hs256", "structjwt_1_1algorithm_1_1hs256.html", "structjwt_1_1algorithm_1_1hs256" ], + [ "hs384", "structjwt_1_1algorithm_1_1hs384.html", "structjwt_1_1algorithm_1_1hs384" ], + [ "hs512", "structjwt_1_1algorithm_1_1hs512.html", "structjwt_1_1algorithm_1_1hs512" ], + [ "none", "structjwt_1_1algorithm_1_1none.html", "structjwt_1_1algorithm_1_1none" ], + [ "ps256", "structjwt_1_1algorithm_1_1ps256.html", "structjwt_1_1algorithm_1_1ps256" ], + [ "ps384", "structjwt_1_1algorithm_1_1ps384.html", "structjwt_1_1algorithm_1_1ps384" ], + [ "ps512", "structjwt_1_1algorithm_1_1ps512.html", "structjwt_1_1algorithm_1_1ps512" ], + [ "pss", "structjwt_1_1algorithm_1_1pss.html", "structjwt_1_1algorithm_1_1pss" ], + [ "rs256", "structjwt_1_1algorithm_1_1rs256.html", "structjwt_1_1algorithm_1_1rs256" ], + [ "rs384", "structjwt_1_1algorithm_1_1rs384.html", "structjwt_1_1algorithm_1_1rs384" ], + [ "rs512", "structjwt_1_1algorithm_1_1rs512.html", "structjwt_1_1algorithm_1_1rs512" ], + [ "rsa", "structjwt_1_1algorithm_1_1rsa.html", "structjwt_1_1algorithm_1_1rsa" ] + ] ], + [ "alphabet", "namespacejwt_1_1alphabet.html", [ + [ "helper", null, [ + [ "base64url_percent_encoding", "structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html", null ] + ] ], + [ "base64", "structjwt_1_1alphabet_1_1base64.html", null ], + [ "base64url", "structjwt_1_1alphabet_1_1base64url.html", null ] + ] ], + [ "error", "namespacejwt_1_1error.html", [ + [ "claim_not_present_exception", "structjwt_1_1error_1_1claim__not__present__exception.html", null ], + [ "ecdsa_exception", "structjwt_1_1error_1_1ecdsa__exception.html", null ], + [ "invalid_json_exception", "structjwt_1_1error_1_1invalid__json__exception.html", null ], + [ "rsa_exception", "structjwt_1_1error_1_1rsa__exception.html", null ], + [ "signature_generation_exception", "structjwt_1_1error_1_1signature__generation__exception.html", null ], + [ "signature_verification_exception", "structjwt_1_1error_1_1signature__verification__exception.html", null ], + [ "token_verification_exception", "structjwt_1_1error_1_1token__verification__exception.html", null ] + ] ], + [ "helper", "namespacejwt_1_1helper.html", [ + [ "evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html", "classjwt_1_1helper_1_1evp__pkey__handle" ] + ] ], + [ "traits", "namespacejwt_1_1traits.html", [ + [ "boost_json", "structjwt_1_1traits_1_1boost__json.html", null ], + [ "danielaparker_jsoncons", "structjwt_1_1traits_1_1danielaparker__jsoncons.html", "structjwt_1_1traits_1_1danielaparker__jsoncons" ], + [ "kazuho_picojson", "structjwt_1_1traits_1_1kazuho__picojson.html", null ], + [ "nlohmann_json", "structjwt_1_1traits_1_1nlohmann__json.html", null ], + [ "open_source_parsers_jsoncpp", "structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html", "structjwt_1_1traits_1_1open__source__parsers__jsoncpp" ] + ] ], + [ "verify_ops", null, [ + [ "date_after_claim", "structjwt_1_1verify__ops_1_1date__after__claim.html", null ], + [ "date_before_claim", "structjwt_1_1verify__ops_1_1date__before__claim.html", null ], + [ "equals_claim", "structjwt_1_1verify__ops_1_1equals__claim.html", null ], + [ "insensitive_string_claim", "structjwt_1_1verify__ops_1_1insensitive__string__claim.html", null ], + [ "is_subset_claim", "structjwt_1_1verify__ops_1_1is__subset__claim.html", null ], + [ "verify_context", "structjwt_1_1verify__ops_1_1verify__context.html", "structjwt_1_1verify__ops_1_1verify__context" ] + ] ], + [ "basic_claim", "classjwt_1_1basic__claim.html", "classjwt_1_1basic__claim" ], + [ "builder", "classjwt_1_1builder.html", "classjwt_1_1builder" ], + [ "decoded_jwt", "classjwt_1_1decoded__jwt.html", "classjwt_1_1decoded__jwt" ], + [ "default_clock", "structjwt_1_1default__clock.html", "structjwt_1_1default__clock" ], + [ "header", "classjwt_1_1header.html", "classjwt_1_1header" ], + [ "jwk", "classjwt_1_1jwk.html", "classjwt_1_1jwk" ], + [ "jwks", "classjwt_1_1jwks.html", "classjwt_1_1jwks" ], + [ "payload", "classjwt_1_1payload.html", "classjwt_1_1payload" ], + [ "verifier", "classjwt_1_1verifier.html", "classjwt_1_1verifier" ] + ] ] +]; \ No newline at end of file diff --git a/base_8h_source.html b/base_8h_source.html new file mode 100644 index 00000000..478069ce --- /dev/null +++ b/base_8h_source.html @@ -0,0 +1,433 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/base.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
base.h
+
+
+
1#ifndef JWT_CPP_BASE_H
+
2#define JWT_CPP_BASE_H
+
3
+
4#include <algorithm>
+
5#include <array>
+
6#include <cstdint>
+
7#include <stdexcept>
+
8#include <string>
+
9#include <vector>
+
10
+
11#ifdef __has_cpp_attribute
+
12#if __has_cpp_attribute(fallthrough)
+
13#define JWT_FALLTHROUGH [[fallthrough]]
+
14#endif
+
15#endif
+
16
+
17#ifndef JWT_FALLTHROUGH
+
18#define JWT_FALLTHROUGH
+
19#endif
+
20
+
+
21namespace jwt {
+
+
25 namespace alphabet {
+
+
32 struct base64 {
+
33 static const std::array<char, 64>& data() {
+
34 static constexpr std::array<char, 64> data{
+
35 {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+
36 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+
37 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+
38 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}};
+
39 return data;
+
40 }
+
41 static const std::array<int8_t, 256>& rdata() {
+
42 static constexpr std::array<int8_t, 256> rdata{{
+
43 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
44 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
+
45 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6,
+
46 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+
47 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+
48 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
49 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
50 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
51 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
52 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
53 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
54 }};
+
55 return rdata;
+
56 }
+
57 static const std::string& fill() {
+
58 static const std::string fill{"="};
+
59 return fill;
+
60 }
+
61 };
+
+
+
71 struct base64url {
+
72 static const std::array<char, 64>& data() {
+
73 static constexpr std::array<char, 64> data{
+
74 {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+
75 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+
76 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+
77 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'}};
+
78 return data;
+
79 }
+
80 static const std::array<int8_t, 256>& rdata() {
+
81 static constexpr std::array<int8_t, 256> rdata{{
+
82 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
83 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1,
+
84 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6,
+
85 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63,
+
86 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+
87 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
88 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
89 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
90 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
91 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
92 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
93 }};
+
94 return rdata;
+
95 }
+
96 static const std::string& fill() {
+
97 static const std::string fill{"%3d"};
+
98 return fill;
+
99 }
+
100 };
+
+
101 namespace helper {
+
+ +
109 static const std::array<char, 64>& data() {
+
110 static constexpr std::array<char, 64> data{
+
111 {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+
112 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+
113 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+
114 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'}};
+
115 return data;
+
116 }
+
117 static const std::array<int8_t, 256>& rdata() {
+
118 static constexpr std::array<int8_t, 256> rdata{{
+
119 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
120 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1,
+
121 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6,
+
122 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63,
+
123 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+
124 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
125 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
126 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
128 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
129 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
130 }};
+
131 return rdata;
+
132 }
+
133 static const std::vector<std::string>& fill() {
+
134 static const std::vector<std::string> fill{"%3D", "%3d"};
+
135 return fill;
+
136 }
+
137 };
+
+
138 } // namespace helper
+
139
+
140 inline uint32_t index(const std::array<int8_t, 256>& rdata, char symbol) {
+
141 auto index = rdata[static_cast<unsigned char>(symbol)];
+
142 if (index <= -1) { throw std::runtime_error("Invalid input: not within alphabet"); }
+
143 return static_cast<uint32_t>(index);
+
144 }
+
145 } // namespace alphabet
+
+
146
+
+
150 namespace base {
+
151 namespace details {
+
152 struct padding {
+
153 size_t count = 0;
+
154 size_t length = 0;
+
155
+
156 padding() = default;
+
157 padding(size_t count, size_t length) : count(count), length(length) {}
+
158
+
159 padding operator+(const padding& p) { return padding(count + p.count, length + p.length); }
+
160
+
161 friend bool operator==(const padding& lhs, const padding& rhs) {
+
162 return lhs.count == rhs.count && lhs.length == rhs.length;
+
163 }
+
164 };
+
165
+
166 inline padding count_padding(const std::string& base, const std::vector<std::string>& fills) {
+
167 for (const auto& fill : fills) {
+
168 if (base.size() < fill.size()) continue;
+
169 // Does the end of the input exactly match the fill pattern?
+
170 if (base.substr(base.size() - fill.size()) == fill) {
+
171 return padding{1, fill.length()} +
+
172 count_padding(base.substr(0, base.size() - fill.size()), fills);
+
173 }
+
174 }
+
175
+
176 return {};
+
177 }
+
178
+
179 inline std::string encode(const std::string& bin, const std::array<char, 64>& alphabet,
+
180 const std::string& fill) {
+
181 size_t size = bin.size();
+
182 std::string res;
+
183
+
184 // clear incomplete bytes
+
185 size_t fast_size = size - size % 3;
+
186 for (size_t i = 0; i < fast_size;) {
+
187 uint32_t octet_a = static_cast<unsigned char>(bin[i++]);
+
188 uint32_t octet_b = static_cast<unsigned char>(bin[i++]);
+
189 uint32_t octet_c = static_cast<unsigned char>(bin[i++]);
+
190
+
191 uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;
+
192
+
193 res += alphabet[(triple >> 3 * 6) & 0x3F];
+
194 res += alphabet[(triple >> 2 * 6) & 0x3F];
+
195 res += alphabet[(triple >> 1 * 6) & 0x3F];
+
196 res += alphabet[(triple >> 0 * 6) & 0x3F];
+
197 }
+
198
+
199 if (fast_size == size) return res;
+
200
+
201 size_t mod = size % 3;
+
202
+
203 uint32_t octet_a = fast_size < size ? static_cast<unsigned char>(bin[fast_size++]) : 0;
+
204 uint32_t octet_b = fast_size < size ? static_cast<unsigned char>(bin[fast_size++]) : 0;
+
205 uint32_t octet_c = fast_size < size ? static_cast<unsigned char>(bin[fast_size++]) : 0;
+
206
+
207 uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;
+
208
+
209 switch (mod) {
+
210 case 1:
+
211 res += alphabet[(triple >> 3 * 6) & 0x3F];
+
212 res += alphabet[(triple >> 2 * 6) & 0x3F];
+
213 res += fill;
+
214 res += fill;
+
215 break;
+
216 case 2:
+
217 res += alphabet[(triple >> 3 * 6) & 0x3F];
+
218 res += alphabet[(triple >> 2 * 6) & 0x3F];
+
219 res += alphabet[(triple >> 1 * 6) & 0x3F];
+
220 res += fill;
+
221 break;
+
222 default: break;
+
223 }
+
224
+
225 return res;
+
226 }
+
227
+
228 inline std::string decode(const std::string& base, const std::array<int8_t, 256>& rdata,
+
229 const std::vector<std::string>& fill) {
+
230 const auto pad = count_padding(base, fill);
+
231 if (pad.count > 2) throw std::runtime_error("Invalid input: too much fill");
+
232
+
233 const size_t size = base.size() - pad.length;
+
234 if ((size + pad.count) % 4 != 0) throw std::runtime_error("Invalid input: incorrect total size");
+
235
+
236 size_t out_size = size / 4 * 3;
+
237 std::string res;
+
238 res.reserve(out_size);
+
239
+
240 auto get_sextet = [&](size_t offset) { return alphabet::index(rdata, base[offset]); };
+
241
+
242 size_t fast_size = size - size % 4;
+
243 for (size_t i = 0; i < fast_size;) {
+
244 uint32_t sextet_a = get_sextet(i++);
+
245 uint32_t sextet_b = get_sextet(i++);
+
246 uint32_t sextet_c = get_sextet(i++);
+
247 uint32_t sextet_d = get_sextet(i++);
+
248
+
249 uint32_t triple =
+
250 (sextet_a << 3 * 6) + (sextet_b << 2 * 6) + (sextet_c << 1 * 6) + (sextet_d << 0 * 6);
+
251
+
252 res += static_cast<char>((triple >> 2 * 8) & 0xFFU);
+
253 res += static_cast<char>((triple >> 1 * 8) & 0xFFU);
+
254 res += static_cast<char>((triple >> 0 * 8) & 0xFFU);
+
255 }
+
256
+
257 if (pad.count == 0) return res;
+
258
+
259 uint32_t triple = (get_sextet(fast_size) << 3 * 6) + (get_sextet(fast_size + 1) << 2 * 6);
+
260
+
261 switch (pad.count) {
+
262 case 1:
+
263 triple |= (get_sextet(fast_size + 2) << 1 * 6);
+
264 res += static_cast<char>((triple >> 2 * 8) & 0xFFU);
+
265 res += static_cast<char>((triple >> 1 * 8) & 0xFFU);
+
266 break;
+
267 case 2: res += static_cast<char>((triple >> 2 * 8) & 0xFFU); break;
+
268 default: break;
+
269 }
+
270
+
271 return res;
+
272 }
+
273
+
274 inline std::string decode(const std::string& base, const std::array<int8_t, 256>& rdata,
+
275 const std::string& fill) {
+
276 return decode(base, rdata, std::vector<std::string>{fill});
+
277 }
+
278
+
279 inline std::string pad(const std::string& base, const std::string& fill) {
+
280 std::string padding;
+
281 switch (base.size() % 4) {
+
282 case 1: padding += fill; JWT_FALLTHROUGH;
+
283 case 2: padding += fill; JWT_FALLTHROUGH;
+
284 case 3: padding += fill; JWT_FALLTHROUGH;
+
285 default: break;
+
286 }
+
287
+
288 return base + padding;
+
289 }
+
290
+
291 inline std::string trim(const std::string& base, const std::string& fill) {
+
292 auto pos = base.find(fill);
+
293 return base.substr(0, pos);
+
294 }
+
295 } // namespace details
+
296
+
307 template<typename T>
+
+
308 std::string encode(const std::string& bin) {
+
309 return details::encode(bin, T::data(), T::fill());
+
310 }
+
+
321 template<typename T>
+
+
322 std::string decode(const std::string& base) {
+
323 return details::decode(base, T::rdata(), T::fill());
+
324 }
+
+
335 template<typename T>
+
+
336 std::string pad(const std::string& base) {
+
337 return details::pad(base, T::fill());
+
338 }
+
+
349 template<typename T>
+
+
350 std::string trim(const std::string& base) {
+
351 return details::trim(base, T::fill());
+
352 }
+
+
353 } // namespace base
+
+
354} // namespace jwt
+
+
355
+
356#endif
+
std::string trim(const std::string &base)
Generic base64 trimming.
Definition base.h:350
+
std::string decode(const std::string &base)
Generic base64 decoding.
Definition base.h:322
+
std::string pad(const std::string &base)
Generic base64 padding.
Definition base.h:336
+
std::string encode(const std::string &bin)
Generic base64 encoding.
Definition base.h:308
+
JSON Web Token.
Definition base.h:21
+
valid list of character when working with Base64
Definition base.h:32
+
valid list of character when working with Base64URL
Definition base.h:71
+
A General purpose base64url alphabet respecting the URI Case Normalization
Definition base.h:108
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 00000000..224b29aa Binary files /dev/null and b/bc_s.png differ diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 00000000..31ca888d Binary files /dev/null and b/bc_sd.png differ diff --git a/boost-json_2defaults_8h_source.html b/boost-json_2defaults_8h_source.html new file mode 100644 index 00000000..d3997edb --- /dev/null +++ b/boost-json_2defaults_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json/defaults.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
defaults.h
+
+
+
1#ifndef JWT_CPP_BOOST_JSON_DEFAULTS_H
+
2#define JWT_CPP_BOOST_JSON_DEFAULTS_H
+
3
+
4#ifndef JWT_DISABLE_PICOJSON
+
5#define JWT_DISABLE_PICOJSON
+
6#endif
+
7
+
8#include "traits.h"
+
9
+
10namespace jwt {
+ +
18
+
+ +
24 return verify<default_clock, traits::boost_json>(default_clock{});
+
25 }
+
+
26
+ +
34
+
35#ifndef JWT_DISABLE_BASE64
+
+
43 inline decoded_jwt<traits::boost_json> decode(const std::string& token) {
+ +
45 }
+
+
46#endif
+
47
+
59 template<typename Decode>
+
+
60 decoded_jwt<traits::boost_json> decode(const std::string& token, Decode decode) {
+ +
62 }
+
+
63
+
+
70 inline jwk<traits::boost_json> parse_jwk(const traits::boost_json::string_type& token) {
+
71 return jwk<traits::boost_json>(token);
+
72 }
+
+
73
+
+
80 inline jwks<traits::boost_json> parse_jwks(const traits::boost_json::string_type& token) {
+
81 return jwks<traits::boost_json>(token);
+
82 }
+
+
83
+ +
89} // namespace jwt
+
90
+
91#endif // JWT_CPP_BOOST_JSON_DEFAULTS_H
+
a class to store a generic JSON value as claim
Definition jwt.h:2549
+
Definition jwt.h:3089
+
Definition jwt.h:2954
+
JSON Web Key.
Definition jwt.h:3823
+
JWK Set.
Definition jwt.h:4034
+
Definition jwt.h:3560
+
JSON Web Token.
Definition base.h:21
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:4195
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:4209
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:4170
+
Definition jwt.h:4126
+
Definition jwt.h:3341
+
+
+ + + + diff --git a/boost-json_2traits_8h_source.html b/boost-json_2traits_8h_source.html new file mode 100644 index 00000000..186942c8 --- /dev/null +++ b/boost-json_2traits_8h_source.html @@ -0,0 +1,203 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json/traits.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits.h
+
+
+
1#ifndef JWT_CPP_BOOSTJSON_TRAITS_H
+
2#define JWT_CPP_BOOSTJSON_TRAITS_H
+
3
+
4#define JWT_DISABLE_PICOJSON
+
5#include "jwt-cpp/jwt.h"
+
6
+
7#include <boost/json.hpp>
+
8// if not boost JSON standalone then error...
+
9
+
10namespace jwt {
+
+
14 namespace traits {
+
15 namespace json = boost::json;
+
+
17 struct boost_json {
+
18 using value_type = json::value;
+
19 using object_type = json::object;
+
20 using array_type = json::array;
+
21 using string_type = std::string;
+
22 using number_type = double;
+
23 using integer_type = std::int64_t;
+
24 using boolean_type = bool;
+
25
+
26 static jwt::json::type get_type(const value_type& val) {
+
27 using jwt::json::type;
+
28
+
29 if (val.kind() == json::kind::bool_) return type::boolean;
+
30 if (val.kind() == json::kind::int64) return type::integer;
+
31 if (val.kind() == json::kind::uint64) // boost internally tracks two types of integers
+
32 return type::integer;
+
33 if (val.kind() == json::kind::double_) return type::number;
+
34 if (val.kind() == json::kind::string) return type::string;
+
35 if (val.kind() == json::kind::array) return type::array;
+
36 if (val.kind() == json::kind::object) return type::object;
+
37
+
38 throw std::logic_error("invalid type");
+
39 }
+
40
+
41 static object_type as_object(const value_type& val) {
+
42 if (val.kind() != json::kind::object) throw std::bad_cast();
+
43 return val.get_object();
+
44 }
+
45
+
46 static array_type as_array(const value_type& val) {
+
47 if (val.kind() != json::kind::array) throw std::bad_cast();
+
48 return val.get_array();
+
49 }
+
50
+
51 static string_type as_string(const value_type& val) {
+
52 if (val.kind() != json::kind::string) throw std::bad_cast();
+
53 return string_type{val.get_string()};
+
54 }
+
55
+
56 static integer_type as_integer(const value_type& val) {
+
57 switch (val.kind()) {
+
58 case json::kind::int64: return val.get_int64();
+
59 case json::kind::uint64: return static_cast<int64_t>(val.get_uint64());
+
60 default: throw std::bad_cast();
+
61 }
+
62 }
+
63
+
64 static boolean_type as_boolean(const value_type& val) {
+
65 if (val.kind() != json::kind::bool_) throw std::bad_cast();
+
66 return val.get_bool();
+
67 }
+
68
+
69 static number_type as_number(const value_type& val) {
+
70 if (val.kind() != json::kind::double_) throw std::bad_cast();
+
71 return val.get_double();
+
72 }
+
73
+
74 static bool parse(value_type& val, string_type str) {
+
75 val = json::parse(str);
+
76 return true;
+
77 }
+
78
+
79 static std::string serialize(const value_type& val) { return json::serialize(val); }
+
80 };
+
+
81 } // namespace traits
+
+
82} // namespace jwt
+
83
+
84#endif // JWT_CPP_BOOSTJSON_TRAITS_H
+
type
Categories for the various JSON types used in JWTs.
Definition jwt.h:2274
+
JSON Web Token.
Definition base.h:21
+
basic_claim's JSON trait implementation for Boost.JSON
Definition traits.h:17
+
+
+ + + + diff --git a/classes.html b/classes.html new file mode 100644 index 00000000..6d298e56 --- /dev/null +++ b/classes.html @@ -0,0 +1,161 @@ + + + + + + + +JWT-CPP: Class Index + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | H | I | J | K | N | O | P | R | S | T | V
+
+
+
A
+
danielaparker_jsoncons::array_type (jwt::traits)
open_source_parsers_jsoncpp::array_type (jwt::traits)
+
+
B
+
base64 (jwt::alphabet)
base64url (jwt::alphabet)
base64url_percent_encoding (jwt::alphabet::helper)
basic_claim (jwt)
boost_json (jwt::traits)
builder (jwt)
+
+
C
+
claim_not_present_exception (jwt::error)
+
+
D
+
danielaparker_jsoncons (jwt::traits)
date_after_claim (jwt::verify_ops)
date_before_claim (jwt::verify_ops)
decoded_jwt (jwt)
default_clock (jwt)
+
+
E
+
ecdsa (jwt::algorithm)
ecdsa_exception (jwt::error)
ed25519 (jwt::algorithm)
ed448 (jwt::algorithm)
eddsa (jwt::algorithm)
equals_claim (jwt::verify_ops)
es256 (jwt::algorithm)
es256k (jwt::algorithm)
es384 (jwt::algorithm)
es512 (jwt::algorithm)
evp_pkey_handle (jwt::helper)
+
+
H
+
header (jwt)
hmacsha (jwt::algorithm)
hs256 (jwt::algorithm)
hs384 (jwt::algorithm)
hs512 (jwt::algorithm)
+
+
I
+
insensitive_string_claim (jwt::verify_ops)
invalid_json_exception (jwt::error)
is_subset_claim (jwt::verify_ops)
+
+
J
+
jwk (jwt)
jwks (jwt)
+
+
K
+
kazuho_picojson (jwt::traits)
+
+
N
+
nlohmann_json (jwt::traits)
none (jwt::algorithm)
+
+
O
+
danielaparker_jsoncons::object_type (jwt::traits)
open_source_parsers_jsoncpp::object_type (jwt::traits)
open_source_parsers_jsoncpp (jwt::traits)
+
+
P
+
payload (jwt)
ps256 (jwt::algorithm)
ps384 (jwt::algorithm)
ps512 (jwt::algorithm)
pss (jwt::algorithm)
+
+
R
+
rs256 (jwt::algorithm)
rs384 (jwt::algorithm)
rs512 (jwt::algorithm)
rsa (jwt::algorithm)
rsa_exception (jwt::error)
+
+
S
+
signature_generation_exception (jwt::error)
signature_verification_exception (jwt::error)
+
+
T
+
token_verification_exception (jwt::error)
+
+
V
+
verifier (jwt)
verify_context (jwt::verify_ops)
+
+
+
+ + + + diff --git a/classjwt_1_1basic__claim-members.html b/classjwt_1_1basic__claim-members.html new file mode 100644 index 00000000..63f17d5f --- /dev/null +++ b/classjwt_1_1basic__claim-members.html @@ -0,0 +1,137 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::basic_claim< json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::basic_claim< json_traits >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
as_array() constjwt::basic_claim< json_traits >inline
as_boolean() constjwt::basic_claim< json_traits >inline
as_date() constjwt::basic_claim< json_traits >inline
as_integer() constjwt::basic_claim< json_traits >inline
as_number() constjwt::basic_claim< json_traits >inline
as_set() constjwt::basic_claim< json_traits >inline
as_string() constjwt::basic_claim< json_traits >inline
basic_claim()=default (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >
basic_claim(const basic_claim &)=default (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >
basic_claim(basic_claim &&)=default (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >
basic_claim(typename json_traits::string_type s) (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >inline
basic_claim(const date &d) (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >inline
basic_claim(typename json_traits::array_type a) (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >inline
basic_claim(typename json_traits::value_type v) (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >inline
basic_claim(const set_t &s) (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >inline
basic_claim(Iterator begin, Iterator end) (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >inline
get_type() constjwt::basic_claim< json_traits >inline
operator<<(std::ostream &os)jwt::basic_claim< json_traits >inline
operator=(const basic_claim &)=default (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >
operator=(basic_claim &&)=default (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >
operator>>(std::istream &is)jwt::basic_claim< json_traits >inline
set_t typedefjwt::basic_claim< json_traits >
to_json() constjwt::basic_claim< json_traits >inline
~basic_claim()=default (defined in jwt::basic_claim< json_traits >)jwt::basic_claim< json_traits >
+
+ + + + diff --git a/classjwt_1_1basic__claim.html b/classjwt_1_1basic__claim.html new file mode 100644 index 00000000..374e639f --- /dev/null +++ b/classjwt_1_1basic__claim.html @@ -0,0 +1,574 @@ + + + + + + + +JWT-CPP: jwt::basic_claim< json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::basic_claim< json_traits > Class Template Reference
+
+
+ +

a class to store a generic JSON value as claim + More...

+ +

#include <jwt.h>

+ + + + +

+Public Types

using set_t = std::set<typename json_traits::string_type>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

basic_claim (const basic_claim &)=default
 
basic_claim (basic_claim &&)=default
 
+basic_claimoperator= (const basic_claim &)=default
 
+basic_claimoperator= (basic_claim &&)=default
 
+JWT_CLAIM_EXPLICIT basic_claim (typename json_traits::string_type s)
 
+JWT_CLAIM_EXPLICIT basic_claim (const date &d)
 
+JWT_CLAIM_EXPLICIT basic_claim (typename json_traits::array_type a)
 
+JWT_CLAIM_EXPLICIT basic_claim (typename json_traits::value_type v)
 
+JWT_CLAIM_EXPLICIT basic_claim (const set_t &s)
 
+template<typename Iterator >
 basic_claim (Iterator begin, Iterator end)
 
json_traits::value_type to_json () const
 
std::istream & operator>> (std::istream &is)
 
std::ostream & operator<< (std::ostream &os)
 
json::type get_type () const
 
json_traits::string_type as_string () const
 
date as_date () const
 Get the contained JSON value as a date.
 
json_traits::array_type as_array () const
 
set_t as_set () const
 
json_traits::integer_type as_integer () const
 
json_traits::boolean_type as_boolean () const
 
json_traits::number_type as_number () const
 
+

Detailed Description

+
template<typename json_traits>
+class jwt::basic_claim< json_traits >

a class to store a generic JSON value as claim

+
Template Parameters
+ + +
json_traits: JSON implementation traits
+
+
+
See also
RFC 7519: JSON Web Token (JWT)
+

Member Typedef Documentation

+ +

◆ set_t

+ +
+
+
+template<typename json_traits >
+ + + + +
using jwt::basic_claim< json_traits >::set_t = std::set<typename json_traits::string_type>
+
+

Order list of strings

+ +
+
+

Member Function Documentation

+ +

◆ as_array()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::array_type jwt::basic_claim< json_traits >::as_array () const
+
+inline
+
+

Get the contained JSON value as an array

Returns
content as array
+
Exceptions
+ + +
std::bad_castContent was not an array
+
+
+ +
+
+ +

◆ as_boolean()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::boolean_type jwt::basic_claim< json_traits >::as_boolean () const
+
+inline
+
+

Get the contained JSON value as a bool

Returns
content as bool
+
Exceptions
+ + +
std::bad_castContent was not a bool
+
+
+ +
+
+ +

◆ as_date()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
date jwt::basic_claim< json_traits >::as_date () const
+
+inline
+
+ +

Get the contained JSON value as a date.

+

If the value is a decimal, it is rounded up to the closest integer

+
Returns
content as date
+
Exceptions
+ + +
std::bad_castContent was not a date
+
+
+ +
+
+ +

◆ as_integer()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::integer_type jwt::basic_claim< json_traits >::as_integer () const
+
+inline
+
+

Get the contained JSON value as an integer

Returns
content as int
+
Exceptions
+ + +
std::bad_castContent was not an int
+
+
+ +
+
+ +

◆ as_number()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::number_type jwt::basic_claim< json_traits >::as_number () const
+
+inline
+
+

Get the contained JSON value as a number

Returns
content as double
+
Exceptions
+ + +
std::bad_castContent was not a number
+
+
+ +
+
+ +

◆ as_set()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
set_t jwt::basic_claim< json_traits >::as_set () const
+
+inline
+
+

Get the contained JSON value as a set of strings

Returns
content as set of strings
+
Exceptions
+ + +
std::bad_castContent was not an array of string
+
+
+ +
+
+ +

◆ as_string()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::basic_claim< json_traits >::as_string () const
+
+inline
+
+

Get the contained JSON value as a string

Returns
content as string
+
Exceptions
+ + +
std::bad_castContent was not a string
+
+
+ +
+
+ +

◆ get_type()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json::type jwt::basic_claim< json_traits >::get_type () const
+
+inline
+
+

Get type of contained JSON value

Returns
Type
+
Exceptions
+ + +
std::logic_errorAn internal error occurred
+
+
+ +
+
+ +

◆ operator<<()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
std::ostream & jwt::basic_claim< json_traits >::operator<< (std::ostream & os)
+
+inline
+
+

Serialize claim to output stream from wrapped JSON value

Returns
output stream
+ +
+
+ +

◆ operator>>()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
std::istream & jwt::basic_claim< json_traits >::operator>> (std::istream & is)
+
+inline
+
+

Parse input stream into underlying JSON value

Returns
input stream
+ +
+
+ +

◆ to_json()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::value_type jwt::basic_claim< json_traits >::to_json () const
+
+inline
+
+

Get wrapped JSON value

Returns
Wrapped JSON value
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1basic__claim.js b/classjwt_1_1basic__claim.js new file mode 100644 index 00000000..ee6b6001 --- /dev/null +++ b/classjwt_1_1basic__claim.js @@ -0,0 +1,15 @@ +var classjwt_1_1basic__claim = +[ + [ "set_t", "classjwt_1_1basic__claim.html#a7f91e69345710ff7d8c4a7cc9089c000", null ], + [ "as_array", "classjwt_1_1basic__claim.html#af06fe57ced0b69e5d3e0480b283ac31f", null ], + [ "as_boolean", "classjwt_1_1basic__claim.html#a97442d8e2ba7ac24201d1d16d6c32aef", null ], + [ "as_date", "classjwt_1_1basic__claim.html#aadef1dd6e6275680067940fedb06ab08", null ], + [ "as_integer", "classjwt_1_1basic__claim.html#ae2c58375c443bfc1037066edaf88be53", null ], + [ "as_number", "classjwt_1_1basic__claim.html#a2000561f92e202acdeb532f15056e764", null ], + [ "as_set", "classjwt_1_1basic__claim.html#a33b043d261a23cd108778893a24ae976", null ], + [ "as_string", "classjwt_1_1basic__claim.html#afe7cd8e0feebff55c05adfe71748e1fd", null ], + [ "get_type", "classjwt_1_1basic__claim.html#a59be52f75f5d32386f0e57be25dda38a", null ], + [ "operator<<", "classjwt_1_1basic__claim.html#acb0dd9d4a9c683a33877b56c386a1428", null ], + [ "operator>>", "classjwt_1_1basic__claim.html#a81c5d71c9421d074f766e7c5a16106b2", null ], + [ "to_json", "classjwt_1_1basic__claim.html#ae47b0e6de750563a2ba1f9e5628b72ee", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1builder-members.html b/classjwt_1_1builder-members.html new file mode 100644 index 00000000..3a04150e --- /dev/null +++ b/classjwt_1_1builder-members.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::builder< Clock, json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::builder< Clock, json_traits >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
builder(Clock c)jwt::builder< Clock, json_traits >inline
set_algorithm(typename json_traits::string_type str)jwt::builder< Clock, json_traits >inline
set_audience(typename json_traits::array_type a)jwt::builder< Clock, json_traits >inline
set_audience(typename json_traits::string_type aud)jwt::builder< Clock, json_traits >inline
set_content_type(typename json_traits::string_type str)jwt::builder< Clock, json_traits >inline
set_expires_at(const date &d)jwt::builder< Clock, json_traits >inline
set_expires_in(const std::chrono::duration< Rep > &d)jwt::builder< Clock, json_traits >inline
set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)jwt::builder< Clock, json_traits >inline
set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)jwt::builder< Clock, json_traits >inline
set_id(const typename json_traits::string_type &str)jwt::builder< Clock, json_traits >inline
set_issued_at(const date &d)jwt::builder< Clock, json_traits >inline
set_issued_now()jwt::builder< Clock, json_traits >inline
set_issuer(typename json_traits::string_type str)jwt::builder< Clock, json_traits >inline
set_key_id(typename json_traits::string_type str)jwt::builder< Clock, json_traits >inline
set_not_before(const date &d)jwt::builder< Clock, json_traits >inline
set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)jwt::builder< Clock, json_traits >inline
set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)jwt::builder< Clock, json_traits >inline
set_subject(typename json_traits::string_type str)jwt::builder< Clock, json_traits >inline
set_type(typename json_traits::string_type str)jwt::builder< Clock, json_traits >inline
sign(const Algo &algo, Encode encode) constjwt::builder< Clock, json_traits >inline
sign(const Algo &algo) constjwt::builder< Clock, json_traits >inline
sign(const Algo &algo, Encode encode, std::error_code &ec) constjwt::builder< Clock, json_traits >inline
sign(const Algo &algo, std::error_code &ec) constjwt::builder< Clock, json_traits >inline
+
+ + + + diff --git a/classjwt_1_1builder.html b/classjwt_1_1builder.html new file mode 100644 index 00000000..2ee6940f --- /dev/null +++ b/classjwt_1_1builder.html @@ -0,0 +1,1031 @@ + + + + + + + +JWT-CPP: jwt::builder< Clock, json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::builder< Clock, json_traits > Class Template Reference
+
+
+ +

#include <jwt.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JWT_CLAIM_EXPLICIT builder (Clock c)
 
builderset_header_claim (const typename json_traits::string_type &id, typename json_traits::value_type c)
 
builderset_header_claim (const typename json_traits::string_type &id, basic_claim< json_traits > c)
 
builderset_payload_claim (const typename json_traits::string_type &id, typename json_traits::value_type c)
 
builderset_payload_claim (const typename json_traits::string_type &id, basic_claim< json_traits > c)
 
builderset_algorithm (typename json_traits::string_type str)
 Set algorithm claim You normally don't need to do this, as the algorithm is automatically set if you don't change it.
 
builderset_type (typename json_traits::string_type str)
 
builderset_content_type (typename json_traits::string_type str)
 
builderset_key_id (typename json_traits::string_type str)
 Set key id claim.
 
builderset_issuer (typename json_traits::string_type str)
 
builderset_subject (typename json_traits::string_type str)
 
builderset_audience (typename json_traits::array_type a)
 
builderset_audience (typename json_traits::string_type aud)
 
builderset_expires_at (const date &d)
 
template<class Rep >
builderset_expires_in (const std::chrono::duration< Rep > &d)
 
builderset_not_before (const date &d)
 
builderset_issued_at (const date &d)
 
builderset_issued_now ()
 
builderset_id (const typename json_traits::string_type &str)
 
template<typename Algo , typename Encode >
json_traits::string_type sign (const Algo &algo, Encode encode) const
 
template<typename Algo >
json_traits::string_type sign (const Algo &algo) const
 
template<typename Algo , typename Encode >
json_traits::string_type sign (const Algo &algo, Encode encode, std::error_code &ec) const
 
template<typename Algo >
json_traits::string_type sign (const Algo &algo, std::error_code &ec) const
 
+

Detailed Description

+
template<typename Clock, typename json_traits>
+class jwt::builder< Clock, json_traits >

Builder class to build and sign a new token Use jwt::create() to get an instance of this class.

+

Constructor & Destructor Documentation

+ +

◆ builder()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
JWT_CLAIM_EXPLICIT jwt::builder< Clock, json_traits >::builder (Clock c)
+
+inline
+
+

Constructor for building a new builder instance

Parameters
+ + +
cClock instance
+
+
+ +
+
+

Member Function Documentation

+ +

◆ set_algorithm()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_algorithm (typename json_traits::string_type str)
+
+inline
+
+ +

Set algorithm claim You normally don't need to do this, as the algorithm is automatically set if you don't change it.

+
Parameters
+ + +
strName of algorithm
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_audience() [1/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_audience (typename json_traits::array_type a)
+
+inline
+
+

Set audience claim

Parameters
+ + +
aAudience set
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_audience() [2/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_audience (typename json_traits::string_type aud)
+
+inline
+
+

Set audience claim

Parameters
+ + +
audSingle audience
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_content_type()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_content_type (typename json_traits::string_type str)
+
+inline
+
+

Set content type claim

Parameters
+ + +
strType to set
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_expires_at()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_expires_at (const date & d)
+
+inline
+
+

Set expires at claim

Parameters
+ + +
dExpires time
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_expires_in()

+ +
+
+
+template<typename Clock , typename json_traits >
+
+template<class Rep >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_expires_in (const std::chrono::duration< Rep > & d)
+
+inline
+
+

Set expires at claim to d from the current moment

Parameters
+ + +
dtoken expiration timeout
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_header_claim() [1/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_header_claim (const typename json_traits::string_type & id,
basic_claim< json_traits > c )
+
+inline
+
+

Set a header claim.

Parameters
+ + + +
idName of the claim
cClaim to add
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_header_claim() [2/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_header_claim (const typename json_traits::string_type & id,
typename json_traits::value_type c )
+
+inline
+
+

Set a header claim.

Parameters
+ + + +
idName of the claim
cClaim to add
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_id()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_id (const typename json_traits::string_type & str)
+
+inline
+
+

Set id claim

Parameters
+ + +
strID to set
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_issued_at()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_issued_at (const date & d)
+
+inline
+
+

Set issued at claim

Parameters
+ + +
dIssued at time, should be current time
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_issued_now()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_issued_now ()
+
+inline
+
+

Set issued at claim to the current moment

Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_issuer()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_issuer (typename json_traits::string_type str)
+
+inline
+
+

Set issuer claim

Parameters
+ + +
strIssuer to set
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_key_id()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_key_id (typename json_traits::string_type str)
+
+inline
+
+ +

Set key id claim.

+
Parameters
+ + +
strKey id to set
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_not_before()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_not_before (const date & d)
+
+inline
+
+

Set not before claim

Parameters
+ + +
dFirst valid time
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_payload_claim() [1/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_payload_claim (const typename json_traits::string_type & id,
basic_claim< json_traits > c )
+
+inline
+
+

Set a payload claim.

Parameters
+ + + +
idName of the claim
cClaim to add
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_payload_claim() [2/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_payload_claim (const typename json_traits::string_type & id,
typename json_traits::value_type c )
+
+inline
+
+

Set a payload claim.

Parameters
+ + + +
idName of the claim
cClaim to add
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_subject()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_subject (typename json_traits::string_type str)
+
+inline
+
+

Set subject claim

Parameters
+ + +
strSubject to set
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ set_type()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
builder & jwt::builder< Clock, json_traits >::set_type (typename json_traits::string_type str)
+
+inline
+
+

Set type claim

Parameters
+ + +
strType to set
+
+
+
Returns
*this to allow for method chaining
+ +
+
+ +

◆ sign() [1/4]

+ +
+
+
+template<typename Clock , typename json_traits >
+
+template<typename Algo >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::builder< Clock, json_traits >::sign (const Algo & algo) const
+
+inline
+
+

Sign token and return result

+

using the jwt::base functions provided

+
Parameters
+ + +
algoInstance of an algorithm to sign the token with
+
+
+
Returns
Final token as a string
+ +
+
+ +

◆ sign() [2/4]

+ +
+
+
+template<typename Clock , typename json_traits >
+
+template<typename Algo , typename Encode >
+ + + + + +
+ + + + + + + + + + + +
json_traits::string_type jwt::builder< Clock, json_traits >::sign (const Algo & algo,
Encode encode ) const
+
+inline
+
+

Sign token and return result

Template Parameters
+ + + +
AlgoCallable method which takes a string_type and return the signed input as a string_type
EncodeCallable method which takes a string_type and base64url safe encodes it, MUST return the result with no padding; trim the result.
+
+
+
Parameters
+ + + +
algoInstance of an algorithm to sign the token with
encodeCallable to transform the serialized json to base64 with no padding
+
+
+
Returns
Final token as a string
+
Note
If the 'alg' header in not set in the token it will be set to algo.name()
+ +
+
+ +

◆ sign() [3/4]

+ +
+
+
+template<typename Clock , typename json_traits >
+
+template<typename Algo , typename Encode >
+ + + + + +
+ + + + + + + + + + + + + + + + +
json_traits::string_type jwt::builder< Clock, json_traits >::sign (const Algo & algo,
Encode encode,
std::error_code & ec ) const
+
+inline
+
+

Sign token and return result

Template Parameters
+ + + +
AlgoCallable method which takes a string_type and return the signed input as a string_type
EncodeCallable method which takes a string_type and base64url safe encodes it, MUST return the result with no padding; trim the result.
+
+
+
Parameters
+ + + + +
algoInstance of an algorithm to sign the token with
encodeCallable to transform the serialized json to base64 with no padding
ecerror_code filled with details on error
+
+
+
Returns
Final token as a string
+
Note
If the 'alg' header in not set in the token it will be set to algo.name()
+ +
+
+ +

◆ sign() [4/4]

+ +
+
+
+template<typename Clock , typename json_traits >
+
+template<typename Algo >
+ + + + + +
+ + + + + + + + + + + +
json_traits::string_type jwt::builder< Clock, json_traits >::sign (const Algo & algo,
std::error_code & ec ) const
+
+inline
+
+

Sign token and return result

+

using the jwt::base functions provided

+
Parameters
+ + + +
algoInstance of an algorithm to sign the token with
ecerror_code filled with details on error
+
+
+
Returns
Final token as a string
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1builder.js b/classjwt_1_1builder.js new file mode 100644 index 00000000..7b31fdee --- /dev/null +++ b/classjwt_1_1builder.js @@ -0,0 +1,26 @@ +var classjwt_1_1builder = +[ + [ "builder", "classjwt_1_1builder.html#a526a5810677403c5cf4825ff29211bad", null ], + [ "set_algorithm", "classjwt_1_1builder.html#a30c8575e0bc051ddbd059cc8f33901af", null ], + [ "set_audience", "classjwt_1_1builder.html#aa467c6fdecc6eb24a15aa8d12ad8bf3f", null ], + [ "set_audience", "classjwt_1_1builder.html#a0802e89ea6f786e5054e65706519a7fc", null ], + [ "set_content_type", "classjwt_1_1builder.html#ac981cab62339602cde466e485fd8ba73", null ], + [ "set_expires_at", "classjwt_1_1builder.html#a3a86ce9d30ba356d635096aa52edce59", null ], + [ "set_expires_in", "classjwt_1_1builder.html#a2676613dcdb3e323ba413732fecc5ce2", null ], + [ "set_header_claim", "classjwt_1_1builder.html#aa1a54e4729b429f39d0653dc8ab68c05", null ], + [ "set_header_claim", "classjwt_1_1builder.html#a9d38527f7bc6a602398d31463e02cd45", null ], + [ "set_id", "classjwt_1_1builder.html#a84f4a5eb95b2b1062ac35535e722b2db", null ], + [ "set_issued_at", "classjwt_1_1builder.html#a5f04f42f90eac4ae249fc1ad8714389e", null ], + [ "set_issued_now", "classjwt_1_1builder.html#aebdd8cc359dd83a93d16356e7e0d3ec9", null ], + [ "set_issuer", "classjwt_1_1builder.html#af3fac73d576d0faa6e876f02d99c9823", null ], + [ "set_key_id", "classjwt_1_1builder.html#af20342c125d75feef037649b74c56e94", null ], + [ "set_not_before", "classjwt_1_1builder.html#ae0246e2cb498e06541ca2980c9da6c76", null ], + [ "set_payload_claim", "classjwt_1_1builder.html#a0e7800e32fa1012cbeaf283786a5e586", null ], + [ "set_payload_claim", "classjwt_1_1builder.html#a8290a4ad976f0d36f4da6b2310ad847a", null ], + [ "set_subject", "classjwt_1_1builder.html#ae5722127fba2d9567c6b68a741cbba2f", null ], + [ "set_type", "classjwt_1_1builder.html#a49a4e85df1c98faf540b4056a1d00f11", null ], + [ "sign", "classjwt_1_1builder.html#a7e07c097549542adbafbcdaaf3f96edd", null ], + [ "sign", "classjwt_1_1builder.html#aa25101397fd0eedd6e7025e72e4ebfc0", null ], + [ "sign", "classjwt_1_1builder.html#ab3a46c8adeb6b9e5dc76a753bb78cd14", null ], + [ "sign", "classjwt_1_1builder.html#a563bd0c77e05a6ca908aee9b0a8b97e9", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1decoded__jwt-members.html b/classjwt_1_1decoded__jwt-members.html new file mode 100644 index 00000000..cc677a76 --- /dev/null +++ b/classjwt_1_1decoded__jwt-members.html @@ -0,0 +1,160 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::decoded_jwt< json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::decoded_jwt< json_traits >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
basic_claim_t typedef (defined in jwt::decoded_jwt< json_traits >)jwt::decoded_jwt< json_traits >
decoded_jwt(const typename json_traits::string_type &token)jwt::decoded_jwt< json_traits >inline
decoded_jwt(const typename json_traits::string_type &token, Decode decode)jwt::decoded_jwt< json_traits >inline
get_algorithm() constjwt::header< json_traits >inline
get_audience() constjwt::payload< json_traits >inline
get_content_type() constjwt::header< json_traits >inline
get_expires_at() constjwt::payload< json_traits >inline
get_header() const noexceptjwt::decoded_jwt< json_traits >inline
get_header_base64() const noexceptjwt::decoded_jwt< json_traits >inline
get_header_claim(const typename json_traits::string_type &name) constjwt::decoded_jwt< json_traits >inline
get_header_json() constjwt::decoded_jwt< json_traits >inline
get_id() constjwt::payload< json_traits >inline
get_issued_at() constjwt::payload< json_traits >inline
get_issuer() constjwt::payload< json_traits >inline
get_key_id() constjwt::header< json_traits >inline
get_not_before() constjwt::payload< json_traits >inline
get_payload() const noexceptjwt::decoded_jwt< json_traits >inline
get_payload_base64() const noexceptjwt::decoded_jwt< json_traits >inline
get_payload_claim(const typename json_traits::string_type &name) constjwt::decoded_jwt< json_traits >inline
get_payload_json() constjwt::decoded_jwt< json_traits >inline
get_signature() const noexceptjwt::decoded_jwt< json_traits >inline
get_signature_base64() const noexceptjwt::decoded_jwt< json_traits >inline
get_subject() constjwt::payload< json_traits >inline
get_token() const noexceptjwt::decoded_jwt< json_traits >inline
get_type() constjwt::header< json_traits >inline
has_algorithm() const noexceptjwt::header< json_traits >inline
has_audience() const noexceptjwt::payload< json_traits >inline
has_content_type() const noexceptjwt::header< json_traits >inline
has_expires_at() const noexceptjwt::payload< json_traits >inline
has_header_claim(const typename json_traits::string_type &name) const noexceptjwt::header< json_traits >inline
has_id() const noexceptjwt::payload< json_traits >inline
has_issued_at() const noexceptjwt::payload< json_traits >inline
has_issuer() const noexceptjwt::payload< json_traits >inline
has_key_id() const noexceptjwt::header< json_traits >inline
has_not_before() const noexceptjwt::payload< json_traits >inline
has_payload_claim(const typename json_traits::string_type &name) const noexceptjwt::payload< json_traits >inline
has_subject() const noexceptjwt::payload< json_traits >inline
has_type() const noexceptjwt::header< json_traits >inline
headerjwt::decoded_jwt< json_traits >protected
header_base64jwt::decoded_jwt< json_traits >protected
header_claims (defined in jwt::header< json_traits >)jwt::header< json_traits >protected
payloadjwt::decoded_jwt< json_traits >protected
payload_base64jwt::decoded_jwt< json_traits >protected
payload_claims (defined in jwt::payload< json_traits >)jwt::payload< json_traits >protected
signaturejwt::decoded_jwt< json_traits >protected
signature_base64jwt::decoded_jwt< json_traits >protected
tokenjwt::decoded_jwt< json_traits >protected
+
+ + + + diff --git a/classjwt_1_1decoded__jwt.html b/classjwt_1_1decoded__jwt.html new file mode 100644 index 00000000..254d0964 --- /dev/null +++ b/classjwt_1_1decoded__jwt.html @@ -0,0 +1,703 @@ + + + + + + + +JWT-CPP: jwt::decoded_jwt< json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::decoded_jwt< json_traits > Class Template Reference
+
+
+ +

#include <jwt.h>

+
+Inheritance diagram for jwt::decoded_jwt< json_traits >:
+
+
+
[legend]
+ + + + + + + + + + +

+Public Types

+using basic_claim_t = basic_claim<json_traits>
 
- Public Types inherited from jwt::header< json_traits >
+using basic_claim_t = basic_claim<json_traits>
 
- Public Types inherited from jwt::payload< json_traits >
+using basic_claim_t = basic_claim<json_traits>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JWT_CLAIM_EXPLICIT decoded_jwt (const typename json_traits::string_type &token)
 Parses a given token.
 
template<typename Decode >
 decoded_jwt (const typename json_traits::string_type &token, Decode decode)
 Parses a given token.
 
const json_traits::string_type & get_token () const noexcept
 
const json_traits::string_type & get_header () const noexcept
 
const json_traits::string_type & get_payload () const noexcept
 
const json_traits::string_type & get_signature () const noexcept
 
const json_traits::string_type & get_header_base64 () const noexcept
 
const json_traits::string_type & get_payload_base64 () const noexcept
 
const json_traits::string_type & get_signature_base64 () const noexcept
 
json_traits::object_type get_payload_json () const
 
json_traits::object_type get_header_json () const
 
basic_claim_t get_payload_claim (const typename json_traits::string_type &name) const
 
basic_claim_t get_header_claim (const typename json_traits::string_type &name) const
 
- Public Member Functions inherited from jwt::header< json_traits >
bool has_algorithm () const noexcept
 
bool has_type () const noexcept
 
bool has_content_type () const noexcept
 
bool has_key_id () const noexcept
 
json_traits::string_type get_algorithm () const
 
json_traits::string_type get_type () const
 
json_traits::string_type get_content_type () const
 
json_traits::string_type get_key_id () const
 
bool has_header_claim (const typename json_traits::string_type &name) const noexcept
 
basic_claim_t get_header_claim (const typename json_traits::string_type &name) const
 
- Public Member Functions inherited from jwt::payload< json_traits >
bool has_issuer () const noexcept
 
bool has_subject () const noexcept
 
bool has_audience () const noexcept
 
bool has_expires_at () const noexcept
 
bool has_not_before () const noexcept
 
bool has_issued_at () const noexcept
 
bool has_id () const noexcept
 
json_traits::string_type get_issuer () const
 
json_traits::string_type get_subject () const
 
basic_claim_t::set_t get_audience () const
 
date get_expires_at () const
 
date get_not_before () const
 
date get_issued_at () const
 
json_traits::string_type get_id () const
 
bool has_payload_claim (const typename json_traits::string_type &name) const noexcept
 
basic_claim_t get_payload_claim (const typename json_traits::string_type &name) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+json_traits::string_type token
 Unmodified token, as passed to constructor.
 
+json_traits::string_type header
 Header part decoded from base64.
 
+json_traits::string_type header_base64
 Unmodified header part in base64.
 
+json_traits::string_type payload
 Payload part decoded from base64.
 
+json_traits::string_type payload_base64
 Unmodified payload part in base64.
 
+json_traits::string_type signature
 Signature part decoded from base64.
 
+json_traits::string_type signature_base64
 Unmodified signature part in base64.
 
- Protected Attributes inherited from jwt::header< json_traits >
+details::map_of_claims< json_traits > header_claims
 
- Protected Attributes inherited from jwt::payload< json_traits >
+details::map_of_claims< json_traits > payload_claims
 
+

Detailed Description

+
template<typename json_traits>
+class jwt::decoded_jwt< json_traits >

Class containing all information about a decoded token

+

Constructor & Destructor Documentation

+ +

◆ decoded_jwt() [1/2]

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
JWT_CLAIM_EXPLICIT jwt::decoded_jwt< json_traits >::decoded_jwt (const typename json_traits::string_type & token)
+
+inline
+
+ +

Parses a given token.

+
Note
Decodes using the jwt::base64url which supports an std::string
+
Parameters
+ + +
tokenThe token to parse
+
+
+
Exceptions
+ + + +
std::invalid_argumentToken is not in correct format
std::runtime_errorBase64 decoding failed or invalid json
+
+
+ +
+
+ +

◆ decoded_jwt() [2/2]

+ +
+
+
+template<typename json_traits >
+
+template<typename Decode >
+ + + + + +
+ + + + + + + + + + + +
jwt::decoded_jwt< json_traits >::decoded_jwt (const typename json_traits::string_type & token,
Decode decode )
+
+inline
+
+ +

Parses a given token.

+
Template Parameters
+ + +
Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
+
+
+
Parameters
+ + + +
tokenThe token to parse
decodeThe function to decode the token
+
+
+
Exceptions
+ + + +
std::invalid_argumentToken is not in correct format
std::runtime_errorBase64 decoding failed or invalid json
+
+
+ +
+
+

Member Function Documentation

+ +

◆ get_header()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
const json_traits::string_type & jwt::decoded_jwt< json_traits >::get_header () const
+
+inlinenoexcept
+
+

Get header part as json string

Returns
header part after base64 decoding
+ +
+
+ +

◆ get_header_base64()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
const json_traits::string_type & jwt::decoded_jwt< json_traits >::get_header_base64 () const
+
+inlinenoexcept
+
+

Get header part as base64 string

Returns
header part before base64 decoding
+ +
+
+ +

◆ get_header_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
basic_claim_t jwt::decoded_jwt< json_traits >::get_header_claim (const typename json_traits::string_type & name) const
+
+inline
+
+

Get a header claim by name

+
Parameters
+ + +
namethe name of the desired claim
+
+
+
Returns
Requested claim
+
Exceptions
+ + +
jwt::error::claim_not_present_exceptionif the claim was not present
+
+
+ +
+
+ +

◆ get_header_json()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::object_type jwt::decoded_jwt< json_traits >::get_header_json () const
+
+inline
+
+

Get all header as JSON object

Returns
map of claims
+ +
+
+ +

◆ get_payload()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
const json_traits::string_type & jwt::decoded_jwt< json_traits >::get_payload () const
+
+inlinenoexcept
+
+

Get payload part as json string

Returns
payload part after base64 decoding
+ +
+
+ +

◆ get_payload_base64()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
const json_traits::string_type & jwt::decoded_jwt< json_traits >::get_payload_base64 () const
+
+inlinenoexcept
+
+

Get payload part as base64 string

Returns
payload part before base64 decoding
+ +
+
+ +

◆ get_payload_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
basic_claim_t jwt::decoded_jwt< json_traits >::get_payload_claim (const typename json_traits::string_type & name) const
+
+inline
+
+

Get a payload claim by name

+
Parameters
+ + +
namethe name of the desired claim
+
+
+
Returns
Requested claim
+
Exceptions
+ + +
jwt::error::claim_not_present_exceptionif the claim was not present
+
+
+ +
+
+ +

◆ get_payload_json()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::object_type jwt::decoded_jwt< json_traits >::get_payload_json () const
+
+inline
+
+

Get all payload as JSON object

Returns
map of claims
+ +
+
+ +

◆ get_signature()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
const json_traits::string_type & jwt::decoded_jwt< json_traits >::get_signature () const
+
+inlinenoexcept
+
+

Get signature part as json string

Returns
signature part after base64 decoding
+ +
+
+ +

◆ get_signature_base64()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
const json_traits::string_type & jwt::decoded_jwt< json_traits >::get_signature_base64 () const
+
+inlinenoexcept
+
+

Get signature part as base64 string

Returns
signature part before base64 decoding
+ +
+
+ +

◆ get_token()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
const json_traits::string_type & jwt::decoded_jwt< json_traits >::get_token () const
+
+inlinenoexcept
+
+

Get token string, as passed to constructor

Returns
token as passed to constructor
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1decoded__jwt.js b/classjwt_1_1decoded__jwt.js new file mode 100644 index 00000000..5b47cc6b --- /dev/null +++ b/classjwt_1_1decoded__jwt.js @@ -0,0 +1,23 @@ +var classjwt_1_1decoded__jwt = +[ + [ "decoded_jwt", "classjwt_1_1decoded__jwt.html#a74547d7eee095f9bb440b572da5edd39", null ], + [ "decoded_jwt", "classjwt_1_1decoded__jwt.html#a8517ef5dd3f099223ec4477aff546ac8", null ], + [ "get_header", "classjwt_1_1decoded__jwt.html#a00a77aedba4b77d9ee0a6f32307c2f92", null ], + [ "get_header_base64", "classjwt_1_1decoded__jwt.html#af55156d334c665ad0b11cb6881d242c2", null ], + [ "get_header_claim", "classjwt_1_1decoded__jwt.html#a807f00ca32b360b69b4d8555f7cb7795", null ], + [ "get_header_json", "classjwt_1_1decoded__jwt.html#acc90b0d668345b0f3c41d382fe087a08", null ], + [ "get_payload", "classjwt_1_1decoded__jwt.html#adb1dc325d49e01838e78e9cd809aaa2b", null ], + [ "get_payload_base64", "classjwt_1_1decoded__jwt.html#aa137fa9dfcf54444901618bfa0fc2ac4", null ], + [ "get_payload_claim", "classjwt_1_1decoded__jwt.html#a6a86e22661351e17f8880d6b4801ea9a", null ], + [ "get_payload_json", "classjwt_1_1decoded__jwt.html#a8a4dea7cc8187e496feaf3112a6de419", null ], + [ "get_signature", "classjwt_1_1decoded__jwt.html#a715bf6407901d555442ba79e68e96ddb", null ], + [ "get_signature_base64", "classjwt_1_1decoded__jwt.html#a0210f5688a6b0327b781fbd3d6e124f7", null ], + [ "get_token", "classjwt_1_1decoded__jwt.html#ac6dce886f27c3a5afadea6ae991063fb", null ], + [ "header", "classjwt_1_1decoded__jwt.html#a1029396a3c9d1a6a9946ab000546b58f", null ], + [ "header_base64", "classjwt_1_1decoded__jwt.html#a1b5eb0489af7f8158779b59d03bc0431", null ], + [ "payload", "classjwt_1_1decoded__jwt.html#af9b33ca8b170b91f255ff7afe9fbf3c1", null ], + [ "payload_base64", "classjwt_1_1decoded__jwt.html#af9013de47f7e628c23b80f55d84b03d1", null ], + [ "signature", "classjwt_1_1decoded__jwt.html#a029ac1ee047b99ac75265755a3107ccb", null ], + [ "signature_base64", "classjwt_1_1decoded__jwt.html#a8ccaba87d81df84591da392cb8702f2e", null ], + [ "token", "classjwt_1_1decoded__jwt.html#a1f564f04da292da715126b57fa4c735e", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1decoded__jwt__inherit__graph.map b/classjwt_1_1decoded__jwt__inherit__graph.map new file mode 100644 index 00000000..d2eb2f97 --- /dev/null +++ b/classjwt_1_1decoded__jwt__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/classjwt_1_1decoded__jwt__inherit__graph.md5 b/classjwt_1_1decoded__jwt__inherit__graph.md5 new file mode 100644 index 00000000..3e20bd0b --- /dev/null +++ b/classjwt_1_1decoded__jwt__inherit__graph.md5 @@ -0,0 +1 @@ +fec81f97c79533bbb812df28757d1e40 \ No newline at end of file diff --git a/classjwt_1_1decoded__jwt__inherit__graph.svg b/classjwt_1_1decoded__jwt__inherit__graph.svg new file mode 100644 index 00000000..3983cb8a --- /dev/null +++ b/classjwt_1_1decoded__jwt__inherit__graph.svg @@ -0,0 +1,59 @@ + + + + + + +jwt::decoded_jwt< json_traits > + + +Node1 + + +jwt::decoded_jwt< json +_traits > + + + + + +Node2 + + +jwt::header< json_traits > + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +jwt::payload< json +_traits > + + + + + +Node3->Node1 + + + + + + + + diff --git a/classjwt_1_1header-members.html b/classjwt_1_1header-members.html new file mode 100644 index 00000000..5c796139 --- /dev/null +++ b/classjwt_1_1header-members.html @@ -0,0 +1,125 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::header< json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::header< json_traits >, including all inherited members.

+ + + + + + + + + + + + + +
basic_claim_t typedef (defined in jwt::header< json_traits >)jwt::header< json_traits >
get_algorithm() constjwt::header< json_traits >inline
get_content_type() constjwt::header< json_traits >inline
get_header_claim(const typename json_traits::string_type &name) constjwt::header< json_traits >inline
get_key_id() constjwt::header< json_traits >inline
get_type() constjwt::header< json_traits >inline
has_algorithm() const noexceptjwt::header< json_traits >inline
has_content_type() const noexceptjwt::header< json_traits >inline
has_header_claim(const typename json_traits::string_type &name) const noexceptjwt::header< json_traits >inline
has_key_id() const noexceptjwt::header< json_traits >inline
has_type() const noexceptjwt::header< json_traits >inline
header_claims (defined in jwt::header< json_traits >)jwt::header< json_traits >protected
+
+ + + + diff --git a/classjwt_1_1header.html b/classjwt_1_1header.html new file mode 100644 index 00000000..48b0d1b4 --- /dev/null +++ b/classjwt_1_1header.html @@ -0,0 +1,480 @@ + + + + + + + +JWT-CPP: jwt::header< json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::header< json_traits > Class Template Reference
+
+
+ +

#include <jwt.h>

+
+Inheritance diagram for jwt::header< json_traits >:
+
+
+
[legend]
+ + + + +

+Public Types

+using basic_claim_t = basic_claim<json_traits>
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool has_algorithm () const noexcept
 
bool has_type () const noexcept
 
bool has_content_type () const noexcept
 
bool has_key_id () const noexcept
 
json_traits::string_type get_algorithm () const
 
json_traits::string_type get_type () const
 
json_traits::string_type get_content_type () const
 
json_traits::string_type get_key_id () const
 
bool has_header_claim (const typename json_traits::string_type &name) const noexcept
 
basic_claim_t get_header_claim (const typename json_traits::string_type &name) const
 
+ + + +

+Protected Attributes

+details::map_of_claims< json_traits > header_claims
 
+

Detailed Description

+
template<typename json_traits>
+class jwt::header< json_traits >

Base class that represents a token header. Contains Convenience accessors for common claims.

+

Member Function Documentation

+ +

◆ get_algorithm()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::header< json_traits >::get_algorithm () const
+
+inline
+
+

Get algorithm claim

Returns
algorithm as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_content_type()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::header< json_traits >::get_content_type () const
+
+inline
+
+

Get content type claim

Returns
content type as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_header_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
basic_claim_t jwt::header< json_traits >::get_header_claim (const typename json_traits::string_type & name) const
+
+inline
+
+

Get header claim

Returns
Requested claim
+
Exceptions
+ + +
std::runtime_errorIf claim was not present
+
+
+ +
+
+ +

◆ get_key_id()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::header< json_traits >::get_key_id () const
+
+inline
+
+

Get key id claim

Returns
key id as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_type()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::header< json_traits >::get_type () const
+
+inline
+
+

Get type claim

Returns
type as a string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ has_algorithm()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::header< json_traits >::has_algorithm () const
+
+inlinenoexcept
+
+

Check if algorithm is present ("alg")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_content_type()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::header< json_traits >::has_content_type () const
+
+inlinenoexcept
+
+

Check if content type is present ("cty")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_header_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::header< json_traits >::has_header_claim (const typename json_traits::string_type & name) const
+
+inlinenoexcept
+
+

Check if a header claim is present

Returns
true if claim was present, false otherwise
+ +
+
+ +

◆ has_key_id()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::header< json_traits >::has_key_id () const
+
+inlinenoexcept
+
+

Check if key id is present ("kid")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_type()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::header< json_traits >::has_type () const
+
+inlinenoexcept
+
+

Check if type is present ("typ")

Returns
true if present, false otherwise
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1header.js b/classjwt_1_1header.js new file mode 100644 index 00000000..ca3454bb --- /dev/null +++ b/classjwt_1_1header.js @@ -0,0 +1,13 @@ +var classjwt_1_1header = +[ + [ "get_algorithm", "classjwt_1_1header.html#a8ac7e7c26859e172a3f0f22ded7b307f", null ], + [ "get_content_type", "classjwt_1_1header.html#ae2cb8d327ed651286af732663ef23c44", null ], + [ "get_header_claim", "classjwt_1_1header.html#ad941b52adacc083b2b895fbfa23f938b", null ], + [ "get_key_id", "classjwt_1_1header.html#ad9e1ae6bf5aecf92d533028bc6f9b973", null ], + [ "get_type", "classjwt_1_1header.html#a0bed2e5b52abbefda5317a2712c08e8a", null ], + [ "has_algorithm", "classjwt_1_1header.html#a59cc46de655365a8c1d99c60828051c0", null ], + [ "has_content_type", "classjwt_1_1header.html#a9b9e6f2fd191afd8a167591818ad26da", null ], + [ "has_header_claim", "classjwt_1_1header.html#a2d5ee46b83e06da380bcbe20c5362b59", null ], + [ "has_key_id", "classjwt_1_1header.html#af8fb4b77c7c066bb4a6ffefc0d459000", null ], + [ "has_type", "classjwt_1_1header.html#a6904ba9440815ca602f5a819224333b6", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1header__inherit__graph.map b/classjwt_1_1header__inherit__graph.map new file mode 100644 index 00000000..ae7bb8d8 --- /dev/null +++ b/classjwt_1_1header__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classjwt_1_1header__inherit__graph.md5 b/classjwt_1_1header__inherit__graph.md5 new file mode 100644 index 00000000..9a3d663d --- /dev/null +++ b/classjwt_1_1header__inherit__graph.md5 @@ -0,0 +1 @@ +e251e4af2bdaa5e3cfe7ea148480b674 \ No newline at end of file diff --git a/classjwt_1_1header__inherit__graph.svg b/classjwt_1_1header__inherit__graph.svg new file mode 100644 index 00000000..0568cd59 --- /dev/null +++ b/classjwt_1_1header__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::header< json_traits > + + +Node1 + + +jwt::header< json_traits > + + + + + +Node2 + + +jwt::decoded_jwt< json +_traits > + + + + + +Node1->Node2 + + + + + + + + diff --git a/classjwt_1_1helper_1_1evp__pkey__handle-members.html b/classjwt_1_1helper_1_1evp__pkey__handle-members.html new file mode 100644 index 00000000..e94ed351 --- /dev/null +++ b/classjwt_1_1helper_1_1evp__pkey__handle-members.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::helper::evp_pkey_handle Member List
+
+
+ +

This is the complete list of members for jwt::helper::evp_pkey_handle, including all inherited members.

+ + + + + + + + + + + + +
evp_pkey_handle() noexcept=defaultjwt::helper::evp_pkey_handle
evp_pkey_handle(EVP_PKEY *key) noexceptjwt::helper::evp_pkey_handleinlineexplicit
evp_pkey_handle(const evp_pkey_handle &other) (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
evp_pkey_handle(evp_pkey_handle &&other) noexcept (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
get() const noexcept (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
operator bool() const noexcept (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinlineexplicit
operator!() const noexcept (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
operator=(const evp_pkey_handle &other) (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
operator=(evp_pkey_handle &&other) noexcept (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
operator=(EVP_PKEY *key) (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
~evp_pkey_handle() noexcept (defined in jwt::helper::evp_pkey_handle)jwt::helper::evp_pkey_handleinline
+
+ + + + diff --git a/classjwt_1_1helper_1_1evp__pkey__handle.html b/classjwt_1_1helper_1_1evp__pkey__handle.html new file mode 100644 index 00000000..a4168fac --- /dev/null +++ b/classjwt_1_1helper_1_1evp__pkey__handle.html @@ -0,0 +1,194 @@ + + + + + + + +JWT-CPP: jwt::helper::evp_pkey_handle Class Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::helper::evp_pkey_handle Class Reference
+
+
+ +

Handle class for EVP_PKEY structures. + More...

+ +

#include <jwt.h>

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr evp_pkey_handle () noexcept=default
 Creates a null key pointer.
 
constexpr evp_pkey_handle (EVP_PKEY *key) noexcept
 Construct a new handle. The handle takes ownership of the key.
 
evp_pkey_handle (const evp_pkey_handle &other)
 
evp_pkey_handle (evp_pkey_handle &&other) noexcept
 
+evp_pkey_handleoperator= (const evp_pkey_handle &other)
 
+evp_pkey_handleoperator= (evp_pkey_handle &&other) noexcept
 
+evp_pkey_handleoperator= (EVP_PKEY *key)
 
+EVP_PKEY * get () const noexcept
 
+bool operator! () const noexcept
 
operator bool () const noexcept
 
+

Detailed Description

+

Handle class for EVP_PKEY structures.

+

Starting from OpenSSL 1.1.0, EVP_PKEY has internal reference counting. This handle class allows jwt-cpp to leverage that and thus safe an allocation for the control block in std::shared_ptr. The handle uses shared_ptr as a fallback on older versions. The behaviour should be identical between both.

+

Constructor & Destructor Documentation

+ +

◆ evp_pkey_handle()

+ +
+
+ + + + + +
+ + + + + + + +
constexpr jwt::helper::evp_pkey_handle::evp_pkey_handle (EVP_PKEY * key)
+
+inlineexplicitconstexprnoexcept
+
+ +

Construct a new handle. The handle takes ownership of the key.

+
Parameters
+ + +
keyThe key to store
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1helper_1_1evp__pkey__handle.js b/classjwt_1_1helper_1_1evp__pkey__handle.js new file mode 100644 index 00000000..57e9ed6a --- /dev/null +++ b/classjwt_1_1helper_1_1evp__pkey__handle.js @@ -0,0 +1,5 @@ +var classjwt_1_1helper_1_1evp__pkey__handle = +[ + [ "evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html#a8fae1977c01380da9189d10fe429841a", null ], + [ "evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html#a9948effb83d8dcd17447eff28c852f6f", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1jwk-members.html b/classjwt_1_1jwk-members.html new file mode 100644 index 00000000..c5fc4729 --- /dev/null +++ b/classjwt_1_1jwk-members.html @@ -0,0 +1,140 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::jwk< json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::jwk< json_traits >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
empty() const noexceptjwt::jwk< json_traits >inline
get_algorithm() constjwt::jwk< json_traits >inline
get_claims() constjwt::jwk< json_traits >inline
get_curve() constjwt::jwk< json_traits >inline
get_jwk_claim(const typename json_traits::string_type &name) constjwt::jwk< json_traits >inline
get_key_id() constjwt::jwk< json_traits >inline
get_key_operations() constjwt::jwk< json_traits >inline
get_key_type() constjwt::jwk< json_traits >inline
get_use() constjwt::jwk< json_traits >inline
get_x5c() constjwt::jwk< json_traits >inline
get_x5c_key_value() constjwt::jwk< json_traits >inline
get_x5t() constjwt::jwk< json_traits >inline
get_x5t_sha256() constjwt::jwk< json_traits >inline
get_x5u() constjwt::jwk< json_traits >inline
has_algorithm() const noexceptjwt::jwk< json_traits >inline
has_curve() const noexceptjwt::jwk< json_traits >inline
has_jwk_claim(const typename json_traits::string_type &name) const noexceptjwt::jwk< json_traits >inline
has_key_id() const noexceptjwt::jwk< json_traits >inline
has_key_operations() const noexceptjwt::jwk< json_traits >inline
has_key_type() const noexceptjwt::jwk< json_traits >inline
has_use() const noexceptjwt::jwk< json_traits >inline
has_x5c() const noexceptjwt::jwk< json_traits >inline
has_x5t() const noexceptjwt::jwk< json_traits >inline
has_x5t_sha256() const noexceptjwt::jwk< json_traits >inline
has_x5u() const noexceptjwt::jwk< json_traits >inline
jwk(const typename json_traits::string_type &str) (defined in jwt::jwk< json_traits >)jwt::jwk< json_traits >inline
jwk(const typename json_traits::value_type &json) (defined in jwt::jwk< json_traits >)jwt::jwk< json_traits >inline
+
+ + + + diff --git a/classjwt_1_1jwk.html b/classjwt_1_1jwk.html new file mode 100644 index 00000000..ecb38119 --- /dev/null +++ b/classjwt_1_1jwk.html @@ -0,0 +1,976 @@ + + + + + + + +JWT-CPP: jwt::jwk< json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::jwk< json_traits > Class Template Reference
+
+
+ +

JSON Web Key. + More...

+ +

#include <jwt.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+JWT_CLAIM_EXPLICIT jwk (const typename json_traits::string_type &str)
 
+JWT_CLAIM_EXPLICIT jwk (const typename json_traits::value_type &json)
 
json_traits::string_type get_key_type () const
 
json_traits::string_type get_use () const
 
basic_claim_t::set_t get_key_operations () const
 
json_traits::string_type get_algorithm () const
 
json_traits::string_type get_key_id () const
 
json_traits::string_type get_curve () const
 Get curve claim.
 
json_traits::array_type get_x5c () const
 
json_traits::string_type get_x5u () const
 
json_traits::string_type get_x5t () const
 
json_traits::string_type get_x5t_sha256 () const
 
json_traits::string_type get_x5c_key_value () const
 
bool has_key_type () const noexcept
 
bool has_use () const noexcept
 
bool has_key_operations () const noexcept
 
bool has_algorithm () const noexcept
 
bool has_curve () const noexcept
 
bool has_key_id () const noexcept
 
bool has_x5u () const noexcept
 
bool has_x5c () const noexcept
 
bool has_x5t () const noexcept
 
bool has_x5t_sha256 () const noexcept
 
bool has_jwk_claim (const typename json_traits::string_type &name) const noexcept
 
basic_claim_t get_jwk_claim (const typename json_traits::string_type &name) const
 
bool empty () const noexcept
 
json_traits::object_type get_claims () const
 
+

Detailed Description

+
template<typename json_traits>
+class jwt::jwk< json_traits >

JSON Web Key.

+

https://tools.ietf.org/html/rfc7517

+

A JSON object that represents a cryptographic key. The members of the object represent properties of the key, including its value.

+

Member Function Documentation

+ +

◆ empty()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::empty () const
+
+inlinenoexcept
+
+

Check if the jwk has any claims

Returns
true is any claim is present
+ +
+
+ +

◆ get_algorithm()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_algorithm () const
+
+inline
+
+

Get algorithm claim

Returns
algorithm as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_claims()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::object_type jwt::jwk< json_traits >::get_claims () const
+
+inline
+
+

Get all jwk claims

Returns
Map of claims
+ +
+
+ +

◆ get_curve()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_curve () const
+
+inline
+
+ +

Get curve claim.

+

https://www.rfc-editor.org/rfc/rfc7518.html#section-6.2.1.1 https://www.iana.org/assignments/jose/jose.xhtml#table-web-key-elliptic-curve

+
Returns
curve as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_jwk_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
basic_claim_t jwt::jwk< json_traits >::get_jwk_claim (const typename json_traits::string_type & name) const
+
+inline
+
+

Get jwk claim by name

Returns
Requested claim
+
Exceptions
+ + +
std::runtime_errorIf claim was not present
+
+
+ +
+
+ +

◆ get_key_id()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_key_id () const
+
+inline
+
+

Get key id claim

Returns
key id as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_key_operations()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
basic_claim_t::set_t jwt::jwk< json_traits >::get_key_operations () const
+
+inline
+
+

Get key operation types claim

Returns
key operation types as a set of strings
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_key_type()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_key_type () const
+
+inline
+
+

Get key type claim

+

This returns the general type (e.g. RSA or EC), not a specific algorithm value.

Returns
key type as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_use()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_use () const
+
+inline
+
+

Get public key usage claim

Returns
usage parameter as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_x5c()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::array_type jwt::jwk< json_traits >::get_x5c () const
+
+inline
+
+

Get x5c claim

Returns
x5c as an array
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a array (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_x5c_key_value()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_x5c_key_value () const
+
+inline
+
+

Get x5c claim as a string

Returns
x5c as an string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_x5t()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_x5t () const
+
+inline
+
+

Get X509 thumbprint claim

Returns
x5t as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_x5t_sha256()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_x5t_sha256 () const
+
+inline
+
+

Get X509 SHA256 thumbprint claim

Returns
x5t::S256 as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_x5u()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::jwk< json_traits >::get_x5u () const
+
+inline
+
+

Get X509 URL claim

Returns
x5u as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ has_algorithm()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_algorithm () const
+
+inlinenoexcept
+
+

Check if algorithm is present ("alg")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_curve()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_curve () const
+
+inlinenoexcept
+
+

Check if curve is present ("crv")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_jwk_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_jwk_claim (const typename json_traits::string_type & name) const
+
+inlinenoexcept
+
+

Check if a jwk claim is present

Returns
true if claim was present, false otherwise
+ +
+
+ +

◆ has_key_id()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_key_id () const
+
+inlinenoexcept
+
+

Check if key id is present ("kid")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_key_operations()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_key_operations () const
+
+inlinenoexcept
+
+

Check if a key operations parameter is present ("key_ops")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_key_type()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_key_type () const
+
+inlinenoexcept
+
+

Check if a key type is present ("kty")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_use()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_use () const
+
+inlinenoexcept
+
+

Check if a public key usage indication is present ("use")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_x5c()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_x5c () const
+
+inlinenoexcept
+
+

Check if X509 Chain is present ("x5c")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_x5t()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_x5t () const
+
+inlinenoexcept
+
+

Check if a X509 thumbprint is present ("x5t")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_x5t_sha256()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_x5t_sha256 () const
+
+inlinenoexcept
+
+

Check if a X509 SHA256 thumbprint is present ("x5t#S256")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_x5u()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwk< json_traits >::has_x5u () const
+
+inlinenoexcept
+
+

Check if X509 URL is present ("x5u")

Returns
true if present, false otherwise
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1jwk.js b/classjwt_1_1jwk.js new file mode 100644 index 00000000..79dce435 --- /dev/null +++ b/classjwt_1_1jwk.js @@ -0,0 +1,28 @@ +var classjwt_1_1jwk = +[ + [ "empty", "classjwt_1_1jwk.html#aab2ca3844cbb8338c2f874f522ebe1cf", null ], + [ "get_algorithm", "classjwt_1_1jwk.html#a50b2c64b52a7028acfad1e4ac64c8e66", null ], + [ "get_claims", "classjwt_1_1jwk.html#a5628cd17ea929a33e6d40eef5b073d0d", null ], + [ "get_curve", "classjwt_1_1jwk.html#a09d3afa0dcca94aee47c8cb9eb42dc9f", null ], + [ "get_jwk_claim", "classjwt_1_1jwk.html#af814feaeb94f0394d14341e4e7024ebb", null ], + [ "get_key_id", "classjwt_1_1jwk.html#a6ff417d9e099f70183e5b065130f420f", null ], + [ "get_key_operations", "classjwt_1_1jwk.html#ae5f0bb1bc9728e721c62e7aa0ab1ce5a", null ], + [ "get_key_type", "classjwt_1_1jwk.html#afcfb7ade4ffa503db7c5b92280b49514", null ], + [ "get_use", "classjwt_1_1jwk.html#a8581a05f8628ce98a898e36fb30649df", null ], + [ "get_x5c", "classjwt_1_1jwk.html#a50c5eb1410fc69363527329efd58d09c", null ], + [ "get_x5c_key_value", "classjwt_1_1jwk.html#a5e3675060ca4b75d675ed4a301abac95", null ], + [ "get_x5t", "classjwt_1_1jwk.html#a5a1e7e2940e23e2e2a4f64e1db9d5f38", null ], + [ "get_x5t_sha256", "classjwt_1_1jwk.html#a6f49dc9f0e73b9f34044ee56b49c8baa", null ], + [ "get_x5u", "classjwt_1_1jwk.html#af9e5af688ecdc3c88579ba5bfcfa4f17", null ], + [ "has_algorithm", "classjwt_1_1jwk.html#a7791ca410ed90a89a4325b990efdb1bd", null ], + [ "has_curve", "classjwt_1_1jwk.html#ae97c9750a6a65d7b6a5cc16a3e3d5c6b", null ], + [ "has_jwk_claim", "classjwt_1_1jwk.html#ac7776dfc51fca7a44ffdf80e1c9e699b", null ], + [ "has_key_id", "classjwt_1_1jwk.html#a8fd4f19ffb59645a70182aa53ee773d8", null ], + [ "has_key_operations", "classjwt_1_1jwk.html#aa774d9e337af22dbb482efe480725593", null ], + [ "has_key_type", "classjwt_1_1jwk.html#af2955f1903c7c25c07390b8734b1278b", null ], + [ "has_use", "classjwt_1_1jwk.html#aab3976b190dfb7753a67525a1aacf3e9", null ], + [ "has_x5c", "classjwt_1_1jwk.html#a04b9237225866306df0b06d0be1c49df", null ], + [ "has_x5t", "classjwt_1_1jwk.html#aad5f938603c9354d0ef0316dcc55c9e5", null ], + [ "has_x5t_sha256", "classjwt_1_1jwk.html#a1c7acee846b84aa4c26094b8f71739c6", null ], + [ "has_x5u", "classjwt_1_1jwk.html#a92093f86bd99995f21f3efdde09e1370", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1jwks-members.html b/classjwt_1_1jwks-members.html new file mode 100644 index 00000000..7427ef38 --- /dev/null +++ b/classjwt_1_1jwks-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::jwks< json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::jwks< json_traits >, including all inherited members.

+ + + + + + + + + + + + + + + +
begin() (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >inline
begin() const (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >inline
cbegin() const (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >inline
cend() const (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >inline
const_iterator typedef (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >
end() (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >inline
end() const (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >inline
get_jwk(const typename json_traits::string_type &key_id) constjwt::jwks< json_traits >inline
has_jwk(const typename json_traits::string_type &key_id) const noexceptjwt::jwks< json_traits >inline
iterator typedef (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >
jwks()=defaultjwt::jwks< json_traits >
jwks(const typename json_traits::string_type &str)jwt::jwks< json_traits >inline
jwks_t typedefjwt::jwks< json_traits >
jwks_vector_t typedefjwt::jwks< json_traits >
+
+ + + + diff --git a/classjwt_1_1jwks.html b/classjwt_1_1jwks.html new file mode 100644 index 00000000..b474f521 --- /dev/null +++ b/classjwt_1_1jwks.html @@ -0,0 +1,307 @@ + + + + + + + +JWT-CPP: jwt::jwks< json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::jwks< json_traits > Class Template Reference
+
+
+ +

JWK Set. + More...

+ +

#include <jwt.h>

+ + + + + + + + + + + + +

+Public Types

+using jwks_t = jwk<json_traits>
 JWK instance template specialization.
 
+using jwks_vector_t = std::vector<jwks_t>
 Type specialization for the vector of JWK.
 
+using iterator = typename jwks_vector_t::iterator
 
+using const_iterator = typename jwks_vector_t::const_iterator
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 jwks ()=default
 
JWT_CLAIM_EXPLICIT jwks (const typename json_traits::string_type &str)
 
+iterator begin ()
 
+iterator end ()
 
+const_iterator cbegin () const
 
+const_iterator cend () const
 
+const_iterator begin () const
 
+const_iterator end () const
 
bool has_jwk (const typename json_traits::string_type &key_id) const noexcept
 
jwks_t get_jwk (const typename json_traits::string_type &key_id) const
 
+

Detailed Description

+
template<typename json_traits>
+class jwt::jwks< json_traits >

JWK Set.

+

https://tools.ietf.org/html/rfc7517

+

A JSON object that represents a set of JWKs. The JSON object MUST have a "keys" member, which is an array of JWKs.

+

This container takes a JWKs and simplifies it to a vector of JWKs

+

Constructor & Destructor Documentation

+ +

◆ jwks() [1/2]

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
jwt::jwks< json_traits >::jwks ()
+
+default
+
+

Default constructor producing an empty object without any keys

+ +
+
+ +

◆ jwks() [2/2]

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
JWT_CLAIM_EXPLICIT jwt::jwks< json_traits >::jwks (const typename json_traits::string_type & str)
+
+inline
+
+

Parses a string buffer to extract the JWKS.

Parameters
+ + +
strbuffer containing JSON object representing a JWKS
+
+
+
Exceptions
+ + +
error::invalid_json_exceptionor underlying JSON implation error if the JSON is invalid with regards to the JWKS specification
+
+
+ +
+
+

Member Function Documentation

+ +

◆ get_jwk()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
jwks_t jwt::jwks< json_traits >::get_jwk (const typename json_traits::string_type & key_id) const
+
+inline
+
+

Get jwk

Returns
Requested jwk by key_id
+
Exceptions
+ + +
std::runtime_errorIf jwk was not present
+
+
+ +
+
+ +

◆ has_jwk()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::jwks< json_traits >::has_jwk (const typename json_traits::string_type & key_id) const
+
+inlinenoexcept
+
+

Check if a jwk with the kid is present

Returns
true if jwk was present, false otherwise
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1jwks.js b/classjwt_1_1jwks.js new file mode 100644 index 00000000..76d5d227 --- /dev/null +++ b/classjwt_1_1jwks.js @@ -0,0 +1,9 @@ +var classjwt_1_1jwks = +[ + [ "jwks_t", "classjwt_1_1jwks.html#a25df35cca51f36672dc34ce86f292c7b", null ], + [ "jwks_vector_t", "classjwt_1_1jwks.html#ac1999abc822287e49bb86d89b47e1a25", null ], + [ "jwks", "classjwt_1_1jwks.html#a35532c5a8f559739bef25edafebd7561", null ], + [ "jwks", "classjwt_1_1jwks.html#ad0fedb031f3b2f6ebf62e1e66b3451c2", null ], + [ "get_jwk", "classjwt_1_1jwks.html#a25f52012c42fcc2761331db48b0d6926", null ], + [ "has_jwk", "classjwt_1_1jwks.html#aedd6c046ef7c08fcf8ab71158d3bafc5", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1payload-members.html b/classjwt_1_1payload-members.html new file mode 100644 index 00000000..807e3ce2 --- /dev/null +++ b/classjwt_1_1payload-members.html @@ -0,0 +1,131 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::payload< json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::payload< json_traits >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
basic_claim_t typedef (defined in jwt::payload< json_traits >)jwt::payload< json_traits >
get_audience() constjwt::payload< json_traits >inline
get_expires_at() constjwt::payload< json_traits >inline
get_id() constjwt::payload< json_traits >inline
get_issued_at() constjwt::payload< json_traits >inline
get_issuer() constjwt::payload< json_traits >inline
get_not_before() constjwt::payload< json_traits >inline
get_payload_claim(const typename json_traits::string_type &name) constjwt::payload< json_traits >inline
get_subject() constjwt::payload< json_traits >inline
has_audience() const noexceptjwt::payload< json_traits >inline
has_expires_at() const noexceptjwt::payload< json_traits >inline
has_id() const noexceptjwt::payload< json_traits >inline
has_issued_at() const noexceptjwt::payload< json_traits >inline
has_issuer() const noexceptjwt::payload< json_traits >inline
has_not_before() const noexceptjwt::payload< json_traits >inline
has_payload_claim(const typename json_traits::string_type &name) const noexceptjwt::payload< json_traits >inline
has_subject() const noexceptjwt::payload< json_traits >inline
payload_claims (defined in jwt::payload< json_traits >)jwt::payload< json_traits >protected
+
+ + + + diff --git a/classjwt_1_1payload.html b/classjwt_1_1payload.html new file mode 100644 index 00000000..1ac7f8d3 --- /dev/null +++ b/classjwt_1_1payload.html @@ -0,0 +1,681 @@ + + + + + + + +JWT-CPP: jwt::payload< json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::payload< json_traits > Class Template Reference
+
+
+ +

#include <jwt.h>

+
+Inheritance diagram for jwt::payload< json_traits >:
+
+
+
[legend]
+ + + + +

+Public Types

+using basic_claim_t = basic_claim<json_traits>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool has_issuer () const noexcept
 
bool has_subject () const noexcept
 
bool has_audience () const noexcept
 
bool has_expires_at () const noexcept
 
bool has_not_before () const noexcept
 
bool has_issued_at () const noexcept
 
bool has_id () const noexcept
 
json_traits::string_type get_issuer () const
 
json_traits::string_type get_subject () const
 
basic_claim_t::set_t get_audience () const
 
date get_expires_at () const
 
date get_not_before () const
 
date get_issued_at () const
 
json_traits::string_type get_id () const
 
bool has_payload_claim (const typename json_traits::string_type &name) const noexcept
 
basic_claim_t get_payload_claim (const typename json_traits::string_type &name) const
 
+ + + +

+Protected Attributes

+details::map_of_claims< json_traits > payload_claims
 
+

Detailed Description

+
template<typename json_traits>
+class jwt::payload< json_traits >

Base class that represents a token payload. Contains Convenience accessors for common claims.

+

Member Function Documentation

+ +

◆ get_audience()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
basic_claim_t::set_t jwt::payload< json_traits >::get_audience () const
+
+inline
+
+

Get audience claim

Returns
audience as a set of strings
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a set (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_expires_at()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
date jwt::payload< json_traits >::get_expires_at () const
+
+inline
+
+

Get expires claim

Returns
expires as a date in utc
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a date (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_id()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::payload< json_traits >::get_id () const
+
+inline
+
+

Get id claim

Returns
id as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_issued_at()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
date jwt::payload< json_traits >::get_issued_at () const
+
+inline
+
+

Get issued at claim

Returns
issued at as date in utc
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a date (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_issuer()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::payload< json_traits >::get_issuer () const
+
+inline
+
+

Get issuer claim

Returns
issuer as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_not_before()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
date jwt::payload< json_traits >::get_not_before () const
+
+inline
+
+

Get not valid before claim

Returns
nbf date in utc
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a date (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ get_payload_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
basic_claim_t jwt::payload< json_traits >::get_payload_claim (const typename json_traits::string_type & name) const
+
+inline
+
+

Get payload claim

Returns
Requested claim
+
Exceptions
+ + +
std::runtime_errorIf claim was not present
+
+
+ +
+
+ +

◆ get_subject()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
json_traits::string_type jwt::payload< json_traits >::get_subject () const
+
+inline
+
+

Get subject claim

Returns
subject as string
+
Exceptions
+ + + +
std::runtime_errorIf claim was not present
std::bad_castClaim was present but not a string (Should not happen in a valid token)
+
+
+ +
+
+ +

◆ has_audience()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_audience () const
+
+inlinenoexcept
+
+

Check if audience is present ("aud")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_expires_at()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_expires_at () const
+
+inlinenoexcept
+
+

Check if expires is present ("exp")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_id()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_id () const
+
+inlinenoexcept
+
+

Check if token id is present ("jti")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_issued_at()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_issued_at () const
+
+inlinenoexcept
+
+

Check if issued at is present ("iat")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_issuer()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_issuer () const
+
+inlinenoexcept
+
+

Check if issuer is present ("iss")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_not_before()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_not_before () const
+
+inlinenoexcept
+
+

Check if not before is present ("nbf")

Returns
true if present, false otherwise
+ +
+
+ +

◆ has_payload_claim()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_payload_claim (const typename json_traits::string_type & name) const
+
+inlinenoexcept
+
+

Check if a payload claim is present

Returns
true if claim was present, false otherwise
+ +
+
+ +

◆ has_subject()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + +
bool jwt::payload< json_traits >::has_subject () const
+
+inlinenoexcept
+
+

Check if subject is present ("sub")

Returns
true if present, false otherwise
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1payload.js b/classjwt_1_1payload.js new file mode 100644 index 00000000..0c120c22 --- /dev/null +++ b/classjwt_1_1payload.js @@ -0,0 +1,19 @@ +var classjwt_1_1payload = +[ + [ "get_audience", "classjwt_1_1payload.html#a0131e3f94dc5deaef9f2128e61675ef3", null ], + [ "get_expires_at", "classjwt_1_1payload.html#adab036c2f63dad223d163ad6689938e5", null ], + [ "get_id", "classjwt_1_1payload.html#a0cb0076f6d6ca4c8acb498076c8f5721", null ], + [ "get_issued_at", "classjwt_1_1payload.html#aa1efb5105a9c3efb49d08b8651069d15", null ], + [ "get_issuer", "classjwt_1_1payload.html#afbad104eceb35855baa247ec211eeac4", null ], + [ "get_not_before", "classjwt_1_1payload.html#a60f492d8bda3225155b6f10f05273f35", null ], + [ "get_payload_claim", "classjwt_1_1payload.html#aabe0fc87ca6261eae5b7b32b7f2fd531", null ], + [ "get_subject", "classjwt_1_1payload.html#adb0c71f6a7ea21910314ff4372a945dd", null ], + [ "has_audience", "classjwt_1_1payload.html#ad9f078e20d3cb6ce1ee135b2698a7059", null ], + [ "has_expires_at", "classjwt_1_1payload.html#a8577be97185f42d58ba0ca0b31c1a116", null ], + [ "has_id", "classjwt_1_1payload.html#a78fd663cc80012d9bbf1a948d246a69d", null ], + [ "has_issued_at", "classjwt_1_1payload.html#a0d1df458e88887342373b4ddb1c6b8f2", null ], + [ "has_issuer", "classjwt_1_1payload.html#a69dcb60e7108e6d124135e1a079943ca", null ], + [ "has_not_before", "classjwt_1_1payload.html#a151f3aed388ffeba63e14379808f3e53", null ], + [ "has_payload_claim", "classjwt_1_1payload.html#a3d7fce2a8b0ad4965671009baa619fa9", null ], + [ "has_subject", "classjwt_1_1payload.html#a3f9fd30aae3e7cb5fa4f5332cf9cc9e6", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1payload__inherit__graph.map b/classjwt_1_1payload__inherit__graph.map new file mode 100644 index 00000000..b18d3373 --- /dev/null +++ b/classjwt_1_1payload__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classjwt_1_1payload__inherit__graph.md5 b/classjwt_1_1payload__inherit__graph.md5 new file mode 100644 index 00000000..3489837a --- /dev/null +++ b/classjwt_1_1payload__inherit__graph.md5 @@ -0,0 +1 @@ +60f28c8f4dd6d6f2b2d95cdfa3b20fb8 \ No newline at end of file diff --git a/classjwt_1_1payload__inherit__graph.svg b/classjwt_1_1payload__inherit__graph.svg new file mode 100644 index 00000000..de8c75d2 --- /dev/null +++ b/classjwt_1_1payload__inherit__graph.svg @@ -0,0 +1,41 @@ + + + + + + +jwt::payload< json_traits > + + +Node1 + + +jwt::payload< json +_traits > + + + + + +Node2 + + +jwt::decoded_jwt< json +_traits > + + + + + +Node1->Node2 + + + + + + + + diff --git a/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type-members.html b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type-members.html new file mode 100644 index 00000000..6c8ae517 --- /dev/null +++ b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::traits::danielaparker_jsoncons::array_type Member List
+
+
+ +

This is the complete list of members for jwt::traits::danielaparker_jsoncons::array_type, including all inherited members.

+ + + + +
array_type(const json::array &a) (defined in jwt::traits::danielaparker_jsoncons::array_type)jwt::traits::danielaparker_jsoncons::array_typeinlineexplicit
array_type(json::array &&a) (defined in jwt::traits::danielaparker_jsoncons::array_type)jwt::traits::danielaparker_jsoncons::array_typeinlineexplicit
front() const (defined in jwt::traits::danielaparker_jsoncons::array_type)jwt::traits::danielaparker_jsoncons::array_typeinline
+
+ + + + diff --git a/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type.html b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type.html new file mode 100644 index 00000000..00cb3789 --- /dev/null +++ b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type.html @@ -0,0 +1,135 @@ + + + + + + + +JWT-CPP: jwt::traits::danielaparker_jsoncons::array_type Class Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::traits::danielaparker_jsoncons::array_type Class Reference
+
+
+
+Inheritance diagram for jwt::traits::danielaparker_jsoncons::array_type:
+
+
+
[legend]
+ + + + + + + + +

+Public Member Functions

array_type (const json::array &a)
 
array_type (json::array &&a)
 
+value_type const & front () const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.map b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.map new file mode 100644 index 00000000..6299ed09 --- /dev/null +++ b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.md5 b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.md5 new file mode 100644 index 00000000..b2e1048e --- /dev/null +++ b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.md5 @@ -0,0 +1 @@ +94312657672e72527992a0d1c1a553d6 \ No newline at end of file diff --git a/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.svg b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.svg new file mode 100644 index 00000000..ecd138ae --- /dev/null +++ b/classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::traits::danielaparker_jsoncons::array_type + + +Node1 + + +jwt::traits::danielaparker +_jsoncons::array_type + + + + + +Node2 + + +json::array + + + + + +Node2->Node1 + + + + + + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type-members.html b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type-members.html new file mode 100644 index 00000000..ee13b721 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type-members.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::traits::open_source_parsers_jsoncpp::array_type Member List
+
+
+ +

This is the complete list of members for jwt::traits::open_source_parsers_jsoncpp::array_type, including all inherited members.

+ + + + + + + + + + + + +
array_type()=default (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_type
array_type(const array_type &)=default (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_type
array_type(const Json::Value &o) (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_typeinlineexplicit
array_type(array_type &&)=default (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_type
array_type(Json::Value &&o) (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_typeinlineexplicit
array_type(Iterator begin, Iterator end) (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_typeinline
front() const (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_typeinline
operator=(const array_type &o)=default (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_type
operator=(array_type &&o) noexcept=default (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_type
value_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_type
~array_type()=default (defined in jwt::traits::open_source_parsers_jsoncpp::array_type)jwt::traits::open_source_parsers_jsoncpp::array_type
+
+ + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html new file mode 100644 index 00000000..c4509055 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html @@ -0,0 +1,158 @@ + + + + + + + +JWT-CPP: jwt::traits::open_source_parsers_jsoncpp::array_type Class Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::traits::open_source_parsers_jsoncpp::array_type Class Reference
+
+
+
+Inheritance diagram for jwt::traits::open_source_parsers_jsoncpp::array_type:
+
+
+
[legend]
+ + + + +

+Public Types

+using value_type = Json::Value
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

array_type (const array_type &)=default
 
array_type (const Json::Value &o)
 
array_type (array_type &&)=default
 
array_type (Json::Value &&o)
 
+template<typename Iterator >
 array_type (Iterator begin, Iterator end)
 
+array_typeoperator= (const array_type &o)=default
 
+array_typeoperator= (array_type &&o) noexcept=default
 
+value_type const & front () const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.map b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.map new file mode 100644 index 00000000..9af3ada2 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.md5 b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.md5 new file mode 100644 index 00000000..e8b08e85 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.md5 @@ -0,0 +1 @@ +2d910937b1237338333150e2054c33b4 \ No newline at end of file diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.svg b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.svg new file mode 100644 index 00000000..2934a975 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::traits::open_source_parsers_jsoncpp::array_type + + +Node1 + + +jwt::traits::open_source +_parsers_jsoncpp::array_type + + + + + +Node2 + + +Json::Value + + + + + +Node2->Node1 + + + + + + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type-members.html b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type-members.html new file mode 100644 index 00000000..bd07335b --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type-members.html @@ -0,0 +1,126 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::traits::open_source_parsers_jsoncpp::object_type Member List
+
+
+ +

This is the complete list of members for jwt::traits::open_source_parsers_jsoncpp::object_type, including all inherited members.

+ + + + + + + + + + + + + + +
at(const key_type &key) const (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_typeinline
count(const key_type &key) const (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_typeinline
key_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
mapped_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
object_type()=default (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
object_type(const object_type &)=default (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
object_type(const Json::Value &o) (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_typeinlineexplicit
object_type(object_type &&)=default (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
object_type(Json::Value &&o) (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_typeinlineexplicit
operator=(const object_type &o)=default (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
operator=(object_type &&o) noexcept=default (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
size_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
~object_type()=default (defined in jwt::traits::open_source_parsers_jsoncpp::object_type)jwt::traits::open_source_parsers_jsoncpp::object_type
+
+ + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html new file mode 100644 index 00000000..0abd53c8 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html @@ -0,0 +1,163 @@ + + + + + + + +JWT-CPP: jwt::traits::open_source_parsers_jsoncpp::object_type Class Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::traits::open_source_parsers_jsoncpp::object_type Class Reference
+
+
+
+Inheritance diagram for jwt::traits::open_source_parsers_jsoncpp::object_type:
+
+
+
[legend]
+ + + + + + + + +

+Public Types

+using key_type = std::string
 
+using mapped_type = Json::Value
 
+using size_type = size_t
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

object_type (const object_type &)=default
 
object_type (const Json::Value &o)
 
object_type (object_type &&)=default
 
object_type (Json::Value &&o)
 
+object_typeoperator= (const object_type &o)=default
 
+object_typeoperator= (object_type &&o) noexcept=default
 
+const mapped_type & at (const key_type &key) const
 
+size_type count (const key_type &key) const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.map b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.map new file mode 100644 index 00000000..ca7eec98 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.md5 b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.md5 new file mode 100644 index 00000000..39e21ac9 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.md5 @@ -0,0 +1 @@ +695c6a89b48f9665e34f8c15afa4cf34 \ No newline at end of file diff --git a/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.svg b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.svg new file mode 100644 index 00000000..3596ebda --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::traits::open_source_parsers_jsoncpp::object_type + + +Node1 + + +jwt::traits::open_source +_parsers_jsoncpp::object_type + + + + + +Node2 + + +Json::Value + + + + + +Node2->Node1 + + + + + + + + diff --git a/classjwt_1_1verifier-members.html b/classjwt_1_1verifier-members.html new file mode 100644 index 00000000..be731afb --- /dev/null +++ b/classjwt_1_1verifier-members.html @@ -0,0 +1,131 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::verifier< Clock, json_traits > Member List
+
+
+ +

This is the complete list of members for jwt::verifier< Clock, json_traits >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
allow_algorithm(Algorithm alg)jwt::verifier< Clock, json_traits >inline
basic_claim_t typedef (defined in jwt::verifier< Clock, json_traits >)jwt::verifier< Clock, json_traits >
expires_at_leeway(size_t leeway)jwt::verifier< Clock, json_traits >inline
issued_at_leeway(size_t leeway)jwt::verifier< Clock, json_traits >inline
leeway(size_t leeway)jwt::verifier< Clock, json_traits >inline
not_before_leeway(size_t leeway)jwt::verifier< Clock, json_traits >inline
verifier(Clock c)jwt::verifier< Clock, json_traits >inlineexplicit
verify(const decoded_jwt< json_traits > &jwt) constjwt::verifier< Clock, json_traits >inline
verify(const decoded_jwt< json_traits > &jwt, std::error_code &ec) constjwt::verifier< Clock, json_traits >inline
verify_check_fn_t typedefjwt::verifier< Clock, json_traits >
with_audience(const typename basic_claim_t::set_t &aud)jwt::verifier< Clock, json_traits >inline
with_audience(const typename json_traits::string_type &aud)jwt::verifier< Clock, json_traits >inline
with_claim(const typename json_traits::string_type &name, verify_check_fn_t fn)jwt::verifier< Clock, json_traits >inline
with_claim(const typename json_traits::string_type &name, basic_claim_t c)jwt::verifier< Clock, json_traits >inline
with_id(const typename json_traits::string_type &id)jwt::verifier< Clock, json_traits >inline
with_issuer(const typename json_traits::string_type &iss)jwt::verifier< Clock, json_traits >inline
with_subject(const typename json_traits::string_type &sub)jwt::verifier< Clock, json_traits >inline
with_type(const typename json_traits::string_type &type, std::locale locale=std::locale{})jwt::verifier< Clock, json_traits >inline
+
+ + + + diff --git a/classjwt_1_1verifier.html b/classjwt_1_1verifier.html new file mode 100644 index 00000000..813f265d --- /dev/null +++ b/classjwt_1_1verifier.html @@ -0,0 +1,792 @@ + + + + + + + +JWT-CPP: jwt::verifier< Clock, json_traits > Class Template Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwt::verifier< Clock, json_traits > Class Template Reference
+
+
+ +

#include <jwt.h>

+ + + + + + + +

+Public Types

+using basic_claim_t = basic_claim<json_traits>
 
using verify_check_fn_t
 Verification function data structure.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 verifier (Clock c)
 
verifierleeway (size_t leeway)
 
verifierexpires_at_leeway (size_t leeway)
 
verifiernot_before_leeway (size_t leeway)
 
verifierissued_at_leeway (size_t leeway)
 
verifierwith_type (const typename json_traits::string_type &type, std::locale locale=std::locale{})
 
verifierwith_issuer (const typename json_traits::string_type &iss)
 
verifierwith_subject (const typename json_traits::string_type &sub)
 
verifierwith_audience (const typename basic_claim_t::set_t &aud)
 
verifierwith_audience (const typename json_traits::string_type &aud)
 
verifierwith_id (const typename json_traits::string_type &id)
 
verifierwith_claim (const typename json_traits::string_type &name, verify_check_fn_t fn)
 
verifierwith_claim (const typename json_traits::string_type &name, basic_claim_t c)
 
template<typename Algorithm >
verifierallow_algorithm (Algorithm alg)
 Add an algorithm available for checking.
 
void verify (const decoded_jwt< json_traits > &jwt) const
 
void verify (const decoded_jwt< json_traits > &jwt, std::error_code &ec) const
 
+

Detailed Description

+
template<typename Clock, typename json_traits>
+class jwt::verifier< Clock, json_traits >

Verifier class used to check if a decoded token contains all claims required by your application and has a valid signature.

+

Member Typedef Documentation

+ +

◆ verify_check_fn_t

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + +
using jwt::verifier< Clock, json_traits >::verify_check_fn_t
+
+Initial value:
+
std::function<void(const verify_ops::verify_context<json_traits>&, std::error_code& ec)>
+
+

Verification function data structure.

+

This gets passed the current verifier, a reference to the decoded jwt, a reference to the key of this claim, as well as a reference to an error_code. The function checks if the actual value matches certain rules (e.g. equality to value x) and sets the error_code if it does not. Once a non zero error_code is encountered the verification stops and this error_code becomes the result returned from verify

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ verifier()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
jwt::verifier< Clock, json_traits >::verifier (Clock c)
+
+inlineexplicit
+
+

Constructor for building a new verifier instance

Parameters
+ + +
cClock instance
+
+
+ +
+
+

Member Function Documentation

+ +

◆ allow_algorithm()

+ +
+
+
+template<typename Clock , typename json_traits >
+
+template<typename Algorithm >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::allow_algorithm (Algorithm alg)
+
+inline
+
+ +

Add an algorithm available for checking.

+

This is used to handle incomming tokens for predefined algorithms which the authorization server is provided. For example a small system where only a single RSA key-pair is used to sign tokens

+
+
// We only need an RSA public key to verify tokens
+
.allow_algorithm(jwt::algorithm::rs256(rsa_pub_key, "", "", ""))
+
// We expect token to come from a known authorization server
+
.with_issuer("auth0");
+
Template Parameters
+ + +
Algorithmany algorithm such as those provided by jwt::algorithm
+
+
+
Parameters
+ + +
algAlgorithm to allow
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ expires_at_leeway()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::expires_at_leeway (size_t leeway)
+
+inline
+
+

Set leeway for expires at. If not specified the default leeway will be used.

Parameters
+ + +
leewaySet leeway to use for expires at.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ issued_at_leeway()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::issued_at_leeway (size_t leeway)
+
+inline
+
+

Set leeway for issued at. If not specified the default leeway will be used.

Parameters
+ + +
leewaySet leeway to use for issued at.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ leeway()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::leeway (size_t leeway)
+
+inline
+
+

Set default leeway to use.

Parameters
+ + +
leewayDefault leeway to use if not specified otherwise
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ not_before_leeway()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::not_before_leeway (size_t leeway)
+
+inline
+
+

Set leeway for not before. If not specified the default leeway will be used.

Parameters
+ + +
leewaySet leeway to use for not before.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ verify() [1/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
void jwt::verifier< Clock, json_traits >::verify (const decoded_jwt< json_traits > & jwt) const
+
+inline
+
+

Verify the given token.

Parameters
+ + +
jwtToken to check
+
+
+
Exceptions
+ + +
token_verification_exceptionVerification failed
+
+
+ +
+
+ +

◆ verify() [2/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
void jwt::verifier< Clock, json_traits >::verify (const decoded_jwt< json_traits > & jwt,
std::error_code & ec ) const
+
+inline
+
+

Verify the given token.

Parameters
+ + + +
jwtToken to check
ecerror_code filled with details on error
+
+
+ +
+
+ +

◆ with_audience() [1/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_audience (const typename basic_claim_t::set_t & aud)
+
+inline
+
+

Set an audience to check for. If any of the specified audiences is not present in the token the check fails.

Parameters
+ + +
audAudience to check for.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ with_audience() [2/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_audience (const typename json_traits::string_type & aud)
+
+inline
+
+

Set an audience to check for. If the specified audiences is not present in the token the check fails.

Parameters
+ + +
audAudience to check for.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ with_claim() [1/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_claim (const typename json_traits::string_type & name,
basic_claim_t c )
+
+inline
+
+

Specify a claim to check for equality (both type & value). See the private-claims.cpp example.

+
+
.allow_algorithm(jwt::algorithm::none{})
+
.with_issuer("auth.mydomain.io")
+
.with_audience("mydomain.io")
+
.with_claim("object", from_raw_json) // Match the exact JSON content
+
.verify(decoded);
+
Parameters
+ + + +
nameName of the claim to check for
cClaim to check for
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ with_claim() [2/2]

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_claim (const typename json_traits::string_type & name,
verify_check_fn_t fn )
+
+inline
+
+

Specify a claim to check for using the specified operation. This is helpful for implementating application specific authentication checks such as the one seen in partial-claim-verifier.cpp

+
auto verifier = jwt::verify()
+
.allow_algorithm(jwt::algorithm::rs256(rsa_pub_key, "", "", ""))
+
.with_issuer("auth0")
+
// Check for "foo" in /my-service/role
+
.with_claim("resource-access", role_verifier);
+
Parameters
+ + + +
nameName of the claim to check for
fnFunction to use for verifying the claim
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ with_id()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_id (const typename json_traits::string_type & id)
+
+inline
+
+

Set an id to check for. Check is case sensitive.

Parameters
+ + +
idID to check for.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ with_issuer()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_issuer (const typename json_traits::string_type & iss)
+
+inline
+
+

Set an issuer to check for. Check is case sensitive.

Parameters
+ + +
issIssuer to check for.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ with_subject()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_subject (const typename json_traits::string_type & sub)
+
+inline
+
+

Set a subject to check for. Check is case sensitive.

Parameters
+ + +
subSubject to check for.
+
+
+
Returns
*this to allow chaining
+ +
+
+ +

◆ with_type()

+ +
+
+
+template<typename Clock , typename json_traits >
+ + + + + +
+ + + + + + + + + + + +
verifier & jwt::verifier< Clock, json_traits >::with_type (const typename json_traits::string_type & type,
std::locale locale = std::locale{} )
+
+inline
+
+

Set an type to check for.

+

According to RFC 7519 Section 5.1, This parameter is ignored by JWT implementations; any processing of this parameter is performed by the JWT application. Check is case sensitive.

+
Parameters
+ + + +
typeType Header Parameter to check for.
localeLocalization functionality to use when comparing
+
+
+
Returns
*this to allow chaining
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/classjwt_1_1verifier.js b/classjwt_1_1verifier.js new file mode 100644 index 00000000..c3a50e6a --- /dev/null +++ b/classjwt_1_1verifier.js @@ -0,0 +1,20 @@ +var classjwt_1_1verifier = +[ + [ "verify_check_fn_t", "classjwt_1_1verifier.html#a52d03bd9864849da855916e44753eea6", null ], + [ "verifier", "classjwt_1_1verifier.html#aa4764c828213d9ef1537d2490ed98b45", null ], + [ "allow_algorithm", "classjwt_1_1verifier.html#ae2cc9d0125be58b51f4c4aa30878aa41", null ], + [ "expires_at_leeway", "classjwt_1_1verifier.html#a157d3a7b128aaac1b37a9ba47dd72718", null ], + [ "issued_at_leeway", "classjwt_1_1verifier.html#a6d5c5569c3ec1f91393ea4dcf6c3e21f", null ], + [ "leeway", "classjwt_1_1verifier.html#abb8a3e9d1decf63758baec48e964e3cd", null ], + [ "not_before_leeway", "classjwt_1_1verifier.html#a5ae0c09cc67ccc009149ca36d84d0fbf", null ], + [ "verify", "classjwt_1_1verifier.html#aa275e9eedac41ad8d8a0f2a3300acda2", null ], + [ "verify", "classjwt_1_1verifier.html#a448cd954e1ea53ff2bcb39b7cc30cc65", null ], + [ "with_audience", "classjwt_1_1verifier.html#a7cf070f76669f32c96e38ee4e9c5cb00", null ], + [ "with_audience", "classjwt_1_1verifier.html#a9e1129b30859be9d617547e333ad0ca8", null ], + [ "with_claim", "classjwt_1_1verifier.html#a9ad51170089fb1566c5d97314cc33e41", null ], + [ "with_claim", "classjwt_1_1verifier.html#a1e21d481d69ebddb1d7275449c35be23", null ], + [ "with_id", "classjwt_1_1verifier.html#af26d00278aca90b1c4ee80531aebb8ed", null ], + [ "with_issuer", "classjwt_1_1verifier.html#ad7cf48fc13d29bc59643379c891232cb", null ], + [ "with_subject", "classjwt_1_1verifier.html#a7ae6f50c039290ac6f87e7dda905c25c", null ], + [ "with_type", "classjwt_1_1verifier.html#ae77119a8c25bb7b906191f0055981a7b", null ] +]; \ No newline at end of file diff --git a/clipboard.js b/clipboard.js new file mode 100644 index 00000000..42c1fb0e --- /dev/null +++ b/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/closed.png b/closed.png new file mode 100644 index 00000000..98cc2c90 Binary files /dev/null and b/closed.png differ diff --git a/cookie.js b/cookie.js new file mode 100644 index 00000000..53ad21d9 --- /dev/null +++ b/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/danielaparker-jsoncons_2defaults_8h_source.html b/danielaparker-jsoncons_2defaults_8h_source.html new file mode 100644 index 00000000..62b281eb --- /dev/null +++ b/danielaparker-jsoncons_2defaults_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/danielaparker-jsoncons/defaults.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
defaults.h
+
+
+
1#ifndef JWT_CPP_DANIELAPARKER_JSONCONS_DEFAULTS_H
+
2#define JWT_CPP_DANIELAPARKER_JSONCONS_DEFAULTS_H
+
3
+
4#ifndef JWT_DISABLE_PICOJSON
+
5#define JWT_DISABLE_PICOJSON
+
6#endif
+
7
+
8#include "traits.h"
+
9
+
10namespace jwt {
+
17 using claim = basic_claim<traits::danielaparker_jsoncons>;
+
18
+
23 inline verifier<default_clock, traits::danielaparker_jsoncons> verify() {
+
24 return verify<default_clock, traits::danielaparker_jsoncons>(default_clock{});
+
25 }
+
26
+
31 inline builder<default_clock, traits::danielaparker_jsoncons> create() {
+
32 return builder<default_clock, traits::danielaparker_jsoncons>(default_clock{});
+
33 }
+
34
+
35#ifndef JWT_DISABLE_BASE64
+
43 inline decoded_jwt<traits::danielaparker_jsoncons> decode(const std::string& token) {
+
44 return decoded_jwt<traits::danielaparker_jsoncons>(token);
+
45 }
+
46#endif
+
47
+
59 template<typename Decode>
+
+
60 decoded_jwt<traits::danielaparker_jsoncons> decode(const std::string& token, Decode decode) {
+ +
62 }
+
+
63
+
70 inline jwk<traits::danielaparker_jsoncons> parse_jwk(const traits::danielaparker_jsoncons::string_type& token) {
+
71 return jwk<traits::danielaparker_jsoncons>(token);
+
72 }
+
73
+
80 inline jwks<traits::danielaparker_jsoncons> parse_jwks(const traits::danielaparker_jsoncons::string_type& token) {
+
81 return jwks<traits::danielaparker_jsoncons>(token);
+
82 }
+
83
+
88 using verify_context = verify_ops::verify_context<traits::danielaparker_jsoncons>;
+
89} // namespace jwt
+
90
+
91#endif // JWT_CPP_DANIELAPARKER_JSONCONS_DEFAULTS_H
+
Definition jwt.h:2954
+
JSON Web Token.
Definition base.h:21
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:4195
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:4209
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+
basic_claim< traits::boost_json > claim
a class to store a generic Boost.JSON value as claim
Definition defaults.h:17
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:4170
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:88
+
+
+ + + + diff --git a/danielaparker-jsoncons_2traits_8h_source.html b/danielaparker-jsoncons_2traits_8h_source.html new file mode 100644 index 00000000..8daac645 --- /dev/null +++ b/danielaparker-jsoncons_2traits_8h_source.html @@ -0,0 +1,256 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/danielaparker-jsoncons/traits.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits.h
+
+
+
1#define JWT_DISABLE_PICOJSON
+
2#define JSONCONS_NO_DEPRECATED
+
3
+
4#include "jwt-cpp/jwt.h"
+
5
+
6#include "jsoncons/json.hpp"
+
7
+
8#include <sstream>
+
9
+
10namespace jwt {
+
14 namespace traits {
+
+ +
17 // Needs at least https://github.com/danielaparker/jsoncons/commit/28c56b90ec7337f98a5b8942574590111a5e5831
+
18 static_assert(jsoncons::version().minor >= 167, "A higher version of jsoncons is required!");
+
19
+
20 using json = jsoncons::json;
+
21 using value_type = json;
+
+
22 struct object_type : json::object {
+
23 // Add missing C++11 member types
+
24 // https://github.com/danielaparker/jsoncons/commit/1b1ceeb572f9a2db6d37cff47ac78a4f14e072e2#commitcomment-45391411
+
25 using value_type = key_value_type; // Enable optional jwt-cpp methods
+
26 using mapped_type = key_value_type::value_type;
+
27 using size_type = size_t; // for implementing count
+
28
+
29 object_type() = default;
+
30 object_type(const object_type&) = default;
+
31 explicit object_type(const json::object& o) : json::object(o) {}
+
32 object_type(object_type&&) = default;
+
33 explicit object_type(json::object&& o) : json::object(o) {}
+
34 ~object_type() = default;
+
35 object_type& operator=(const object_type& o) = default;
+
36 object_type& operator=(object_type&& o) noexcept = default;
+
37
+
38 // Add missing C++11 subscription operator
+
39 mapped_type& operator[](const key_type& key) {
+
40 // https://github.com/microsoft/STL/blob/2914b4301c59dc7ffc09d16ac6f7979fde2b7f2c/stl/inc/map#L325
+
41 return try_emplace(key).first->value();
+
42 }
+
43
+
44 // Add missing C++11 element access
+
45 const mapped_type& at(const key_type& key) const {
+
46 auto target = find(key);
+
47 if (target != end()) return target->value();
+
48
+
49 throw std::out_of_range("invalid key");
+
50 }
+
51
+
52 // Add missing C++11 lookup method
+
53 size_type count(const key_type& key) const {
+
54 struct compare {
+
55 bool operator()(const value_type& val, const key_type& key) const { return val.key() < key; }
+
56 bool operator()(const key_type& key, const value_type& val) const { return key < val.key(); }
+
57 };
+
58
+
59 // https://en.cppreference.com/w/cpp/algorithm/binary_search#Complexity
+
60 if (std::binary_search(this->begin(), this->end(), key, compare{})) return 1;
+
61 return 0;
+
62 }
+
63 };
+
+
+
64 class array_type : public json::array {
+
65 public:
+
66 using json::array::array;
+
67 explicit array_type(const json::array& a) : json::array(a) {}
+
68 explicit array_type(json::array&& a) : json::array(a) {}
+
69 value_type const& front() const { return this->operator[](0U); }
+
70 };
+
+
71 using string_type = std::string; // current limitation of traits implementation
+
72 using number_type = double;
+
73 using integer_type = int64_t;
+
74 using boolean_type = bool;
+
75
+
76 static jwt::json::type get_type(const json& val) {
+
77 using jwt::json::type;
+
78
+
79 if (val.type() == jsoncons::json_type::bool_value) return type::boolean;
+
80 if (val.type() == jsoncons::json_type::int64_value) return type::integer;
+
81 if (val.type() == jsoncons::json_type::uint64_value) return type::integer;
+
82 if (val.type() == jsoncons::json_type::half_value) return type::number;
+
83 if (val.type() == jsoncons::json_type::double_value) return type::number;
+
84 if (val.type() == jsoncons::json_type::string_value) return type::string;
+
85 if (val.type() == jsoncons::json_type::array_value) return type::array;
+
86 if (val.type() == jsoncons::json_type::object_value) return type::object;
+
87
+
88 throw std::logic_error("invalid type");
+
89 }
+
90
+
91 static object_type as_object(const json& val) {
+
92 if (val.type() != jsoncons::json_type::object_value) throw std::bad_cast();
+
93 return object_type(val.object_value());
+
94 }
+
95
+
96 static array_type as_array(const json& val) {
+
97 if (val.type() != jsoncons::json_type::array_value) throw std::bad_cast();
+
98 return array_type(val.array_value());
+
99 }
+
100
+
101 static string_type as_string(const json& val) {
+
102 if (val.type() != jsoncons::json_type::string_value) throw std::bad_cast();
+
103 return val.as_string();
+
104 }
+
105
+
106 static number_type as_number(const json& val) {
+
107 if (get_type(val) != jwt::json::type::number) throw std::bad_cast();
+
108 return val.as_double();
+
109 }
+
110
+
111 static integer_type as_integer(const json& val) {
+
112 if (get_type(val) != jwt::json::type::integer) throw std::bad_cast();
+
113 return val.as<integer_type>();
+
114 }
+
115
+
116 static boolean_type as_boolean(const json& val) {
+
117 if (val.type() != jsoncons::json_type::bool_value) throw std::bad_cast();
+
118 return val.as_bool();
+
119 }
+
120
+
121 static bool parse(json& val, const std::string& str) {
+
122 val = json::parse(str);
+
123 return true;
+
124 }
+
125
+
126 static std::string serialize(const json& val) {
+
127 std::ostringstream os;
+
128 os << jsoncons::print(val);
+
129 return os.str();
+
130 }
+
131 };
+
+
132 } // namespace traits
+
133} // namespace jwt
+ +
type
Categories for the various JSON types used in JWTs.
Definition jwt.h:2274
+
JSON Web Token.
Definition base.h:21
+ +
basic_claim's JSON trait implementation for jsoncons.
Definition traits.h:16
+
+
+ + + + diff --git a/deprecated.html b/deprecated.html new file mode 100644 index 00000000..5af59b9b --- /dev/null +++ b/deprecated.html @@ -0,0 +1,121 @@ + + + + + + + +JWT-CPP: Deprecated List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Deprecated List
+
+
+
+
Member jwt::helper::load_private_ec_key_from_string (const std::string &key, const std::string &password, std::error_code &ec)
+
Use the templated version helper::load_private_key_from_string with error::ecdsa_error
+
Member jwt::helper::load_private_ec_key_from_string (const std::string &key, const std::string &password="")
+
Use the templated version helper::load_private_key_from_string with error::ecdsa_error
+
Member jwt::helper::load_public_ec_key_from_string (const std::string &key, const std::string &password, std::error_code &ec)
+
Use the templated version helper::load_private_key_from_string with error::ecdsa_error
+
Member jwt::helper::load_public_ec_key_from_string (const std::string &key, const std::string &password="")
+
Use the templated version helper::load_private_key_from_string with error::ecdsa_error
+
+
+
+
+ + + + diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67.html b/dir_0c244ebd1071fc3a3e67bea2565ecb67.html new file mode 100644 index 00000000..97322516 --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67.html @@ -0,0 +1,130 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits Directory Reference
+
+
+
+Directory dependency graph for traits:
+
+
+
+ + + + + + + + + + + + +

+Directories

 boost-json
 
 danielaparker-jsoncons
 
 kazuho-picojson
 
 nlohmann-json
 
 open-source-parsers-jsoncpp
 
+
+
+ + + + diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67.js b/dir_0c244ebd1071fc3a3e67bea2565ecb67.js new file mode 100644 index 00000000..4b3a02d0 --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67.js @@ -0,0 +1,8 @@ +var dir_0c244ebd1071fc3a3e67bea2565ecb67 = +[ + [ "boost-json", "dir_c0a47b52146df2fb522cc2caf716c25e.html", "dir_c0a47b52146df2fb522cc2caf716c25e" ], + [ "danielaparker-jsoncons", "dir_40e93e4016c3584ba3b333387b8a88a2.html", "dir_40e93e4016c3584ba3b333387b8a88a2" ], + [ "kazuho-picojson", "dir_767a780e71f3df42bff551d84f4be7e4.html", "dir_767a780e71f3df42bff551d84f4be7e4" ], + [ "nlohmann-json", "dir_21e3d14daf2ae74f69a5ba3bdd78405a.html", "dir_21e3d14daf2ae74f69a5ba3bdd78405a" ], + [ "open-source-parsers-jsoncpp", "dir_8b41630aed217e5c54affba2453ee0df.html", "dir_8b41630aed217e5c54affba2453ee0df" ] +]; \ No newline at end of file diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map new file mode 100644 index 00000000..6cc2ba39 --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 new file mode 100644 index 00000000..4a0a13ba --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 @@ -0,0 +1 @@ +4abd75e3905b96ddd702f125f25e9a93 \ No newline at end of file diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg new file mode 100644 index 00000000..9665b2a5 --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg @@ -0,0 +1,78 @@ + + + + + + +include/jwt-cpp/traits + +clusterdir_db0c9b95a30589e349974d93aa14253f + + +jwt-cpp + + + + +clusterdir_0c244ebd1071fc3a3e67bea2565ecb67 + + + + + + + +dir_0c244ebd1071fc3a3e67bea2565ecb67 +traits + + + +dir_c0a47b52146df2fb522cc2caf716c25e + + +boost-json + + + + + +dir_40e93e4016c3584ba3b333387b8a88a2 + + +danielaparker-jsoncons + + + + + +dir_767a780e71f3df42bff551d84f4be7e4 + + +kazuho-picojson + + + + + +dir_21e3d14daf2ae74f69a5ba3bdd78405a + + +nlohmann-json + + + + + +dir_8b41630aed217e5c54affba2453ee0df + + +open-source-parsers +-jsoncpp + + + + + diff --git a/dir_21e3d14daf2ae74f69a5ba3bdd78405a.html b/dir_21e3d14daf2ae74f69a5ba3bdd78405a.html new file mode 100644 index 00000000..5b37dc7d --- /dev/null +++ b/dir_21e3d14daf2ae74f69a5ba3bdd78405a.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/nlohmann-json Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nlohmann-json Directory Reference
+
+
+
+Directory dependency graph for nlohmann-json:
+
+
+
+ + + + + + +

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_21e3d14daf2ae74f69a5ba3bdd78405a.js b/dir_21e3d14daf2ae74f69a5ba3bdd78405a.js new file mode 100644 index 00000000..4089698a --- /dev/null +++ b/dir_21e3d14daf2ae74f69a5ba3bdd78405a.js @@ -0,0 +1,5 @@ +var dir_21e3d14daf2ae74f69a5ba3bdd78405a = +[ + [ "defaults.h", "nlohmann-json_2defaults_8h_source.html", null ], + [ "traits.h", "nlohmann-json_2traits_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.map b/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.map new file mode 100644 index 00000000..c543a11a --- /dev/null +++ b/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.md5 b/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.md5 new file mode 100644 index 00000000..7c5a6c78 --- /dev/null +++ b/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.md5 @@ -0,0 +1 @@ +c081db462ecb98cc1af6668db0bb7283 \ No newline at end of file diff --git a/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.svg b/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.svg new file mode 100644 index 00000000..c50b9a96 --- /dev/null +++ b/dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.svg @@ -0,0 +1,29 @@ + + + + + + +include/jwt-cpp/traits/nlohmann-json + +clusterdir_0c244ebd1071fc3a3e67bea2565ecb67 + + +traits + + + + + +dir_21e3d14daf2ae74f69a5ba3bdd78405a + + +nlohmann-json + + + + + diff --git a/dir_2baeb9b2ab4545faf9e2316474ff25e0.html b/dir_2baeb9b2ab4545faf9e2316474ff25e0.html new file mode 100644 index 00000000..c5bde6c8 --- /dev/null +++ b/dir_2baeb9b2ab4545faf9e2316474ff25e0.html @@ -0,0 +1,111 @@ + + + + + + + +JWT-CPP: .github Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
.github Directory Reference
+
+
+
+
+ + + + diff --git a/dir_40e93e4016c3584ba3b333387b8a88a2.html b/dir_40e93e4016c3584ba3b333387b8a88a2.html new file mode 100644 index 00000000..71f4782f --- /dev/null +++ b/dir_40e93e4016c3584ba3b333387b8a88a2.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/danielaparker-jsoncons Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
danielaparker-jsoncons Directory Reference
+
+
+
+Directory dependency graph for danielaparker-jsoncons:
+
+
+
+ + + + + + +

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_40e93e4016c3584ba3b333387b8a88a2.js b/dir_40e93e4016c3584ba3b333387b8a88a2.js new file mode 100644 index 00000000..e8a29b52 --- /dev/null +++ b/dir_40e93e4016c3584ba3b333387b8a88a2.js @@ -0,0 +1,5 @@ +var dir_40e93e4016c3584ba3b333387b8a88a2 = +[ + [ "defaults.h", "danielaparker-jsoncons_2defaults_8h_source.html", null ], + [ "traits.h", "danielaparker-jsoncons_2traits_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_40e93e4016c3584ba3b333387b8a88a2_dep.map b/dir_40e93e4016c3584ba3b333387b8a88a2_dep.map new file mode 100644 index 00000000..5834b329 --- /dev/null +++ b/dir_40e93e4016c3584ba3b333387b8a88a2_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_40e93e4016c3584ba3b333387b8a88a2_dep.md5 b/dir_40e93e4016c3584ba3b333387b8a88a2_dep.md5 new file mode 100644 index 00000000..3b50b82f --- /dev/null +++ b/dir_40e93e4016c3584ba3b333387b8a88a2_dep.md5 @@ -0,0 +1 @@ +c2777cc8c61c4ddf21294b16d33cbae5 \ No newline at end of file diff --git a/dir_40e93e4016c3584ba3b333387b8a88a2_dep.svg b/dir_40e93e4016c3584ba3b333387b8a88a2_dep.svg new file mode 100644 index 00000000..c5e7e5ae --- /dev/null +++ b/dir_40e93e4016c3584ba3b333387b8a88a2_dep.svg @@ -0,0 +1,29 @@ + + + + + + +include/jwt-cpp/traits/danielaparker-jsoncons + +clusterdir_0c244ebd1071fc3a3e67bea2565ecb67 + + +traits + + + + + +dir_40e93e4016c3584ba3b333387b8a88a2 + + +danielaparker-jsoncons + + + + + diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html new file mode 100644 index 00000000..63e4ed9b --- /dev/null +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,111 @@ + + + + + + + +JWT-CPP: docs Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
docs Directory Reference
+
+
+
+
+ + + + diff --git a/dir_767a780e71f3df42bff551d84f4be7e4.html b/dir_767a780e71f3df42bff551d84f4be7e4.html new file mode 100644 index 00000000..916bbb26 --- /dev/null +++ b/dir_767a780e71f3df42bff551d84f4be7e4.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
kazuho-picojson Directory Reference
+
+
+
+Directory dependency graph for kazuho-picojson:
+
+
+
+ + + + + + +

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_767a780e71f3df42bff551d84f4be7e4.js b/dir_767a780e71f3df42bff551d84f4be7e4.js new file mode 100644 index 00000000..95c1dfd1 --- /dev/null +++ b/dir_767a780e71f3df42bff551d84f4be7e4.js @@ -0,0 +1,5 @@ +var dir_767a780e71f3df42bff551d84f4be7e4 = +[ + [ "defaults.h", "kazuho-picojson_2defaults_8h_source.html", null ], + [ "traits.h", "kazuho-picojson_2traits_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_767a780e71f3df42bff551d84f4be7e4_dep.map b/dir_767a780e71f3df42bff551d84f4be7e4_dep.map new file mode 100644 index 00000000..178173f1 --- /dev/null +++ b/dir_767a780e71f3df42bff551d84f4be7e4_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_767a780e71f3df42bff551d84f4be7e4_dep.md5 b/dir_767a780e71f3df42bff551d84f4be7e4_dep.md5 new file mode 100644 index 00000000..11a19c68 --- /dev/null +++ b/dir_767a780e71f3df42bff551d84f4be7e4_dep.md5 @@ -0,0 +1 @@ +0fdd5a438a97e7eb01d89d232420a5d0 \ No newline at end of file diff --git a/dir_767a780e71f3df42bff551d84f4be7e4_dep.svg b/dir_767a780e71f3df42bff551d84f4be7e4_dep.svg new file mode 100644 index 00000000..c3896ded --- /dev/null +++ b/dir_767a780e71f3df42bff551d84f4be7e4_dep.svg @@ -0,0 +1,29 @@ + + + + + + +include/jwt-cpp/traits/kazuho-picojson + +clusterdir_0c244ebd1071fc3a3e67bea2565ecb67 + + +traits + + + + + +dir_767a780e71f3df42bff551d84f4be7e4 + + +kazuho-picojson + + + + + diff --git a/dir_7a723e4d2b0344c6223a621594d1203e.html b/dir_7a723e4d2b0344c6223a621594d1203e.html new file mode 100644 index 00000000..8ca1a848 --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: example/traits Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits Directory Reference
+
+
+
+Directory dependency graph for traits:
+
+
+
+
+
+ + + + diff --git a/dir_7a723e4d2b0344c6223a621594d1203e_dep.map b/dir_7a723e4d2b0344c6223a621594d1203e_dep.map new file mode 100644 index 00000000..0b91fdd0 --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 b/dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 new file mode 100644 index 00000000..66d00fb2 --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 @@ -0,0 +1 @@ +03f2194487f6344d0ded16efbcdea9a2 \ No newline at end of file diff --git a/dir_7a723e4d2b0344c6223a621594d1203e_dep.svg b/dir_7a723e4d2b0344c6223a621594d1203e_dep.svg new file mode 100644 index 00000000..a3792fda --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e_dep.svg @@ -0,0 +1,29 @@ + + + + + + +example/traits + +clusterdir_cfafba98a580ce4b62f8a6fa96d7cbb0 + + +example + + + + + +dir_7a723e4d2b0344c6223a621594d1203e + + +traits + + + + + diff --git a/dir_8b41630aed217e5c54affba2453ee0df.html b/dir_8b41630aed217e5c54affba2453ee0df.html new file mode 100644 index 00000000..75ffb240 --- /dev/null +++ b/dir_8b41630aed217e5c54affba2453ee0df.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/open-source-parsers-jsoncpp Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
open-source-parsers-jsoncpp Directory Reference
+
+
+
+Directory dependency graph for open-source-parsers-jsoncpp:
+
+
+
+ + + + + + +

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_8b41630aed217e5c54affba2453ee0df.js b/dir_8b41630aed217e5c54affba2453ee0df.js new file mode 100644 index 00000000..11c2ce79 --- /dev/null +++ b/dir_8b41630aed217e5c54affba2453ee0df.js @@ -0,0 +1,5 @@ +var dir_8b41630aed217e5c54affba2453ee0df = +[ + [ "defaults.h", "open-source-parsers-jsoncpp_2defaults_8h_source.html", null ], + [ "traits.h", "open-source-parsers-jsoncpp_2traits_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_8b41630aed217e5c54affba2453ee0df_dep.map b/dir_8b41630aed217e5c54affba2453ee0df_dep.map new file mode 100644 index 00000000..d9e05bc3 --- /dev/null +++ b/dir_8b41630aed217e5c54affba2453ee0df_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_8b41630aed217e5c54affba2453ee0df_dep.md5 b/dir_8b41630aed217e5c54affba2453ee0df_dep.md5 new file mode 100644 index 00000000..1de12a51 --- /dev/null +++ b/dir_8b41630aed217e5c54affba2453ee0df_dep.md5 @@ -0,0 +1 @@ +d122a01895f276c1c0a87f69e653d87a \ No newline at end of file diff --git a/dir_8b41630aed217e5c54affba2453ee0df_dep.svg b/dir_8b41630aed217e5c54affba2453ee0df_dep.svg new file mode 100644 index 00000000..615cb5b0 --- /dev/null +++ b/dir_8b41630aed217e5c54affba2453ee0df_dep.svg @@ -0,0 +1,30 @@ + + + + + + +include/jwt-cpp/traits/open-source-parsers-jsoncpp + +clusterdir_0c244ebd1071fc3a3e67bea2565ecb67 + + +traits + + + + + +dir_8b41630aed217e5c54affba2453ee0df + + +open-source-parsers +-jsoncpp + + + + + diff --git a/dir_c0a47b52146df2fb522cc2caf716c25e.html b/dir_c0a47b52146df2fb522cc2caf716c25e.html new file mode 100644 index 00000000..634cbbcd --- /dev/null +++ b/dir_c0a47b52146df2fb522cc2caf716c25e.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
boost-json Directory Reference
+
+
+
+Directory dependency graph for boost-json:
+
+
+
+ + + + + + +

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_c0a47b52146df2fb522cc2caf716c25e.js b/dir_c0a47b52146df2fb522cc2caf716c25e.js new file mode 100644 index 00000000..14dc854c --- /dev/null +++ b/dir_c0a47b52146df2fb522cc2caf716c25e.js @@ -0,0 +1,5 @@ +var dir_c0a47b52146df2fb522cc2caf716c25e = +[ + [ "defaults.h", "boost-json_2defaults_8h_source.html", null ], + [ "traits.h", "boost-json_2traits_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_c0a47b52146df2fb522cc2caf716c25e_dep.map b/dir_c0a47b52146df2fb522cc2caf716c25e_dep.map new file mode 100644 index 00000000..bfd2b163 --- /dev/null +++ b/dir_c0a47b52146df2fb522cc2caf716c25e_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_c0a47b52146df2fb522cc2caf716c25e_dep.md5 b/dir_c0a47b52146df2fb522cc2caf716c25e_dep.md5 new file mode 100644 index 00000000..17f86deb --- /dev/null +++ b/dir_c0a47b52146df2fb522cc2caf716c25e_dep.md5 @@ -0,0 +1 @@ +2b4cc1efeeb7a59cd86a28d302bfc40d \ No newline at end of file diff --git a/dir_c0a47b52146df2fb522cc2caf716c25e_dep.svg b/dir_c0a47b52146df2fb522cc2caf716c25e_dep.svg new file mode 100644 index 00000000..dd2f714b --- /dev/null +++ b/dir_c0a47b52146df2fb522cc2caf716c25e_dep.svg @@ -0,0 +1,29 @@ + + + + + + +include/jwt-cpp/traits/boost-json + +clusterdir_0c244ebd1071fc3a3e67bea2565ecb67 + + +traits + + + + + +dir_c0a47b52146df2fb522cc2caf716c25e + + +boost-json + + + + + diff --git a/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html b/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html new file mode 100644 index 00000000..51f3eeb9 --- /dev/null +++ b/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html @@ -0,0 +1,134 @@ + + + + + + + +JWT-CPP: example Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
example Directory Reference
+
+
+ + + + +

+Directories

 traits
 
+ + + + + + + + + + + + + + + +

+Files

 es256k.cpp
 
 jwks-verify.cpp
 
 partial-claim-verifier.cpp
 
 print-claims.cpp
 
 private-claims.cpp
 
 rsa-create.cpp
 
 rsa-verify.cpp
 
+
+
+ + + + diff --git a/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.js b/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.js new file mode 100644 index 00000000..352747bd --- /dev/null +++ b/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.js @@ -0,0 +1,10 @@ +var dir_cfafba98a580ce4b62f8a6fa96d7cbb0 = +[ + [ "es256k.cpp", "es256k_8cpp.html", null ], + [ "jwks-verify.cpp", "jwks-verify_8cpp.html", null ], + [ "partial-claim-verifier.cpp", "partial-claim-verifier_8cpp.html", null ], + [ "print-claims.cpp", "print-claims_8cpp.html", null ], + [ "private-claims.cpp", "private-claims_8cpp.html", null ], + [ "rsa-create.cpp", "rsa-create_8cpp.html", null ], + [ "rsa-verify.cpp", "rsa-verify_8cpp.html", null ] +]; \ No newline at end of file diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 00000000..1cda03a5 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: include Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Directories

 jwt-cpp
 
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 00000000..1daab6e2 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,4 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "jwt-cpp", "dir_db0c9b95a30589e349974d93aa14253f.html", "dir_db0c9b95a30589e349974d93aa14253f" ] +]; \ No newline at end of file diff --git a/dir_db0c9b95a30589e349974d93aa14253f.html b/dir_db0c9b95a30589e349974d93aa14253f.html new file mode 100644 index 00000000..5039caea --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt-cpp Directory Reference
+
+
+
+Directory dependency graph for jwt-cpp:
+
+
+
+ + + + + + +

+Files

 base.h
 
 jwt.h
 
+
+
+ + + + diff --git a/dir_db0c9b95a30589e349974d93aa14253f.js b/dir_db0c9b95a30589e349974d93aa14253f.js new file mode 100644 index 00000000..27198934 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f.js @@ -0,0 +1,6 @@ +var dir_db0c9b95a30589e349974d93aa14253f = +[ + [ "traits", "dir_0c244ebd1071fc3a3e67bea2565ecb67.html", "dir_0c244ebd1071fc3a3e67bea2565ecb67" ], + [ "base.h", "base_8h_source.html", null ], + [ "jwt.h", "jwt_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_db0c9b95a30589e349974d93aa14253f_dep.map b/dir_db0c9b95a30589e349974d93aa14253f_dep.map new file mode 100644 index 00000000..4b6b9ed9 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/dir_db0c9b95a30589e349974d93aa14253f_dep.md5 b/dir_db0c9b95a30589e349974d93aa14253f_dep.md5 new file mode 100644 index 00000000..577b2f02 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f_dep.md5 @@ -0,0 +1 @@ +6c1fe5ec74744b661a040c15514fa695 \ No newline at end of file diff --git a/dir_db0c9b95a30589e349974d93aa14253f_dep.svg b/dir_db0c9b95a30589e349974d93aa14253f_dep.svg new file mode 100644 index 00000000..3c480ac8 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f_dep.svg @@ -0,0 +1,41 @@ + + + + + + +include/jwt-cpp + +clusterdir_d44c64559bbebec7f509842c48db8b23 + + +include + + + + +clusterdir_db0c9b95a30589e349974d93aa14253f + + + + + + + +dir_db0c9b95a30589e349974d93aa14253f +jwt-cpp + + + +dir_0c244ebd1071fc3a3e67bea2565ecb67 + + +traits + + + + + diff --git a/doc.svg b/doc.svg new file mode 100644 index 00000000..0b928a53 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 00000000..ac18b275 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen-awesome-sidebar-only.css b/doxygen-awesome-sidebar-only.css new file mode 100644 index 00000000..853f6d69 --- /dev/null +++ b/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/doxygen-awesome.css b/doxygen-awesome.css new file mode 100644 index 00000000..08238977 --- /dev/null +++ b/doxygen-awesome.css @@ -0,0 +1,2530 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #f8d1cc; + --warning-color-dark: #b61825; + --warning-color-darker: #75070f; + --note-color: #faf3d8; + --note-color-dark: #f3a600; + --note-color-darker: #5f4204; + --todo-color: #e4f3ff; + --todo-color-dark: #1879C4; + --todo-color-darker: #274a5c; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #e4dafd; + --bug-color-dark: #5b2bdd; + --bug-color-darker: #2a0d72; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: .9em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: transparent; + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform 0.25s ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt { + color: var(--todo-color-dark); +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform 0.25s ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform .1s ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity .1s ease-in-out, color .1s ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed { + margin: var(--spacing-medium) auto; +} + +.tabbed ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; + border-bottom: 1px solid var(--separator-color); +} + +.tabbed li { + display: none; +} + +.tabbed li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: var(--spacing-small) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + padding: var(--spacing-small) var(--spacing-large); + border-radius: var(--border-radius-medium); +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active { + color: var(--primary-color); +} + +.tabs-overview button.tab-button.active::after { + content: ''; + display: block; + position: absolute; + left: 0px; + bottom: 0; + right: 0px; + height: 3px; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); +} diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 00000000..b4fc1240 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1819 @@ +/* The standard CSS for doxygen 1.10.0*/ + +body { + background-color: white; + color: black; +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: Roboto,sans-serif; + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: Roboto,sans-serif; + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: white; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : #F9FAFC; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid #C4CFE5; + border-radius: 4px; + background-color: #FBFCFD; + color: black; +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: black; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid black; + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: #2EC82E; +} + +.clipboard.success { + border-color: #2EC82E; +} + +div.line { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #00FF00; + color: black; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: #4665A2; + background-color: #D8D8D8; +} + +span.lineno a:hover { + color: #4665A2; + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: 104px; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000; +} + +span.keywordtype { + color: #604020; +} + +span.keywordflow { + color: #E08000; +} + +span.comment { + color: #800000; +} + +span.preprocessor { + color: #806020; +} + +span.stringliteral { + color: #002080; +} + +span.charliteral { + color: #008080; +} + +span.xmlcdata { + color: black; +} + +span.vhdldigit { + color: #FF00FF; +} + +span.vhdlchar { + color: #000000; +} + +span.vhdlkeyword { + color: #700070; +} + +span.vhdllogic { + color: #FF0000; +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #2D4068; +} + +th.dirtab { + background-color: #374F7F; + color: #FFFFFF; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: white; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: #602020; + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: #F8F9FC; +} + +.directory tr.even { + padding-left: 6px; + background-color: white; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial,Helvetica; + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.svg'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#283A5D; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: #2A3D61; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: #f8d1cc; + border-left: 8px solid #b61825; + color: #75070f; +} + +dl.warning dt, dl.attention dt { + color: #b61825; +} + +dl.note, dl.remark { + background: #faf3d8; + border-left: 8px solid #f3a600; + color: #5f4204; +} + +dl.note dt, dl.remark dt { + color: #f3a600; +} + +dl.todo { + background: #e4f3ff; + border-left: 8px solid #1879C4; + color: #274a5c; +} + +dl.todo dt { + color: #1879C4; +} + +dl.test { + background: #e8e8ff; + border-left: 8px solid #3939C4; + color: #1a1a5c; +} + +dl.test dt { + color: #3939C4; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.bug { + background: #e4dafd; + border-left: 8px solid #5b2bdd; + color: #2a0d72; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.deprecated { + background: #ecf0f3; + border-left: 8px solid #5b6269; + color: #43454a; +} + +dl.deprecated dt a { + color: #5b6269 !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: #d8f1e3; + border-left: 8px solid #44b86f; + color: #265532; +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: #44b86f; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; + background-color: white; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("data:image/svg+xml;utf8,&%238595;") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: black; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: #4665A2; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: Roboto,sans-serif; + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: white; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: gray; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: white; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: gray; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 00000000..79a76354 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen_crawl.html b/doxygen_crawl.html new file mode 100644 index 00000000..d38d8f9f --- /dev/null +++ b/doxygen_crawl.html @@ -0,0 +1,248 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 00000000..8012854c --- /dev/null +++ b/dynsections.js @@ -0,0 +1,194 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/es256k_8cpp.html b/es256k_8cpp.html new file mode 100644 index 00000000..e7286143 --- /dev/null +++ b/es256k_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: example/es256k.cpp File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
es256k.cpp File Reference
+
+
+
#include <iostream>
+#include <jwt-cpp/jwt.h>
+
+Include dependency graph for es256k.cpp:
+
+
+
+
+ + + +

+Functions

+int main ()
 
+
+
+ + + + diff --git a/es256k_8cpp__incl.map b/es256k_8cpp__incl.map new file mode 100644 index 00000000..c2714dc1 --- /dev/null +++ b/es256k_8cpp__incl.map @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/es256k_8cpp__incl.md5 b/es256k_8cpp__incl.md5 new file mode 100644 index 00000000..651127c6 --- /dev/null +++ b/es256k_8cpp__incl.md5 @@ -0,0 +1 @@ +c723cef503a4a1c956aa5fca9ff4dab1 \ No newline at end of file diff --git a/es256k_8cpp__incl.svg b/es256k_8cpp__incl.svg new file mode 100644 index 00000000..23778f26 --- /dev/null +++ b/es256k_8cpp__incl.svg @@ -0,0 +1,652 @@ + + + + + + +example/es256k.cpp + + +Node1 + + +example/es256k.cpp + + + + + +Node2 + + +iostream + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt-cpp/jwt.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +picojson/picojson.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +base.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +algorithm + + + + + +Node3->Node6 + + + + + + + + +Node11 + + +vector + + + + + +Node3->Node11 + + + + + + + + +Node12 + + +openssl/ec.h + + + + + +Node3->Node12 + + + + + + + + +Node13 + + +openssl/ecdsa.h + + + + + +Node3->Node13 + + + + + + + + +Node14 + + +openssl/err.h + + + + + +Node3->Node14 + + + + + + + + +Node15 + + +openssl/evp.h + + + + + +Node3->Node15 + + + + + + + + +Node16 + + +openssl/hmac.h + + + + + +Node3->Node16 + + + + + + + + +Node17 + + +openssl/pem.h + + + + + +Node3->Node17 + + + + + + + + +Node18 + + +openssl/rsa.h + + + + + +Node3->Node18 + + + + + + + + +Node19 + + +openssl/ssl.h + + + + + +Node3->Node19 + + + + + + + + +Node20 + + +chrono + + + + + +Node3->Node20 + + + + + + + + +Node21 + + +climits + + + + + +Node3->Node21 + + + + + + + + +Node22 + + +cmath + + + + + +Node3->Node22 + + + + + + + + +Node23 + + +cstring + + + + + +Node3->Node23 + + + + + + + + +Node24 + + +functional + + + + + +Node3->Node24 + + + + + + + + +Node25 + + +iterator + + + + + +Node3->Node25 + + + + + + + + +Node26 + + +locale + + + + + +Node3->Node26 + + + + + + + + +Node27 + + +memory + + + + + +Node3->Node27 + + + + + + + + +Node28 + + +set + + + + + +Node3->Node28 + + + + + + + + +Node29 + + +system_error + + + + + +Node3->Node29 + + + + + + + + +Node30 + + +type_traits + + + + + +Node3->Node30 + + + + + + + + +Node31 + + +unordered_map + + + + + +Node3->Node31 + + + + + + + + +Node32 + + +utility + + + + + +Node3->Node32 + + + + + + + + +Node33 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node3->Node33 + + + + + + + + +Node5->Node6 + + + + + + + + +Node7 + + +array + + + + + +Node5->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node5->Node8 + + + + + + + + +Node9 + + +stdexcept + + + + + +Node5->Node9 + + + + + + + + +Node10 + + +string + + + + + +Node5->Node10 + + + + + + + + +Node5->Node11 + + + + + + + + +Node34 + + +traits.h + + + + + +Node33->Node34 + + + + + + + + +Node34->Node3 + + + + + + + + +Node34->Node4 + + + + + + + + diff --git a/files.html b/files.html new file mode 100644 index 00000000..10c7ebc5 --- /dev/null +++ b/files.html @@ -0,0 +1,142 @@ + + + + + + + +JWT-CPP: File List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  example
 es256k.cpp
 jwks-verify.cpp
 partial-claim-verifier.cpp
 print-claims.cpp
 private-claims.cpp
 rsa-create.cpp
 rsa-verify.cpp
  include
  jwt-cpp
  traits
  boost-json
 defaults.h
 traits.h
  danielaparker-jsoncons
 defaults.h
 traits.h
  kazuho-picojson
 defaults.h
 traits.h
  nlohmann-json
 defaults.h
 traits.h
  open-source-parsers-jsoncpp
 defaults.h
 traits.h
 base.h
 jwt.h
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 00000000..aa6cfdc0 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,5 @@ +var files_dup = +[ + [ "example", "dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html", "dir_cfafba98a580ce4b62f8a6fa96d7cbb0" ], + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] +]; \ No newline at end of file diff --git a/folderclosed.svg b/folderclosed.svg new file mode 100644 index 00000000..b04bed2e --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 00000000..52f0166a --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 00000000..f6896dd2 --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 00000000..2d1f06e7 --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html new file mode 100644 index 00000000..4d353feb --- /dev/null +++ b/functions.html @@ -0,0 +1,318 @@ + + + + + + + +JWT-CPP: Class Members + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 00000000..af354a9f --- /dev/null +++ b/functions_func.html @@ -0,0 +1,299 @@ + + + + + + + +JWT-CPP: Class Members - Functions + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 00000000..10b7867b --- /dev/null +++ b/functions_type.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Class Members - Typedefs + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented typedefs with links to the class documentation for each member:
+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 00000000..daba4618 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,120 @@ + + + + + + + +JWT-CPP: Class Members - Variables + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented variables with links to the class documentation for each member:
+
+
+ + + + diff --git a/graph_legend.html b/graph_legend.html new file mode 100644 index 00000000..7c7f75e1 --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,170 @@ + + + + + + + +JWT-CPP: Graph Legend + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+ +

The arrows have the following meaning:

+ +
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 00000000..da515da9 --- /dev/null +++ b/graph_legend.md5 @@ -0,0 +1 @@ +f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/graph_legend.svg b/graph_legend.svg new file mode 100644 index 00000000..f90d1bfb --- /dev/null +++ b/graph_legend.svg @@ -0,0 +1,167 @@ + + + + + + +Graph Legend + + +Node9 + + +Inherited + + + + + +Node10 + + +PublicBase + + + + + +Node10->Node9 + + + + + + + + +Node11 + + +Truncated + + + + + +Node11->Node10 + + + + + + + + +Node13 + + +ProtectedBase + + + + + +Node13->Node9 + + + + + + + + +Node14 + + +PrivateBase + + + + + +Node14->Node9 + + + + + + + + +Node15 + + +Undocumented + + + + + +Node15->Node9 + + + + + + + + +Node16 + + +Templ< int > + + + + + +Node16->Node9 + + + + + + + + +Node17 + + +Templ< T > + + + + + +Node17->Node16 + + + + + +< int > + + + +Node18 + + +Used + + + + + +Node18->Node9 + + + + + +m_usedClass + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 00000000..c0848f51 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,179 @@ + + + + + + + +JWT-CPP: Class Hierarchy + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cboost::json::array
 Cjwt::traits::danielaparker_jsoncons::array_type
 Cjwt::alphabet::base64Valid list of character when working with Base64
 Cjwt::alphabet::base64urlValid list of character when working with Base64URL
 Cjwt::alphabet::helper::base64url_percent_encodingA General purpose base64url alphabet respecting the URI Case Normalization
 Cjwt::basic_claim< json_traits >Class to store a generic JSON value as claim
 Cjwt::traits::boost_jsonBasic_claim's JSON trait implementation for Boost.JSON
 Cjwt::builder< Clock, json_traits >
 Cjwt::traits::danielaparker_jsonconsBasic_claim's JSON trait implementation for jsoncons
 Cjwt::verify_ops::date_after_claim< json_traits, in_header >
 Cjwt::verify_ops::date_before_claim< json_traits, in_header >
 Cjwt::default_clock
 Cjwt::algorithm::ecdsaBase class for ECDSA family of algorithms
 Cjwt::algorithm::es256
 Cjwt::algorithm::es256k
 Cjwt::algorithm::es384
 Cjwt::algorithm::es512
 Cjwt::algorithm::eddsaBase class for EdDSA family of algorithms
 Cjwt::algorithm::ed25519
 Cjwt::algorithm::ed448
 Cjwt::verify_ops::equals_claim< json_traits, in_header >
 Cjwt::helper::evp_pkey_handleHandle class for EVP_PKEY structures
 Cstd::exceptionSTL class
 Cstd::logic_errorSTL class
 Cstd::out_of_rangeSTL class
 Cjwt::error::claim_not_present_exception
 Cstd::runtime_errorSTL class
 Cjwt::error::invalid_json_exception
 Cjwt::header< json_traits >
 Cjwt::decoded_jwt< json_traits >
 Cjwt::algorithm::hmacshaBase class for HMAC family of algorithms
 Cjwt::algorithm::hs256
 Cjwt::algorithm::hs384
 Cjwt::algorithm::hs512
 Cjwt::verify_ops::insensitive_string_claim< json_traits, in_header >
 Cjwt::verify_ops::is_subset_claim< json_traits, in_header >
 Cjwt::jwk< json_traits >JSON Web Key
 Cjwt::jwks< json_traits >JWK Set
 Cjwt::traits::kazuho_picojsonBasic_claim's JSON trait implementation for picojson
 Cjwt::traits::nlohmann_jsonBasic_claim's JSON trait implementation for Modern C++ JSON
 Cjwt::algorithm::none"none" algorithm
 Cboost::json::object
 Cjwt::traits::danielaparker_jsoncons::object_type
 Cjwt::traits::open_source_parsers_jsoncppBasic_claim's JSON trait implementation for jsoncpp
 Cjwt::payload< json_traits >
 Cjwt::decoded_jwt< json_traits >
 Cjwt::algorithm::pssBase class for PSS-RSA family of algorithms
 Cjwt::algorithm::ps256
 Cjwt::algorithm::ps384
 Cjwt::algorithm::ps512
 Cjwt::algorithm::rsaBase class for RSA family of algorithms
 Cjwt::algorithm::rs256
 Cjwt::algorithm::rs384
 Cjwt::algorithm::rs512
 Cstd::system_errorSTL class
 Cjwt::error::ecdsa_exception
 Cjwt::error::rsa_exception
 Cjwt::error::signature_generation_exception
 Cjwt::error::signature_verification_exception
 Cjwt::error::token_verification_exception
 CJson::Value
 Cjwt::traits::open_source_parsers_jsoncpp::array_type
 Cjwt::traits::open_source_parsers_jsoncpp::object_type
 Cjwt::verifier< Clock, json_traits >
 Cjwt::verify_ops::verify_context< json_traits >
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 00000000..fe20a358 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,83 @@ +var hierarchy = +[ + [ "boost::json::array", null, [ + [ "jwt::traits::danielaparker_jsoncons::array_type", "classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type.html", null ] + ] ], + [ "jwt::alphabet::base64", "structjwt_1_1alphabet_1_1base64.html", null ], + [ "jwt::alphabet::base64url", "structjwt_1_1alphabet_1_1base64url.html", null ], + [ "jwt::alphabet::helper::base64url_percent_encoding", "structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html", null ], + [ "jwt::basic_claim< json_traits >", "classjwt_1_1basic__claim.html", null ], + [ "jwt::traits::boost_json", "structjwt_1_1traits_1_1boost__json.html", null ], + [ "jwt::builder< Clock, json_traits >", "classjwt_1_1builder.html", null ], + [ "jwt::traits::danielaparker_jsoncons", "structjwt_1_1traits_1_1danielaparker__jsoncons.html", null ], + [ "jwt::verify_ops::date_after_claim< json_traits, in_header >", "structjwt_1_1verify__ops_1_1date__after__claim.html", null ], + [ "jwt::verify_ops::date_before_claim< json_traits, in_header >", "structjwt_1_1verify__ops_1_1date__before__claim.html", null ], + [ "jwt::default_clock", "structjwt_1_1default__clock.html", null ], + [ "jwt::algorithm::ecdsa", "structjwt_1_1algorithm_1_1ecdsa.html", [ + [ "jwt::algorithm::es256", "structjwt_1_1algorithm_1_1es256.html", null ], + [ "jwt::algorithm::es256k", "structjwt_1_1algorithm_1_1es256k.html", null ], + [ "jwt::algorithm::es384", "structjwt_1_1algorithm_1_1es384.html", null ], + [ "jwt::algorithm::es512", "structjwt_1_1algorithm_1_1es512.html", null ] + ] ], + [ "jwt::algorithm::eddsa", "structjwt_1_1algorithm_1_1eddsa.html", [ + [ "jwt::algorithm::ed25519", "structjwt_1_1algorithm_1_1ed25519.html", null ], + [ "jwt::algorithm::ed448", "structjwt_1_1algorithm_1_1ed448.html", null ] + ] ], + [ "jwt::verify_ops::equals_claim< json_traits, in_header >", "structjwt_1_1verify__ops_1_1equals__claim.html", null ], + [ "jwt::helper::evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html", null ], + [ "std::exception", null, [ + [ "std::logic_error", null, [ + [ "std::out_of_range", null, [ + [ "jwt::error::claim_not_present_exception", "structjwt_1_1error_1_1claim__not__present__exception.html", null ] + ] ] + ] ], + [ "std::runtime_error", null, [ + [ "jwt::error::invalid_json_exception", "structjwt_1_1error_1_1invalid__json__exception.html", null ] + ] ] + ] ], + [ "jwt::header< json_traits >", "classjwt_1_1header.html", [ + [ "jwt::decoded_jwt< json_traits >", "classjwt_1_1decoded__jwt.html", null ] + ] ], + [ "jwt::algorithm::hmacsha", "structjwt_1_1algorithm_1_1hmacsha.html", [ + [ "jwt::algorithm::hs256", "structjwt_1_1algorithm_1_1hs256.html", null ], + [ "jwt::algorithm::hs384", "structjwt_1_1algorithm_1_1hs384.html", null ], + [ "jwt::algorithm::hs512", "structjwt_1_1algorithm_1_1hs512.html", null ] + ] ], + [ "jwt::verify_ops::insensitive_string_claim< json_traits, in_header >", "structjwt_1_1verify__ops_1_1insensitive__string__claim.html", null ], + [ "jwt::verify_ops::is_subset_claim< json_traits, in_header >", "structjwt_1_1verify__ops_1_1is__subset__claim.html", null ], + [ "jwt::jwk< json_traits >", "classjwt_1_1jwk.html", null ], + [ "jwt::jwks< json_traits >", "classjwt_1_1jwks.html", null ], + [ "jwt::traits::kazuho_picojson", "structjwt_1_1traits_1_1kazuho__picojson.html", null ], + [ "jwt::traits::nlohmann_json", "structjwt_1_1traits_1_1nlohmann__json.html", null ], + [ "jwt::algorithm::none", "structjwt_1_1algorithm_1_1none.html", null ], + [ "boost::json::object", null, [ + [ "jwt::traits::danielaparker_jsoncons::object_type", "structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html", null ] + ] ], + [ "jwt::traits::open_source_parsers_jsoncpp", "structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html", null ], + [ "jwt::payload< json_traits >", "classjwt_1_1payload.html", [ + [ "jwt::decoded_jwt< json_traits >", "classjwt_1_1decoded__jwt.html", null ] + ] ], + [ "jwt::algorithm::pss", "structjwt_1_1algorithm_1_1pss.html", [ + [ "jwt::algorithm::ps256", "structjwt_1_1algorithm_1_1ps256.html", null ], + [ "jwt::algorithm::ps384", "structjwt_1_1algorithm_1_1ps384.html", null ], + [ "jwt::algorithm::ps512", "structjwt_1_1algorithm_1_1ps512.html", null ] + ] ], + [ "jwt::algorithm::rsa", "structjwt_1_1algorithm_1_1rsa.html", [ + [ "jwt::algorithm::rs256", "structjwt_1_1algorithm_1_1rs256.html", null ], + [ "jwt::algorithm::rs384", "structjwt_1_1algorithm_1_1rs384.html", null ], + [ "jwt::algorithm::rs512", "structjwt_1_1algorithm_1_1rs512.html", null ] + ] ], + [ "std::system_error", null, [ + [ "jwt::error::ecdsa_exception", "structjwt_1_1error_1_1ecdsa__exception.html", null ], + [ "jwt::error::rsa_exception", "structjwt_1_1error_1_1rsa__exception.html", null ], + [ "jwt::error::signature_generation_exception", "structjwt_1_1error_1_1signature__generation__exception.html", null ], + [ "jwt::error::signature_verification_exception", "structjwt_1_1error_1_1signature__verification__exception.html", null ], + [ "jwt::error::token_verification_exception", "structjwt_1_1error_1_1token__verification__exception.html", null ] + ] ], + [ "Json::Value", null, [ + [ "jwt::traits::open_source_parsers_jsoncpp::array_type", "classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html", null ], + [ "jwt::traits::open_source_parsers_jsoncpp::object_type", "classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html", null ] + ] ], + [ "jwt::verifier< Clock, json_traits >", "classjwt_1_1verifier.html", null ], + [ "jwt::verify_ops::verify_context< json_traits >", "structjwt_1_1verify__ops_1_1verify__context.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..7f84558a --- /dev/null +++ b/index.html @@ -0,0 +1,205 @@ + + + + + + + +JWT-CPP: JWT-CPP + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JWT-CPP
+
+
+

logo

+

License Badge Codacy Badge Linux Badge MacOS Badge Windows Badge Coverage Status

+

Documentation Badge

+

Stars Badge GitHub release (latest SemVer including pre-releases) ConanCenter package Vcpkg package

+

Overview

+

A header only library for creating and validating JSON Web Tokens in C++11. For a great introduction, read this.

+

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.

+

Signature algorithms

+

jwt-cpp comprehensively supports all algorithms specified in the standard. Its modular design facilitates the seamless inclusion of additional algorithms without encountering any complications. Should you wish to contribute new algorithms, feel free to initiate a pull request or open an issue.

+

For completeness, here is a list of all supported algorithms:

+ + + + + + + + + + + +
HMSC RSA ECDSA PSS EdDSA
HS256 RS256 ES256 PS256 Ed25519
HS384 RS384 ES384 PS384 Ed448
HS512 RS512 ES512 PS512
ES256K
+

Getting Started

+

Installation instructions can be found here.

+

A simple example is decoding a token and printing all of its claims let's (try it out):

+
#include <jwt-cpp/jwt.h>
+
#include <iostream>
+
+
int main() {
+
std::string token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCIsInNhbXBsZSI6InRlc3QifQ.lQm3N2bVlqt2-1L-FsOjtR6uE-L4E9zJutMWKIe1v1M";
+
auto decoded = jwt::decode(token);
+
+
for(auto& e : decoded.get_payload_json())
+
std::cout << e.first << " = " << e.second << std::endl;
+
}
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:4170
+

You can build and run this example locally after cloning the repository. Running some commands, we can see the contents of the JWT payload

+
cmake .
+
cmake --build . --target print-claims
+
./print-claims
+
# iss = "auth0"
+
# sample = "test"
+

You'll very quickly notice JWT are not encrypted but rather cryptographically signed to provide non-repudiation.

+

In order to verify a token you first build a verifier and use it to verify a decoded token.

+
auto verifier = jwt::verify()
+
.with_issuer("auth0")
+
.with_claim("sample", jwt::claim(std::string("test")))
+
.allow_algorithm(jwt::algorithm::hs256{"secret"});
+
+
verifier.verify(decoded_token);
+
a class to store a generic JSON value as claim
Definition jwt.h:2549
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
Definition jwt.h:2027
+

The verifier is stateless so you can reuse it for different tokens.

+

Creating the token above (and signing it) is equally as easy.

+
auto token = jwt::create()
+
.set_type("JWS")
+
.set_issuer("auth0")
+
.set_payload_claim("sample", jwt::claim(std::string("test")))
+
.sign(jwt::algorithm::hs256{"secret"});
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+

If you are looking to issue or verify more unique tokens, checkout out the examples working with RSA public and private keys, elliptic curve tokens, and much more!

+

Configuration Options

+

Building on the goal of providing flexibility.

+

SSL Compatibility

+

jwt-cpp supports OpenSSL, LibreSSL, and wolfSSL. For a listed of tested versions, check this page for more details.

+

JSON Implementation

+

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 for values, objects, arrays, strings, numbers, integers, and booleans, along with methods to seamlessly translate between them.

+

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 for detailed guidance.

+
Providing your own JSON Traits
+
jwt::basic_claim<my_favorite_json_library_traits> claim(json::object({{"json", true},{"example", 0}}));
+

To learn how to writes a trait's implementation, checkout the these instructions

+

Base64 Options

+

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.

+

Contributing

+

If you have suggestions for improvement or if you've identified a bug, please don't hesitate to open an issue 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.

+

Dependencies

+

In order to use jwt-cpp you need the following tools.

+
    +
  • libcrypto (openssl or compatible)
  • +
  • libssl-dev (for the header files)
  • +
  • a compiler supporting at least c++11
  • +
  • basic stl support
  • +
+

In order to build the test cases you also need

+
    +
  • gtest
  • +
  • pthread
  • +
+

Troubleshooting

+

See the FAQs for tips.

+

Conference Coverage

+

CppCon

+
+ +
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 00000000..1dffb65b --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/jwks-verify_8cpp.html b/jwks-verify_8cpp.html new file mode 100644 index 00000000..eff8beab --- /dev/null +++ b/jwks-verify_8cpp.html @@ -0,0 +1,130 @@ + + + + + + + +JWT-CPP: example/jwks-verify.cpp File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwks-verify.cpp File Reference
+
+
+
#include <iostream>
+#include <jwt-cpp/jwt.h>
+#include <openssl/rand.h>
+
+Include dependency graph for jwks-verify.cpp:
+
+
+
+
+ + + +

+Functions

+int main ()
 
+

Detailed Description

+

Novel example using a JWT's "key ID" to match with a JWK Set and using the corresponding x5c from the JWK to verify the token

+
+
+ + + + diff --git a/jwks-verify_8cpp__incl.map b/jwks-verify_8cpp__incl.map new file mode 100644 index 00000000..f4341774 --- /dev/null +++ b/jwks-verify_8cpp__incl.map @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jwks-verify_8cpp__incl.md5 b/jwks-verify_8cpp__incl.md5 new file mode 100644 index 00000000..ecc2e968 --- /dev/null +++ b/jwks-verify_8cpp__incl.md5 @@ -0,0 +1 @@ +f7c36fc17bad21f922e8a63f3a190180 \ No newline at end of file diff --git a/jwks-verify_8cpp__incl.svg b/jwks-verify_8cpp__incl.svg new file mode 100644 index 00000000..b0ee44aa --- /dev/null +++ b/jwks-verify_8cpp__incl.svg @@ -0,0 +1,670 @@ + + + + + + +example/jwks-verify.cpp + + +Node1 + + +example/jwks-verify.cpp + + + + + +Node2 + + +iostream + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt-cpp/jwt.h + + + + + +Node1->Node3 + + + + + + + + +Node35 + + +openssl/rand.h + + + + + +Node1->Node35 + + + + + + + + +Node4 + + +picojson/picojson.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +base.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +algorithm + + + + + +Node3->Node6 + + + + + + + + +Node11 + + +vector + + + + + +Node3->Node11 + + + + + + + + +Node12 + + +openssl/ec.h + + + + + +Node3->Node12 + + + + + + + + +Node13 + + +openssl/ecdsa.h + + + + + +Node3->Node13 + + + + + + + + +Node14 + + +openssl/err.h + + + + + +Node3->Node14 + + + + + + + + +Node15 + + +openssl/evp.h + + + + + +Node3->Node15 + + + + + + + + +Node16 + + +openssl/hmac.h + + + + + +Node3->Node16 + + + + + + + + +Node17 + + +openssl/pem.h + + + + + +Node3->Node17 + + + + + + + + +Node18 + + +openssl/rsa.h + + + + + +Node3->Node18 + + + + + + + + +Node19 + + +openssl/ssl.h + + + + + +Node3->Node19 + + + + + + + + +Node20 + + +chrono + + + + + +Node3->Node20 + + + + + + + + +Node21 + + +climits + + + + + +Node3->Node21 + + + + + + + + +Node22 + + +cmath + + + + + +Node3->Node22 + + + + + + + + +Node23 + + +cstring + + + + + +Node3->Node23 + + + + + + + + +Node24 + + +functional + + + + + +Node3->Node24 + + + + + + + + +Node25 + + +iterator + + + + + +Node3->Node25 + + + + + + + + +Node26 + + +locale + + + + + +Node3->Node26 + + + + + + + + +Node27 + + +memory + + + + + +Node3->Node27 + + + + + + + + +Node28 + + +set + + + + + +Node3->Node28 + + + + + + + + +Node29 + + +system_error + + + + + +Node3->Node29 + + + + + + + + +Node30 + + +type_traits + + + + + +Node3->Node30 + + + + + + + + +Node31 + + +unordered_map + + + + + +Node3->Node31 + + + + + + + + +Node32 + + +utility + + + + + +Node3->Node32 + + + + + + + + +Node33 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node3->Node33 + + + + + + + + +Node5->Node6 + + + + + + + + +Node7 + + +array + + + + + +Node5->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node5->Node8 + + + + + + + + +Node9 + + +stdexcept + + + + + +Node5->Node9 + + + + + + + + +Node10 + + +string + + + + + +Node5->Node10 + + + + + + + + +Node5->Node11 + + + + + + + + +Node34 + + +traits.h + + + + + +Node33->Node34 + + + + + + + + +Node34->Node3 + + + + + + + + +Node34->Node4 + + + + + + + + diff --git a/jwt_8h_source.html b/jwt_8h_source.html new file mode 100644 index 00000000..e106845b --- /dev/null +++ b/jwt_8h_source.html @@ -0,0 +1,3360 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/jwt.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt.h
+
+
+
1#ifndef JWT_CPP_JWT_H
+
2#define JWT_CPP_JWT_H
+
3
+
4#ifndef JWT_DISABLE_PICOJSON
+
5#ifndef PICOJSON_USE_INT64
+
6#define PICOJSON_USE_INT64
+
7#endif
+
8#include "picojson/picojson.h"
+
9#endif
+
10
+
11#ifndef JWT_DISABLE_BASE64
+
12#include "base.h"
+
13#endif
+
14
+
15#include <openssl/ec.h>
+
16#include <openssl/ecdsa.h>
+
17#include <openssl/err.h>
+
18#include <openssl/evp.h>
+
19#include <openssl/hmac.h>
+
20#include <openssl/pem.h>
+
21#include <openssl/rsa.h>
+
22#include <openssl/ssl.h>
+
23
+
24#include <algorithm>
+
25#include <chrono>
+
26#include <climits>
+
27#include <cmath>
+
28#include <cstring>
+
29#include <functional>
+
30#include <iterator>
+
31#include <locale>
+
32#include <memory>
+
33#include <set>
+
34#include <system_error>
+
35#include <type_traits>
+
36#include <unordered_map>
+
37#include <utility>
+
38#include <vector>
+
39
+
40#if __cplusplus >= 201402L
+
41#ifdef __has_include
+
42#if __has_include(<experimental/type_traits>)
+
43#include <experimental/type_traits>
+
44#endif
+
45#endif
+
46#endif
+
47
+
48#if OPENSSL_VERSION_NUMBER >= 0x30000000L // 3.0.0
+
49#define JWT_OPENSSL_3_0
+
50#include <openssl/param_build.h>
+
51#elif OPENSSL_VERSION_NUMBER >= 0x10101000L // 1.1.1
+
52#define JWT_OPENSSL_1_1_1
+
53#elif OPENSSL_VERSION_NUMBER >= 0x10100000L // 1.1.0
+
54#define JWT_OPENSSL_1_1_0
+
55#elif OPENSSL_VERSION_NUMBER >= 0x10000000L // 1.0.0
+
56#define JWT_OPENSSL_1_0_0
+
57#endif
+
58
+
59#if defined(LIBRESSL_VERSION_NUMBER)
+
60#if LIBRESSL_VERSION_NUMBER >= 0x3050300fL
+
61#define JWT_OPENSSL_1_1_0
+
62#else
+
63#define JWT_OPENSSL_1_0_0
+
64#endif
+
65#endif
+
66
+
67#if defined(LIBWOLFSSL_VERSION_HEX)
+
68#define JWT_OPENSSL_1_1_1
+
69#endif
+
70
+
71#ifndef JWT_CLAIM_EXPLICIT
+
72#define JWT_CLAIM_EXPLICIT explicit
+
73#endif
+
74
+
82namespace jwt {
+
86 using date = std::chrono::system_clock::time_point;
+
87
+
+
91 namespace error {
+
+
92 struct signature_verification_exception : public std::system_error {
+
93 using system_error::system_error;
+
94 };
+
+
+
95 struct signature_generation_exception : public std::system_error {
+
96 using system_error::system_error;
+
97 };
+
+
+
98 struct rsa_exception : public std::system_error {
+
99 using system_error::system_error;
+
100 };
+
+
+
101 struct ecdsa_exception : public std::system_error {
+
102 using system_error::system_error;
+
103 };
+
+
+
104 struct token_verification_exception : public std::system_error {
+
105 using system_error::system_error;
+
106 };
+
+
+
110 enum class rsa_error {
+
111 ok = 0,
+
112 cert_load_failed = 10,
+
113 get_key_failed,
+
114 write_key_failed,
+
115 write_cert_failed,
+
116 convert_to_pem_failed,
+
117 load_key_bio_write,
+
118 load_key_bio_read,
+
119 create_mem_bio_failed,
+
120 no_key_provided,
+
121 set_rsa_failed,
+
122 create_context_failed
+
123 };
+
+
+
127 inline std::error_category& rsa_error_category() {
+
128 class rsa_error_cat : public std::error_category {
+
129 public:
+
130 const char* name() const noexcept override { return "rsa_error"; };
+
131 std::string message(int ev) const override {
+
132 switch (static_cast<rsa_error>(ev)) {
+
133 case rsa_error::ok: return "no error";
+
134 case rsa_error::cert_load_failed: return "error loading cert into memory";
+
135 case rsa_error::get_key_failed: return "error getting key from certificate";
+
136 case rsa_error::write_key_failed: return "error writing key data in PEM format";
+
137 case rsa_error::write_cert_failed: return "error writing cert data in PEM format";
+
138 case rsa_error::convert_to_pem_failed: return "failed to convert key to pem";
+
139 case rsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
140 case rsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
141 case rsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
142 case rsa_error::no_key_provided: return "at least one of public or private key need to be present";
+
143 case rsa_error::set_rsa_failed: return "set modulus and exponent to RSA failed";
+
144 case rsa_error::create_context_failed: return "failed to create context";
+
145 default: return "unknown RSA error";
+
146 }
+
147 }
+
148 };
+
149 static rsa_error_cat cat;
+
150 return cat;
+
151 }
+
+
155 inline std::error_code make_error_code(rsa_error e) { return {static_cast<int>(e), rsa_error_category()}; }
+
+
159 enum class ecdsa_error {
+
160 ok = 0,
+
161 load_key_bio_write = 10,
+
162 load_key_bio_read,
+
163 create_mem_bio_failed,
+
164 no_key_provided,
+
165 invalid_key_size,
+
166 invalid_key,
+
167 create_context_failed,
+
168 cert_load_failed,
+
169 get_key_failed,
+
170 write_key_failed,
+
171 write_cert_failed,
+
172 convert_to_pem_failed,
+
173 unknown_curve,
+
174 set_ecdsa_failed
+
175 };
+
+
+
179 inline std::error_category& ecdsa_error_category() {
+
180 class ecdsa_error_cat : public std::error_category {
+
181 public:
+
182 const char* name() const noexcept override { return "ecdsa_error"; };
+
183 std::string message(int ev) const override {
+
184 switch (static_cast<ecdsa_error>(ev)) {
+
185 case ecdsa_error::ok: return "no error";
+
186 case ecdsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
187 case ecdsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
188 case ecdsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
189 case ecdsa_error::no_key_provided:
+
190 return "at least one of public or private key need to be present";
+
191 case ecdsa_error::invalid_key_size: return "invalid key size";
+
192 case ecdsa_error::invalid_key: return "invalid key";
+
193 case ecdsa_error::create_context_failed: return "failed to create context";
+
194 case ecdsa_error::cert_load_failed: return "error loading cert into memory";
+
195 case ecdsa_error::get_key_failed: return "error getting key from certificate";
+
196 case ecdsa_error::write_key_failed: return "error writing key data in PEM format";
+
197 case ecdsa_error::write_cert_failed: return "error writing cert data in PEM format";
+
198 case ecdsa_error::convert_to_pem_failed: return "failed to convert key to pem";
+
199 case ecdsa_error::unknown_curve: return "unknown curve";
+
200 case ecdsa_error::set_ecdsa_failed: return "set parameters to ECDSA failed";
+
201 default: return "unknown ECDSA error";
+
202 }
+
203 }
+
204 };
+
205 static ecdsa_error_cat cat;
+
206 return cat;
+
207 }
+
+
211 inline std::error_code make_error_code(ecdsa_error e) { return {static_cast<int>(e), ecdsa_error_category()}; }
+
212
+
+ +
217 ok = 0,
+
218 invalid_signature = 10,
+
219 create_context_failed,
+
220 verifyinit_failed,
+
221 verifyupdate_failed,
+
222 verifyfinal_failed,
+
223 get_key_failed,
+
224 set_rsa_pss_saltlen_failed,
+
225 signature_encoding_failed
+
226 };
+
+
+
230 inline std::error_category& signature_verification_error_category() {
+
231 class verification_error_cat : public std::error_category {
+
232 public:
+
233 const char* name() const noexcept override { return "signature_verification_error"; };
+
234 std::string message(int ev) const override {
+
235 switch (static_cast<signature_verification_error>(ev)) {
+
236 case signature_verification_error::ok: return "no error";
+
237 case signature_verification_error::invalid_signature: return "invalid signature";
+
238 case signature_verification_error::create_context_failed:
+
239 return "failed to verify signature: could not create context";
+
240 case signature_verification_error::verifyinit_failed:
+
241 return "failed to verify signature: VerifyInit failed";
+
242 case signature_verification_error::verifyupdate_failed:
+
243 return "failed to verify signature: VerifyUpdate failed";
+
244 case signature_verification_error::verifyfinal_failed:
+
245 return "failed to verify signature: VerifyFinal failed";
+
246 case signature_verification_error::get_key_failed:
+
247 return "failed to verify signature: Could not get key";
+
248 case signature_verification_error::set_rsa_pss_saltlen_failed:
+
249 return "failed to verify signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
250 case signature_verification_error::signature_encoding_failed:
+
251 return "failed to verify signature: i2d_ECDSA_SIG failed";
+
252 default: return "unknown signature verification error";
+
253 }
+
254 }
+
255 };
+
256 static verification_error_cat cat;
+
257 return cat;
+
258 }
+
+
+ +
263 return {static_cast<int>(e), signature_verification_error_category()};
+
264 }
+
+
265
+
+ +
270 ok = 0,
+
271 hmac_failed = 10,
+
272 create_context_failed,
+
273 signinit_failed,
+
274 signupdate_failed,
+
275 signfinal_failed,
+
276 ecdsa_do_sign_failed,
+
277 digestinit_failed,
+
278 digestupdate_failed,
+
279 digestfinal_failed,
+
280 rsa_padding_failed,
+
281 rsa_private_encrypt_failed,
+
282 get_key_failed,
+
283 set_rsa_pss_saltlen_failed,
+
284 signature_decoding_failed
+
285 };
+
+
+
289 inline std::error_category& signature_generation_error_category() {
+
290 class signature_generation_error_cat : public std::error_category {
+
291 public:
+
292 const char* name() const noexcept override { return "signature_generation_error"; };
+
293 std::string message(int ev) const override {
+
294 switch (static_cast<signature_generation_error>(ev)) {
+
295 case signature_generation_error::ok: return "no error";
+
296 case signature_generation_error::hmac_failed: return "hmac failed";
+
297 case signature_generation_error::create_context_failed:
+
298 return "failed to create signature: could not create context";
+
299 case signature_generation_error::signinit_failed:
+
300 return "failed to create signature: SignInit failed";
+
301 case signature_generation_error::signupdate_failed:
+
302 return "failed to create signature: SignUpdate failed";
+
303 case signature_generation_error::signfinal_failed:
+
304 return "failed to create signature: SignFinal failed";
+
305 case signature_generation_error::ecdsa_do_sign_failed: return "failed to generate ecdsa signature";
+
306 case signature_generation_error::digestinit_failed:
+
307 return "failed to create signature: DigestInit failed";
+
308 case signature_generation_error::digestupdate_failed:
+
309 return "failed to create signature: DigestUpdate failed";
+
310 case signature_generation_error::digestfinal_failed:
+
311 return "failed to create signature: DigestFinal failed";
+
312 case signature_generation_error::rsa_padding_failed:
+
313 return "failed to create signature: EVP_PKEY_CTX_set_rsa_padding failed";
+
314 case signature_generation_error::rsa_private_encrypt_failed:
+
315 return "failed to create signature: RSA_private_encrypt failed";
+
316 case signature_generation_error::get_key_failed:
+
317 return "failed to generate signature: Could not get key";
+
318 case signature_generation_error::set_rsa_pss_saltlen_failed:
+
319 return "failed to create signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
320 case signature_generation_error::signature_decoding_failed:
+
321 return "failed to create signature: d2i_ECDSA_SIG failed";
+
322 default: return "unknown signature generation error";
+
323 }
+
324 }
+
325 };
+
326 static signature_generation_error_cat cat = {};
+
327 return cat;
+
328 }
+
+
+
332 inline std::error_code make_error_code(signature_generation_error e) {
+
333 return {static_cast<int>(e), signature_generation_error_category()};
+
334 }
+
+
335
+
+ +
340 ok = 0,
+
341 wrong_algorithm = 10,
+
342 missing_claim,
+
343 claim_type_missmatch,
+
344 claim_value_missmatch,
+
345 token_expired,
+
346 audience_missmatch
+
347 };
+
+
+
351 inline std::error_category& token_verification_error_category() {
+
352 class token_verification_error_cat : public std::error_category {
+
353 public:
+
354 const char* name() const noexcept override { return "token_verification_error"; };
+
355 std::string message(int ev) const override {
+
356 switch (static_cast<token_verification_error>(ev)) {
+
357 case token_verification_error::ok: return "no error";
+
358 case token_verification_error::wrong_algorithm: return "wrong algorithm";
+
359 case token_verification_error::missing_claim: return "decoded JWT is missing required claim(s)";
+
360 case token_verification_error::claim_type_missmatch:
+
361 return "claim type does not match expected type";
+
362 case token_verification_error::claim_value_missmatch:
+
363 return "claim value does not match expected value";
+
364 case token_verification_error::token_expired: return "token expired";
+
365 case token_verification_error::audience_missmatch:
+
366 return "token doesn't contain the required audience";
+
367 default: return "unknown token verification error";
+
368 }
+
369 }
+
370 };
+
371 static token_verification_error_cat cat = {};
+
372 return cat;
+
373 }
+
+
+
377 inline std::error_code make_error_code(token_verification_error e) {
+
378 return {static_cast<int>(e), token_verification_error_category()};
+
379 }
+
+
+
383 inline void throw_if_error(std::error_code ec) {
+
384 if (ec) {
+
385 if (ec.category() == rsa_error_category()) throw rsa_exception(ec);
+
386 if (ec.category() == ecdsa_error_category()) throw ecdsa_exception(ec);
+
387 if (ec.category() == signature_verification_error_category())
+ + +
390 if (ec.category() == token_verification_error_category()) throw token_verification_exception(ec);
+
391 }
+
392 }
+
+
393 } // namespace error
+
+
394} // namespace jwt
+
395
+
396namespace std {
+
397 template<>
+
398 struct is_error_code_enum<jwt::error::rsa_error> : true_type {};
+
399 template<>
+
400 struct is_error_code_enum<jwt::error::ecdsa_error> : true_type {};
+
401 template<>
+
402 struct is_error_code_enum<jwt::error::signature_verification_error> : true_type {};
+
403 template<>
+
404 struct is_error_code_enum<jwt::error::signature_generation_error> : true_type {};
+
405 template<>
+
406 struct is_error_code_enum<jwt::error::token_verification_error> : true_type {};
+
407} // namespace std
+
408
+
409namespace jwt {
+
+
417 namespace helper {
+
+ +
426 public:
+
430 constexpr evp_pkey_handle() noexcept = default;
+
431#ifdef JWT_OPENSSL_1_0_0
+
436 explicit evp_pkey_handle(EVP_PKEY* key) { m_key = std::shared_ptr<EVP_PKEY>(key, EVP_PKEY_free); }
+
437
+
438 EVP_PKEY* get() const noexcept { return m_key.get(); }
+
439 bool operator!() const noexcept { return m_key == nullptr; }
+
440 explicit operator bool() const noexcept { return m_key != nullptr; }
+
441
+
442 private:
+
443 std::shared_ptr<EVP_PKEY> m_key{nullptr};
+
444#else
+
449 explicit constexpr evp_pkey_handle(EVP_PKEY* key) noexcept : m_key{key} {}
+
450 evp_pkey_handle(const evp_pkey_handle& other) : m_key{other.m_key} {
+
451 if (m_key != nullptr && EVP_PKEY_up_ref(m_key) != 1) throw std::runtime_error("EVP_PKEY_up_ref failed");
+
452 }
+
453// C++11 requires the body of a constexpr constructor to be empty
+
454#if __cplusplus >= 201402L
+
455 constexpr
+
456#endif
+
457 evp_pkey_handle(evp_pkey_handle&& other) noexcept
+
458 : m_key{other.m_key} {
+
459 other.m_key = nullptr;
+
460 }
+
461 evp_pkey_handle& operator=(const evp_pkey_handle& other) {
+
462 if (&other == this) return *this;
+
463 decrement_ref_count(m_key);
+
464 m_key = other.m_key;
+
465 increment_ref_count(m_key);
+
466 return *this;
+
467 }
+
468 evp_pkey_handle& operator=(evp_pkey_handle&& other) noexcept {
+
469 if (&other == this) return *this;
+
470 decrement_ref_count(m_key);
+
471 m_key = other.m_key;
+
472 other.m_key = nullptr;
+
473 return *this;
+
474 }
+
475 evp_pkey_handle& operator=(EVP_PKEY* key) {
+
476 decrement_ref_count(m_key);
+
477 m_key = key;
+
478 increment_ref_count(m_key);
+
479 return *this;
+
480 }
+
481 ~evp_pkey_handle() noexcept { decrement_ref_count(m_key); }
+
482
+
483 EVP_PKEY* get() const noexcept { return m_key; }
+
484 bool operator!() const noexcept { return m_key == nullptr; }
+
485 explicit operator bool() const noexcept { return m_key != nullptr; }
+
486
+
487 private:
+
488 EVP_PKEY* m_key{nullptr};
+
489
+
490 static void increment_ref_count(EVP_PKEY* key) {
+
491 if (key != nullptr && EVP_PKEY_up_ref(key) != 1) throw std::runtime_error("EVP_PKEY_up_ref failed");
+
492 }
+
493 static void decrement_ref_count(EVP_PKEY* key) noexcept {
+
494 if (key != nullptr) EVP_PKEY_free(key);
+
495 }
+
496#endif
+
497 };
+
+
498
+
499 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio() {
+
500 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(BIO_new(BIO_s_mem()), BIO_free_all);
+
501 }
+
502
+
503 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio(const std::string& data) {
+
504 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(
+
505#if OPENSSL_VERSION_NUMBER <= 0x10100003L
+
506 BIO_new_mem_buf(const_cast<char*>(data.data()), static_cast<int>(data.size())), BIO_free_all
+
507#else
+
508 BIO_new_mem_buf(data.data(), static_cast<int>(data.size())), BIO_free_all
+
509#endif
+
510 );
+
511 }
+
512
+
513 template<typename error_category = error::rsa_error>
+
514 std::string write_bio_to_string(std::unique_ptr<BIO, decltype(&BIO_free_all)>& bio_out, std::error_code& ec) {
+
515 char* ptr = nullptr;
+
516 auto len = BIO_get_mem_data(bio_out.get(), &ptr);
+
517 if (len <= 0 || ptr == nullptr) {
+
518 ec = error_category::convert_to_pem_failed;
+
519 return {};
+
520 }
+
521 return {ptr, static_cast<size_t>(len)};
+
522 }
+
523
+
524 inline std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)> make_evp_md_ctx() {
+
525 return
+
526#ifdef JWT_OPENSSL_1_0_0
+
527 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(), &EVP_MD_CTX_destroy);
+
528#else
+
529 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_free)>(EVP_MD_CTX_new(), &EVP_MD_CTX_free);
+
530#endif
+
531 }
+
532
+
541 template<typename error_category = error::rsa_error>
+
+
542 std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw, std::error_code& ec) {
+
543 ec.clear();
+
544 auto certbio = make_mem_buf_bio(certstr);
+
545 auto keybio = make_mem_buf_bio();
+
546 if (!certbio || !keybio) {
+
547 ec = error_category::create_mem_bio_failed;
+
548 return {};
+
549 }
+
550
+
551 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
552 PEM_read_bio_X509(certbio.get(), nullptr, nullptr, const_cast<char*>(pw.c_str())), X509_free);
+
553 if (!cert) {
+
554 ec = error_category::cert_load_failed;
+
555 return {};
+
556 }
+
557 std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)> key(X509_get_pubkey(cert.get()), EVP_PKEY_free);
+
558 if (!key) {
+
559 ec = error_category::get_key_failed;
+
560 return {};
+
561 }
+
562 if (PEM_write_bio_PUBKEY(keybio.get(), key.get()) == 0) {
+
563 ec = error_category::write_key_failed;
+
564 return {};
+
565 }
+
566
+
567 return write_bio_to_string<error_category>(keybio, ec);
+
568 }
+
+
569
+
578 template<typename error_category = error::rsa_error>
+
+
579 std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw = "") {
+
580 std::error_code ec;
+
581 auto res = extract_pubkey_from_cert<error_category>(certstr, pw, ec);
+ +
583 return res;
+
584 }
+
+
585
+
+
592 inline std::string convert_der_to_pem(const std::string& cert_der_str, std::error_code& ec) {
+
593 ec.clear();
+
594
+
595 auto c_str = reinterpret_cast<const unsigned char*>(cert_der_str.c_str());
+
596
+
597 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
598 d2i_X509(NULL, &c_str, static_cast<int>(cert_der_str.size())), X509_free);
+
599 auto certbio = make_mem_buf_bio();
+
600 if (!cert || !certbio) {
+
601 ec = error::rsa_error::create_mem_bio_failed;
+
602 return {};
+
603 }
+
604
+
605 if (!PEM_write_bio_X509(certbio.get(), cert.get())) {
+
606 ec = error::rsa_error::write_cert_failed;
+
607 return {};
+
608 }
+
609
+
610 return write_bio_to_string(certbio, ec);
+
611 }
+
+
612
+
627 template<typename Decode>
+
+
628 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode,
+
629 std::error_code& ec) {
+
630 ec.clear();
+
631 const auto decoded_str = decode(cert_base64_der_str);
+
632 return convert_der_to_pem(decoded_str, ec);
+
633 }
+
+
634
+
649 template<typename Decode>
+
+
650 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode) {
+
651 std::error_code ec;
+
652 auto res = convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+ +
654 return res;
+
655 }
+
+
656
+
+
663 inline std::string convert_der_to_pem(const std::string& cert_der_str) {
+
664 std::error_code ec;
+
665 auto res = convert_der_to_pem(cert_der_str, ec);
+ +
667 return res;
+
668 }
+
+
669
+
670#ifndef JWT_DISABLE_BASE64
+
+
680 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, std::error_code& ec) {
+
681 auto decode = [](const std::string& token) {
+
682 return base::decode<alphabet::base64>(base::pad<alphabet::base64>(token));
+
683 };
+
684 return convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+
685 }
+
+
686
+
+
696 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str) {
+
697 std::error_code ec;
+
698 auto res = convert_base64_der_to_pem(cert_base64_der_str, ec);
+ +
700 return res;
+
701 }
+
+
702#endif
+
713 template<typename error_category = error::rsa_error>
+
+
714 evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password,
+
715 std::error_code& ec) {
+
716 ec.clear();
+
717 auto pubkey_bio = make_mem_buf_bio();
+
718 if (!pubkey_bio) {
+
719 ec = error_category::create_mem_bio_failed;
+
720 return {};
+
721 }
+
722 if (key.substr(0, 27) == "-----BEGIN CERTIFICATE-----") {
+
723 auto epkey = helper::extract_pubkey_from_cert<error_category>(key, password, ec);
+
724 if (ec) return {};
+
725 const int len = static_cast<int>(epkey.size());
+
726 if (BIO_write(pubkey_bio.get(), epkey.data(), len) != len) {
+
727 ec = error_category::load_key_bio_write;
+
728 return {};
+
729 }
+
730 } else {
+
731 const int len = static_cast<int>(key.size());
+
732 if (BIO_write(pubkey_bio.get(), key.data(), len) != len) {
+
733 ec = error_category::load_key_bio_write;
+
734 return {};
+
735 }
+
736 }
+
737
+
738 evp_pkey_handle pkey(PEM_read_bio_PUBKEY(
+
739 pubkey_bio.get(), nullptr, nullptr,
+
740 (void*)password.data())); // NOLINT(google-readability-casting) requires `const_cast`
+
741 if (!pkey) ec = error_category::load_key_bio_read;
+
742 return pkey;
+
743 }
+
+
744
+
755 template<typename error_category = error::rsa_error>
+
+
756 inline evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password = "") {
+
757 std::error_code ec;
+
758 auto res = load_public_key_from_string<error_category>(key, password, ec);
+ +
760 return res;
+
761 }
+
+
762
+
771 template<typename error_category = error::rsa_error>
+
+
772 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password,
+
773 std::error_code& ec) {
+
774 ec.clear();
+
775 auto private_key_bio = make_mem_buf_bio();
+
776 if (!private_key_bio) {
+
777 ec = error_category::create_mem_bio_failed;
+
778 return {};
+
779 }
+
780 const int len = static_cast<int>(key.size());
+
781 if (BIO_write(private_key_bio.get(), key.data(), len) != len) {
+
782 ec = error_category::load_key_bio_write;
+
783 return {};
+
784 }
+
785 evp_pkey_handle pkey(
+
786 PEM_read_bio_PrivateKey(private_key_bio.get(), nullptr, nullptr, const_cast<char*>(password.c_str())));
+
787 if (!pkey) ec = error_category::load_key_bio_read;
+
788 return pkey;
+
789 }
+
+
790
+
799 template<typename error_category = error::rsa_error>
+
+
800 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password = "") {
+
801 std::error_code ec;
+
802 auto res = load_private_key_from_string<error_category>(key, password, ec);
+ +
804 return res;
+
805 }
+
+
806
+
+
818 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key, const std::string& password,
+
819 std::error_code& ec) {
+
820 return load_public_key_from_string<error::ecdsa_error>(key, password, ec);
+
821 }
+
+
822
+
828 inline
+
829#ifdef JWT_OPENSSL_1_0_0
+
830 std::string
+
831 bn2raw(BIGNUM* bn)
+
832#else
+
833 std::string
+
+
834 bn2raw(const BIGNUM* bn)
+
835#endif
+
836 {
+
837 std::string res(BN_num_bytes(bn), '\0');
+
838 BN_bn2bin(bn, (unsigned char*)res.data()); // NOLINT(google-readability-casting) requires `const_cast`
+
839 return res;
+
840 }
+
+
+
847 inline std::unique_ptr<BIGNUM, decltype(&BN_free)> raw2bn(const std::string& raw, std::error_code& ec) {
+
848 auto bn =
+
849 BN_bin2bn(reinterpret_cast<const unsigned char*>(raw.data()), static_cast<int>(raw.size()), nullptr);
+
850 // https://www.openssl.org/docs/man1.1.1/man3/BN_bin2bn.html#RETURN-VALUES
+
851 if (!bn) {
+
852 ec = error::rsa_error::set_rsa_failed;
+
853 return {nullptr, BN_free};
+
854 }
+
855 return {bn, BN_free};
+
856 }
+
+
+
862 inline std::unique_ptr<BIGNUM, decltype(&BN_free)> raw2bn(const std::string& raw) {
+
863 std::error_code ec;
+
864 auto res = raw2bn(raw, ec);
+ +
866 return res;
+
867 }
+
+
868
+
+
880 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key,
+
881 const std::string& password = "") {
+
882 std::error_code ec;
+
883 auto res = load_public_key_from_string<error::ecdsa_error>(key, password, ec);
+ +
885 return res;
+
886 }
+
+
887
+
+
897 inline evp_pkey_handle load_private_ec_key_from_string(const std::string& key, const std::string& password,
+
898 std::error_code& ec) {
+
899 return load_private_key_from_string<error::ecdsa_error>(key, password, ec);
+
900 }
+
+
901
+
916 template<typename Decode>
+
+
917 std::string create_public_key_from_rsa_components(const std::string& modulus, const std::string& exponent,
+
918 Decode decode, std::error_code& ec) {
+
919 ec.clear();
+
920 auto decoded_modulus = decode(modulus);
+
921 auto decoded_exponent = decode(exponent);
+
922
+
923 auto n = helper::raw2bn(decoded_modulus, ec);
+
924 if (ec) return {};
+
925 auto e = helper::raw2bn(decoded_exponent, ec);
+
926 if (ec) return {};
+
927
+
928#if defined(JWT_OPENSSL_3_0)
+
929 // OpenSSL deprecated mutable keys and there is a new way for making them
+
930 // https://mta.openssl.org/pipermail/openssl-users/2021-July/013994.html
+
931 // https://www.openssl.org/docs/man3.1/man3/OSSL_PARAM_BLD_new.html#Example-2
+
932 std::unique_ptr<OSSL_PARAM_BLD, decltype(&OSSL_PARAM_BLD_free)> param_bld(OSSL_PARAM_BLD_new(),
+
933 OSSL_PARAM_BLD_free);
+
934 if (!param_bld) {
+
935 ec = error::rsa_error::create_context_failed;
+
936 return {};
+
937 }
+
938
+
939 if (OSSL_PARAM_BLD_push_BN(param_bld.get(), "n", n.get()) != 1 ||
+
940 OSSL_PARAM_BLD_push_BN(param_bld.get(), "e", e.get()) != 1) {
+
941 ec = error::rsa_error::set_rsa_failed;
+
942 return {};
+
943 }
+
944
+
945 std::unique_ptr<OSSL_PARAM, decltype(&OSSL_PARAM_free)> params(OSSL_PARAM_BLD_to_param(param_bld.get()),
+
946 OSSL_PARAM_free);
+
947 if (!params) {
+
948 ec = error::rsa_error::set_rsa_failed;
+
949 return {};
+
950 }
+
951
+
952 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
953 EVP_PKEY_CTX_new_from_name(nullptr, "RSA", nullptr), EVP_PKEY_CTX_free);
+
954 if (!ctx) {
+
955 ec = error::rsa_error::create_context_failed;
+
956 return {};
+
957 }
+
958
+
959 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html#EXAMPLES
+
960 // Error codes based on https://www.openssl.org/docs/manmaster/man3/EVP_PKEY_fromdata_init.html#RETURN-VALUES
+
961 EVP_PKEY* pkey = NULL;
+
962 if (EVP_PKEY_fromdata_init(ctx.get()) <= 0 ||
+
963 EVP_PKEY_fromdata(ctx.get(), &pkey, EVP_PKEY_KEYPAIR, params.get()) <= 0) {
+
964 // It's unclear if this can fail after allocating but free it anyways
+
965 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html
+
966 EVP_PKEY_free(pkey);
+
967
+
968 ec = error::rsa_error::cert_load_failed;
+
969 return {};
+
970 }
+
971
+
972 // Transfer ownership so we get ref counter and cleanup
+
973 evp_pkey_handle rsa(pkey);
+
974
+
975#else
+
976 std::unique_ptr<RSA, decltype(&RSA_free)> rsa(RSA_new(), RSA_free);
+
977
+
978#if defined(JWT_OPENSSL_1_1_1) || defined(JWT_OPENSSL_1_1_0)
+
979 // After this RSA_free will also free the n and e big numbers
+
980 // See https://github.com/Thalhammer/jwt-cpp/pull/298#discussion_r1282619186
+
981 if (RSA_set0_key(rsa.get(), n.get(), e.get(), nullptr) == 1) {
+
982 // This can only fail we passed in NULL for `n` or `e`
+
983 // https://github.com/openssl/openssl/blob/d6e4056805f54bb1a0ef41fa3a6a35b70c94edba/crypto/rsa/rsa_lib.c#L396
+
984 // So to make sure there is no memory leak, we hold the references
+
985 n.release();
+
986 e.release();
+
987 } else {
+
988 ec = error::rsa_error::set_rsa_failed;
+
989 return {};
+
990 }
+
991#elif defined(JWT_OPENSSL_1_0_0)
+
992 rsa->e = e.release();
+
993 rsa->n = n.release();
+
994 rsa->d = nullptr;
+
995#endif
+
996#endif
+
997
+
998 auto pub_key_bio = make_mem_buf_bio();
+
999 if (!pub_key_bio) {
+
1000 ec = error::rsa_error::create_mem_bio_failed;
+
1001 return {};
+
1002 }
+
1003
+
1004 auto write_pem_to_bio =
+
1005#if defined(JWT_OPENSSL_3_0)
+
1006 // https://www.openssl.org/docs/man3.1/man3/PEM_write_bio_RSA_PUBKEY.html
+
1007 &PEM_write_bio_PUBKEY;
+
1008#else
+
1009 &PEM_write_bio_RSA_PUBKEY;
+
1010#endif
+
1011 if (write_pem_to_bio(pub_key_bio.get(), rsa.get()) != 1) {
+
1012 ec = error::rsa_error::load_key_bio_write;
+
1013 return {};
+
1014 }
+
1015
+
1016 return write_bio_to_string<error::rsa_error>(pub_key_bio, ec);
+
1017 }
+
+
1018
+
1032 template<typename Decode>
+
+
1033 std::string create_public_key_from_rsa_components(const std::string& modulus, const std::string& exponent,
+
1034 Decode decode) {
+
1035 std::error_code ec;
+
1036 auto res = create_public_key_from_rsa_components(modulus, exponent, decode, ec);
+ +
1038 return res;
+
1039 }
+
+
1040
+
1041#ifndef JWT_DISABLE_BASE64
+
+
1052 inline std::string create_public_key_from_rsa_components(const std::string& modulus,
+
1053 const std::string& exponent, std::error_code& ec) {
+
1054 auto decode = [](const std::string& token) {
+
1055 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(token));
+
1056 };
+
1057 return create_public_key_from_rsa_components(modulus, exponent, std::move(decode), ec);
+
1058 }
+
+
+
1068 inline std::string create_public_key_from_rsa_components(const std::string& modulus,
+
1069 const std::string& exponent) {
+
1070 std::error_code ec;
+
1071 auto res = create_public_key_from_rsa_components(modulus, exponent, ec);
+ +
1073 return res;
+
1074 }
+
+
1075#endif
+
+ +
1086 const std::string& password = "") {
+
1087 std::error_code ec;
+
1088 auto res = load_private_key_from_string<error::ecdsa_error>(key, password, ec);
+ +
1090 return res;
+
1091 }
+
+
1092
+
1093#if defined(JWT_OPENSSL_3_0)
+
1094
+
1102 inline std::string curve2group(const std::string curve, std::error_code& ec) {
+
1103 if (curve == "P-256") {
+
1104 return "prime256v1";
+
1105 } else if (curve == "P-384") {
+
1106 return "secp384r1";
+
1107 } else if (curve == "P-521") {
+
1108 return "secp521r1";
+
1109 } else {
+
1110 ec = jwt::error::ecdsa_error::unknown_curve;
+
1111 return {};
+
1112 }
+
1113 }
+
1114
+
1115#else
+
1116
+
+
1124 inline int curve2nid(const std::string curve, std::error_code& ec) {
+
1125 if (curve == "P-256") {
+
1126 return NID_X9_62_prime256v1;
+
1127 } else if (curve == "P-384") {
+
1128 return NID_secp384r1;
+
1129 } else if (curve == "P-521") {
+
1130 return NID_secp521r1;
+
1131 } else {
+
1132 ec = jwt::error::ecdsa_error::unknown_curve;
+
1133 return {};
+
1134 }
+
1135 }
+
+
1136
+
1137#endif
+
1138
+
1154 template<typename Decode>
+
+
1155 std::string create_public_key_from_ec_components(const std::string& curve, const std::string& x,
+
1156 const std::string& y, Decode decode, std::error_code& ec) {
+
1157 ec.clear();
+
1158 auto decoded_x = decode(x);
+
1159 auto decoded_y = decode(y);
+
1160
+
1161#if defined(JWT_OPENSSL_3_0)
+
1162 // OpenSSL deprecated mutable keys and there is a new way for making them
+
1163 // https://mta.openssl.org/pipermail/openssl-users/2021-July/013994.html
+
1164 // https://www.openssl.org/docs/man3.1/man3/OSSL_PARAM_BLD_new.html#Example-2
+
1165 std::unique_ptr<OSSL_PARAM_BLD, decltype(&OSSL_PARAM_BLD_free)> param_bld(OSSL_PARAM_BLD_new(),
+
1166 OSSL_PARAM_BLD_free);
+
1167 if (!param_bld) {
+
1168 ec = error::ecdsa_error::create_context_failed;
+
1169 return {};
+
1170 }
+
1171
+
1172 std::string group = helper::curve2group(curve, ec);
+
1173 if (ec) return {};
+
1174
+
1175 // https://github.com/openssl/openssl/issues/16270#issuecomment-895734092
+
1176 std::string pub = std::string("\x04").append(decoded_x).append(decoded_y);
+
1177
+
1178 if (OSSL_PARAM_BLD_push_utf8_string(param_bld.get(), "group", group.data(), group.size()) != 1 ||
+
1179 OSSL_PARAM_BLD_push_octet_string(param_bld.get(), "pub", pub.data(), pub.size()) != 1) {
+
1180 ec = error::ecdsa_error::set_ecdsa_failed;
+
1181 return {};
+
1182 }
+
1183
+
1184 std::unique_ptr<OSSL_PARAM, decltype(&OSSL_PARAM_free)> params(OSSL_PARAM_BLD_to_param(param_bld.get()),
+
1185 OSSL_PARAM_free);
+
1186 if (!params) {
+
1187 ec = error::ecdsa_error::set_ecdsa_failed;
+
1188 return {};
+
1189 }
+
1190
+
1191 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
1192 EVP_PKEY_CTX_new_from_name(nullptr, "EC", nullptr), EVP_PKEY_CTX_free);
+
1193 if (!ctx) {
+
1194 ec = error::ecdsa_error::create_context_failed;
+
1195 return {};
+
1196 }
+
1197
+
1198 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html#EXAMPLES
+
1199 // Error codes based on https://www.openssl.org/docs/manmaster/man3/EVP_PKEY_fromdata_init.html#RETURN-VALUES
+
1200 EVP_PKEY* pkey = NULL;
+
1201 if (EVP_PKEY_fromdata_init(ctx.get()) <= 0 ||
+
1202 EVP_PKEY_fromdata(ctx.get(), &pkey, EVP_PKEY_KEYPAIR, params.get()) <= 0) {
+
1203 // It's unclear if this can fail after allocating but free it anyways
+
1204 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html
+
1205 EVP_PKEY_free(pkey);
+
1206
+
1207 ec = error::ecdsa_error::cert_load_failed;
+
1208 return {};
+
1209 }
+
1210
+
1211 // Transfer ownership so we get ref counter and cleanup
+
1212 evp_pkey_handle ecdsa(pkey);
+
1213
+
1214#else
+
1215 int nid = helper::curve2nid(curve, ec);
+
1216 if (ec) return {};
+
1217
+
1218 auto qx = helper::raw2bn(decoded_x, ec);
+
1219 if (ec) return {};
+
1220 auto qy = helper::raw2bn(decoded_y, ec);
+
1221 if (ec) return {};
+
1222
+
1223 std::unique_ptr<EC_GROUP, decltype(&EC_GROUP_free)> ecgroup(EC_GROUP_new_by_curve_name(nid), EC_GROUP_free);
+
1224 if (!ecgroup) {
+
1225 ec = error::ecdsa_error::set_ecdsa_failed;
+
1226 return {};
+
1227 }
+
1228
+
1229 EC_GROUP_set_asn1_flag(ecgroup.get(), OPENSSL_EC_NAMED_CURVE);
+
1230
+
1231 std::unique_ptr<EC_POINT, decltype(&EC_POINT_free)> ecpoint(EC_POINT_new(ecgroup.get()), EC_POINT_free);
+
1232 if (!ecpoint ||
+
1233 EC_POINT_set_affine_coordinates_GFp(ecgroup.get(), ecpoint.get(), qx.get(), qy.get(), nullptr) != 1) {
+
1234 ec = error::ecdsa_error::set_ecdsa_failed;
+
1235 return {};
+
1236 }
+
1237
+
1238 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> ecdsa(EC_KEY_new(), EC_KEY_free);
+
1239 if (!ecdsa || EC_KEY_set_group(ecdsa.get(), ecgroup.get()) != 1 ||
+
1240 EC_KEY_set_public_key(ecdsa.get(), ecpoint.get()) != 1) {
+
1241 ec = error::ecdsa_error::set_ecdsa_failed;
+
1242 return {};
+
1243 }
+
1244
+
1245#endif
+
1246
+
1247 auto pub_key_bio = make_mem_buf_bio();
+
1248 if (!pub_key_bio) {
+
1249 ec = error::ecdsa_error::create_mem_bio_failed;
+
1250 return {};
+
1251 }
+
1252
+
1253 auto write_pem_to_bio =
+
1254#if defined(JWT_OPENSSL_3_0)
+
1255 // https://www.openssl.org/docs/man3.1/man3/PEM_write_bio_EC_PUBKEY.html
+
1256 &PEM_write_bio_PUBKEY;
+
1257#else
+
1258 &PEM_write_bio_EC_PUBKEY;
+
1259#endif
+
1260 if (write_pem_to_bio(pub_key_bio.get(), ecdsa.get()) != 1) {
+
1261 ec = error::ecdsa_error::load_key_bio_write;
+
1262 return {};
+
1263 }
+
1264
+
1265 return write_bio_to_string<error::ecdsa_error>(pub_key_bio, ec);
+
1266 }
+
+
1267
+
1282 template<typename Decode>
+
+
1283 std::string create_public_key_from_ec_components(const std::string& curve, const std::string& x,
+
1284 const std::string& y, Decode decode) {
+
1285 std::error_code ec;
+
1286 auto res = create_public_key_from_ec_components(curve, x, y, decode, ec);
+ +
1288 return res;
+
1289 }
+
+
1290
+
1291#ifndef JWT_DISABLE_BASE64
+
+
1303 inline std::string create_public_key_from_ec_components(const std::string& curve, const std::string& x,
+
1304 const std::string& y, std::error_code& ec) {
+
1305 auto decode = [](const std::string& token) {
+
1306 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(token));
+
1307 };
+
1308 return create_public_key_from_ec_components(curve, x, y, std::move(decode), ec);
+
1309 }
+
+
+
1320 inline std::string create_public_key_from_ec_components(const std::string& curve, const std::string& x,
+
1321 const std::string& y) {
+
1322 std::error_code ec;
+
1323 auto res = create_public_key_from_ec_components(curve, x, y, ec);
+ +
1325 return res;
+
1326 }
+
+
1327#endif
+
1328 } // namespace helper
+
+
1329
+
+
1339 namespace algorithm {
+
+
1347 struct none {
+
+
1351 std::string sign(const std::string& /*unused*/, std::error_code& ec) const {
+
1352 ec.clear();
+
1353 return {};
+
1354 }
+
+
+
1362 void verify(const std::string& /*unused*/, const std::string& signature, std::error_code& ec) const {
+
1363 ec.clear();
+
1364 if (!signature.empty()) { ec = error::signature_verification_error::invalid_signature; }
+
1365 }
+
+
1367 std::string name() const { return "none"; }
+
1368 };
+
+
+
1372 struct hmacsha {
+
+
1380 hmacsha(std::string key, const EVP_MD* (*md)(), std::string name)
+
1381 : secret(std::move(key)), md(md), alg_name(std::move(name)) {}
+
+
+
1389 std::string sign(const std::string& data, std::error_code& ec) const {
+
1390 ec.clear();
+
1391 std::string res(static_cast<size_t>(EVP_MAX_MD_SIZE), '\0');
+
1392 auto len = static_cast<unsigned int>(res.size());
+
1393 if (HMAC(md(), secret.data(), static_cast<int>(secret.size()),
+
1394 reinterpret_cast<const unsigned char*>(data.data()), static_cast<int>(data.size()),
+
1395 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
1396 &len) == nullptr) {
+
1397 ec = error::signature_generation_error::hmac_failed;
+
1398 return {};
+
1399 }
+
1400 res.resize(len);
+
1401 return res;
+
1402 }
+
+
+
1410 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1411 ec.clear();
+
1412 auto res = sign(data, ec);
+
1413 if (ec) return;
+
1414
+
1415 bool matched = true;
+
1416 for (size_t i = 0; i < std::min<size_t>(res.size(), signature.size()); i++)
+
1417 if (res[i] != signature[i]) matched = false;
+
1418 if (res.size() != signature.size()) matched = false;
+
1419 if (!matched) {
+
1420 ec = error::signature_verification_error::invalid_signature;
+
1421 return;
+
1422 }
+
1423 }
+
+
1429 std::string name() const { return alg_name; }
+
1430
+
1431 private:
+
1433 const std::string secret;
+
1435 const EVP_MD* (*md)();
+
1437 const std::string alg_name;
+
1438 };
+
+
+
1442 struct rsa {
+
+
1453 rsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1454 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
1455 : md(md), alg_name(std::move(name)) {
+
1456 if (!private_key.empty()) {
+
1457 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1458 } else if (!public_key.empty()) {
+
1459 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1460 } else
+
1461 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
1462 }
+
+
+
1469 std::string sign(const std::string& data, std::error_code& ec) const {
+
1470 ec.clear();
+
1471 auto ctx = helper::make_evp_md_ctx();
+
1472 if (!ctx) {
+
1473 ec = error::signature_generation_error::create_context_failed;
+
1474 return {};
+
1475 }
+
1476 if (!EVP_SignInit(ctx.get(), md())) {
+
1477 ec = error::signature_generation_error::signinit_failed;
+
1478 return {};
+
1479 }
+
1480
+
1481 std::string res(EVP_PKEY_size(pkey.get()), '\0');
+
1482 unsigned int len = 0;
+
1483
+
1484 if (!EVP_SignUpdate(ctx.get(), data.data(), data.size())) {
+
1485 ec = error::signature_generation_error::signupdate_failed;
+
1486 return {};
+
1487 }
+
1488 if (EVP_SignFinal(ctx.get(), (unsigned char*)res.data(), &len, pkey.get()) == 0) {
+
1489 ec = error::signature_generation_error::signfinal_failed;
+
1490 return {};
+
1491 }
+
1492
+
1493 res.resize(len);
+
1494 return res;
+
1495 }
+
+
+
1503 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1504 ec.clear();
+
1505 auto ctx = helper::make_evp_md_ctx();
+
1506 if (!ctx) {
+
1507 ec = error::signature_verification_error::create_context_failed;
+
1508 return;
+
1509 }
+
1510 if (!EVP_VerifyInit(ctx.get(), md())) {
+
1511 ec = error::signature_verification_error::verifyinit_failed;
+
1512 return;
+
1513 }
+
1514 if (!EVP_VerifyUpdate(ctx.get(), data.data(), data.size())) {
+
1515 ec = error::signature_verification_error::verifyupdate_failed;
+
1516 return;
+
1517 }
+
1518 auto res = EVP_VerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1519 static_cast<unsigned int>(signature.size()), pkey.get());
+
1520 if (res != 1) {
+
1521 ec = error::signature_verification_error::verifyfinal_failed;
+
1522 return;
+
1523 }
+
1524 }
+
+
1529 std::string name() const { return alg_name; }
+
1530
+
1531 private:
+ +
1535 const EVP_MD* (*md)();
+
1537 const std::string alg_name;
+
1538 };
+
+
+
1542 struct ecdsa {
+
+
1554 ecdsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1555 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name, size_t siglen)
+
1556 : md(md), alg_name(std::move(name)), signature_length(siglen) {
+
1557 if (!private_key.empty()) {
+
1558 pkey = helper::load_private_ec_key_from_string(private_key, private_key_password);
+
1559 check_private_key(pkey.get());
+
1560 } else if (!public_key.empty()) {
+
1561 pkey = helper::load_public_ec_key_from_string(public_key, public_key_password);
+
1562 check_public_key(pkey.get());
+
1563 } else {
+
1564 throw error::ecdsa_exception(error::ecdsa_error::no_key_provided);
+
1565 }
+
1566 if (!pkey) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1567
+
1568 size_t keysize = EVP_PKEY_bits(pkey.get());
+
1569 if (keysize != signature_length * 4 && (signature_length != 132 || keysize != 521))
+
1570 throw error::ecdsa_exception(error::ecdsa_error::invalid_key_size);
+
1571 }
+
+
1572
+
+
1579 std::string sign(const std::string& data, std::error_code& ec) const {
+
1580 ec.clear();
+
1581 auto ctx = helper::make_evp_md_ctx();
+
1582 if (!ctx) {
+
1583 ec = error::signature_generation_error::create_context_failed;
+
1584 return {};
+
1585 }
+
1586 if (!EVP_DigestSignInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
1587 ec = error::signature_generation_error::signinit_failed;
+
1588 return {};
+
1589 }
+
1590 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
1591 ec = error::signature_generation_error::digestupdate_failed;
+
1592 return {};
+
1593 }
+
1594
+
1595 size_t len = 0;
+
1596 if (!EVP_DigestSignFinal(ctx.get(), nullptr, &len)) {
+
1597 ec = error::signature_generation_error::signfinal_failed;
+
1598 return {};
+
1599 }
+
1600 std::string res(len, '\0');
+
1601 if (!EVP_DigestSignFinal(ctx.get(), (unsigned char*)res.data(), &len)) {
+
1602 ec = error::signature_generation_error::signfinal_failed;
+
1603 return {};
+
1604 }
+
1605
+
1606 res.resize(len);
+
1607 return der_to_p1363_signature(res, ec);
+
1608 }
+
+
1609
+
+
1616 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1617 ec.clear();
+
1618 std::string der_signature = p1363_to_der_signature(signature, ec);
+
1619 if (ec) { return; }
+
1620
+
1621 auto ctx = helper::make_evp_md_ctx();
+
1622 if (!ctx) {
+
1623 ec = error::signature_verification_error::create_context_failed;
+
1624 return;
+
1625 }
+
1626 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
1627 ec = error::signature_verification_error::verifyinit_failed;
+
1628 return;
+
1629 }
+
1630 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
1631 ec = error::signature_verification_error::verifyupdate_failed;
+
1632 return;
+
1633 }
+
1634
+
1635#if OPENSSL_VERSION_NUMBER < 0x10002000L
+
1636 unsigned char* der_sig_data = reinterpret_cast<unsigned char*>(const_cast<char*>(der_signature.data()));
+
1637#else
+
1638 const unsigned char* der_sig_data = reinterpret_cast<const unsigned char*>(der_signature.data());
+
1639#endif
+
1640 auto res =
+
1641 EVP_DigestVerifyFinal(ctx.get(), der_sig_data, static_cast<unsigned int>(der_signature.length()));
+
1642 if (res == 0) {
+
1643 ec = error::signature_verification_error::invalid_signature;
+
1644 return;
+
1645 }
+
1646 if (res == -1) {
+
1647 ec = error::signature_verification_error::verifyfinal_failed;
+
1648 return;
+
1649 }
+
1650 }
+
+
1655 std::string name() const { return alg_name; }
+
1656
+
1657 private:
+
1658 static void check_public_key(EVP_PKEY* pkey) {
+
1659#ifdef JWT_OPENSSL_3_0
+
1660 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
1661 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
1662 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
1663 if (EVP_PKEY_public_check(ctx.get()) != 1) {
+
1664 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1665 }
+
1666#else
+
1667 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
1668 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
1669 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1670#endif
+
1671 }
+
1672
+
1673 static void check_private_key(EVP_PKEY* pkey) {
+
1674#ifdef JWT_OPENSSL_3_0
+
1675 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
1676 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
1677 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
1678 if (EVP_PKEY_private_check(ctx.get()) != 1) {
+
1679 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1680 }
+
1681#else
+
1682 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
1683 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
1684 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1685#endif
+
1686 }
+
1687
+
1688 std::string der_to_p1363_signature(const std::string& der_signature, std::error_code& ec) const {
+
1689 const unsigned char* possl_signature = reinterpret_cast<const unsigned char*>(der_signature.data());
+
1690 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(
+
1691 d2i_ECDSA_SIG(nullptr, &possl_signature, static_cast<long>(der_signature.length())),
+
1692 ECDSA_SIG_free);
+
1693 if (!sig) {
+
1694 ec = error::signature_generation_error::signature_decoding_failed;
+
1695 return {};
+
1696 }
+
1697
+
1698#ifdef JWT_OPENSSL_1_0_0
+
1699 auto rr = helper::bn2raw(sig->r);
+
1700 auto rs = helper::bn2raw(sig->s);
+
1701#else
+
1702 const BIGNUM* r;
+
1703 const BIGNUM* s;
+
1704 ECDSA_SIG_get0(sig.get(), &r, &s);
+
1705 auto rr = helper::bn2raw(r);
+
1706 auto rs = helper::bn2raw(s);
+
1707#endif
+
1708 if (rr.size() > signature_length / 2 || rs.size() > signature_length / 2)
+
1709 throw std::logic_error("bignum size exceeded expected length");
+
1710 rr.insert(0, signature_length / 2 - rr.size(), '\0');
+
1711 rs.insert(0, signature_length / 2 - rs.size(), '\0');
+
1712 return rr + rs;
+
1713 }
+
1714
+
1715 std::string p1363_to_der_signature(const std::string& signature, std::error_code& ec) const {
+
1716 ec.clear();
+
1717 auto r = helper::raw2bn(signature.substr(0, signature.size() / 2), ec);
+
1718 if (ec) return {};
+
1719 auto s = helper::raw2bn(signature.substr(signature.size() / 2), ec);
+
1720 if (ec) return {};
+
1721
+
1722 ECDSA_SIG* psig;
+
1723#ifdef JWT_OPENSSL_1_0_0
+
1724 ECDSA_SIG sig;
+
1725 sig.r = r.get();
+
1726 sig.s = s.get();
+
1727 psig = &sig;
+
1728#else
+
1729 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(ECDSA_SIG_new(), ECDSA_SIG_free);
+
1730 if (!sig) {
+
1731 ec = error::signature_verification_error::create_context_failed;
+
1732 return {};
+
1733 }
+
1734 ECDSA_SIG_set0(sig.get(), r.release(), s.release());
+
1735 psig = sig.get();
+
1736#endif
+
1737
+
1738 int length = i2d_ECDSA_SIG(psig, nullptr);
+
1739 if (length < 0) {
+
1740 ec = error::signature_verification_error::signature_encoding_failed;
+
1741 return {};
+
1742 }
+
1743 std::string der_signature(length, '\0');
+
1744 unsigned char* psbuffer = (unsigned char*)der_signature.data();
+
1745 length = i2d_ECDSA_SIG(psig, &psbuffer);
+
1746 if (length < 0) {
+
1747 ec = error::signature_verification_error::signature_encoding_failed;
+
1748 return {};
+
1749 }
+
1750 der_signature.resize(length);
+
1751 return der_signature;
+
1752 }
+
1753
+
1755 helper::evp_pkey_handle pkey;
+
1757 const EVP_MD* (*md)();
+
1759 const std::string alg_name;
+
1761 const size_t signature_length;
+
1762 };
+
+
1763
+
1764#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
+
1773 struct eddsa {
+
+
1784 eddsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1785 const std::string& private_key_password, std::string name)
+
1786 : alg_name(std::move(name)) {
+
1787 if (!private_key.empty()) {
+
1788 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1789 } else if (!public_key.empty()) {
+
1790 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1791 } else
+
1792 throw error::ecdsa_exception(error::ecdsa_error::load_key_bio_read);
+
1793 }
+
+
+
1800 std::string sign(const std::string& data, std::error_code& ec) const {
+
1801 ec.clear();
+
1802 auto ctx = helper::make_evp_md_ctx();
+
1803 if (!ctx) {
+
1804 ec = error::signature_generation_error::create_context_failed;
+
1805 return {};
+
1806 }
+
1807 if (!EVP_DigestSignInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1808 ec = error::signature_generation_error::signinit_failed;
+
1809 return {};
+
1810 }
+
1811
+
1812 size_t len = EVP_PKEY_size(pkey.get());
+
1813 std::string res(len, '\0');
+
1814
+
1815// LibreSSL is the special kid in the block, as it does not support EVP_DigestSign.
+
1816// OpenSSL on the otherhand does not support using EVP_DigestSignUpdate for eddsa, which is why we end up with this
+
1817// mess.
+
1818#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1819 ERR_clear_error();
+
1820 if (EVP_DigestSignUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()), data.size()) !=
+
1821 1) {
+
1822 std::cout << ERR_error_string(ERR_get_error(), NULL) << std::endl;
+
1823 ec = error::signature_generation_error::signupdate_failed;
+
1824 return {};
+
1825 }
+
1826 if (EVP_DigestSignFinal(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len) != 1) {
+
1827 ec = error::signature_generation_error::signfinal_failed;
+
1828 return {};
+
1829 }
+
1830#else
+
1831 if (EVP_DigestSign(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len,
+
1832 reinterpret_cast<const unsigned char*>(data.data()), data.size()) != 1) {
+
1833 ec = error::signature_generation_error::signfinal_failed;
+
1834 return {};
+
1835 }
+
1836#endif
+
1837
+
1838 res.resize(len);
+
1839 return res;
+
1840 }
+
+
1841
+
+
1848 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1849 ec.clear();
+
1850 auto ctx = helper::make_evp_md_ctx();
+
1851 if (!ctx) {
+
1852 ec = error::signature_verification_error::create_context_failed;
+
1853 return;
+
1854 }
+
1855 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1856 ec = error::signature_verification_error::verifyinit_failed;
+
1857 return;
+
1858 }
+
1859// LibreSSL is the special kid in the block, as it does not support EVP_DigestVerify.
+
1860// OpenSSL on the otherhand does not support using EVP_DigestVerifyUpdate for eddsa, which is why we end up with this
+
1861// mess.
+
1862#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1863 if (EVP_DigestVerifyUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()),
+
1864 data.size()) != 1) {
+
1865 ec = error::signature_verification_error::verifyupdate_failed;
+
1866 return;
+
1867 }
+
1868 if (EVP_DigestVerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1869 signature.size()) != 1) {
+
1870 ec = error::signature_verification_error::verifyfinal_failed;
+
1871 return;
+
1872 }
+
1873#else
+
1874 auto res = EVP_DigestVerify(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1875 signature.size(), reinterpret_cast<const unsigned char*>(data.data()),
+
1876 data.size());
+
1877 if (res != 1) {
+
1878 ec = error::signature_verification_error::verifyfinal_failed;
+
1879 return;
+
1880 }
+
1881#endif
+
1882 }
+
+
1887 std::string name() const { return alg_name; }
+
1888
+
1889 private:
+ +
1893 const std::string alg_name;
+
1894 };
+
+
1895#endif
+
+
1899 struct pss {
+
+
1909 pss(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1910 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
1911 : md(md), alg_name(std::move(name)) {
+
1912 if (!private_key.empty()) {
+
1913 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1914 } else if (!public_key.empty()) {
+
1915 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1916 } else
+
1917 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
1918 }
+
+
1919
+
+
1926 std::string sign(const std::string& data, std::error_code& ec) const {
+
1927 ec.clear();
+
1928 auto md_ctx = helper::make_evp_md_ctx();
+
1929 if (!md_ctx) {
+
1930 ec = error::signature_generation_error::create_context_failed;
+
1931 return {};
+
1932 }
+
1933 EVP_PKEY_CTX* ctx = nullptr;
+
1934 if (EVP_DigestSignInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1935 ec = error::signature_generation_error::signinit_failed;
+
1936 return {};
+
1937 }
+
1938 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1939 ec = error::signature_generation_error::rsa_padding_failed;
+
1940 return {};
+
1941 }
+
1942// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1943// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1944#ifndef LIBWOLFSSL_VERSION_HEX
+
1945 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1946 ec = error::signature_generation_error::set_rsa_pss_saltlen_failed;
+
1947 return {};
+
1948 }
+
1949#endif
+
1950 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
1951 ec = error::signature_generation_error::digestupdate_failed;
+
1952 return {};
+
1953 }
+
1954
+
1955 size_t size = EVP_PKEY_size(pkey.get());
+
1956 std::string res(size, 0x00);
+
1957 if (EVP_DigestSignFinal(
+
1958 md_ctx.get(),
+
1959 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
1960 &size) <= 0) {
+
1961 ec = error::signature_generation_error::signfinal_failed;
+
1962 return {};
+
1963 }
+
1964
+
1965 return res;
+
1966 }
+
+
1967
+
+
1974 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1975 ec.clear();
+
1976
+
1977 auto md_ctx = helper::make_evp_md_ctx();
+
1978 if (!md_ctx) {
+
1979 ec = error::signature_verification_error::create_context_failed;
+
1980 return;
+
1981 }
+
1982 EVP_PKEY_CTX* ctx = nullptr;
+
1983 if (EVP_DigestVerifyInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1984 ec = error::signature_verification_error::verifyinit_failed;
+
1985 return;
+
1986 }
+
1987 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1988 ec = error::signature_generation_error::rsa_padding_failed;
+
1989 return;
+
1990 }
+
1991// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1992// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1993#ifndef LIBWOLFSSL_VERSION_HEX
+
1994 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1995 ec = error::signature_verification_error::set_rsa_pss_saltlen_failed;
+
1996 return;
+
1997 }
+
1998#endif
+
1999 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
2000 ec = error::signature_verification_error::verifyupdate_failed;
+
2001 return;
+
2002 }
+
2003
+
2004 if (EVP_DigestVerifyFinal(md_ctx.get(), (unsigned char*)signature.data(), signature.size()) <= 0) {
+
2005 ec = error::signature_verification_error::verifyfinal_failed;
+
2006 return;
+
2007 }
+
2008 }
+
+
2013 std::string name() const { return alg_name; }
+
2014
+
2015 private:
+ +
2019 const EVP_MD* (*md)();
+
2021 const std::string alg_name;
+
2022 };
+
+
2023
+
+
2027 struct hs256 : public hmacsha {
+
2032 explicit hs256(std::string key) : hmacsha(std::move(key), EVP_sha256, "HS256") {}
+
2033 };
+
+
+
2037 struct hs384 : public hmacsha {
+
2042 explicit hs384(std::string key) : hmacsha(std::move(key), EVP_sha384, "HS384") {}
+
2043 };
+
+
+
2047 struct hs512 : public hmacsha {
+
2052 explicit hs512(std::string key) : hmacsha(std::move(key), EVP_sha512, "HS512") {}
+
2053 };
+
+
+
2059 struct rs256 : public rsa {
+
+
2068 explicit rs256(const std::string& public_key, const std::string& private_key = "",
+
2069 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2070 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "RS256") {}
+
+
2071 };
+
+
+
2075 struct rs384 : public rsa {
+
+
2083 explicit rs384(const std::string& public_key, const std::string& private_key = "",
+
2084 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2085 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "RS384") {}
+
+
2086 };
+
+
+
2090 struct rs512 : public rsa {
+
+
2098 explicit rs512(const std::string& public_key, const std::string& private_key = "",
+
2099 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2100 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "RS512") {}
+
+
2101 };
+
+
+
2105 struct es256 : public ecdsa {
+
+
2115 explicit es256(const std::string& public_key, const std::string& private_key = "",
+
2116 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2117 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256", 64) {}
+
+
2118 };
+
+
+
2122 struct es384 : public ecdsa {
+
+
2132 explicit es384(const std::string& public_key, const std::string& private_key = "",
+
2133 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2134 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "ES384", 96) {}
+
+
2135 };
+
+
+
2139 struct es512 : public ecdsa {
+
+
2149 explicit es512(const std::string& public_key, const std::string& private_key = "",
+
2150 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2151 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "ES512", 132) {}
+
+
2152 };
+
+
+
2156 struct es256k : public ecdsa {
+
+
2165 explicit es256k(const std::string& public_key, const std::string& private_key = "",
+
2166 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2167 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256K", 64) {}
+
+
2168 };
+
+
2169
+
2170#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
+
2178 struct ed25519 : public eddsa {
+
+
2188 explicit ed25519(const std::string& public_key, const std::string& private_key = "",
+
2189 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2190 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
+
2191 };
+
+
2192
+
+
2200 struct ed448 : public eddsa {
+
+
2210 explicit ed448(const std::string& public_key, const std::string& private_key = "",
+
2211 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2212 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
+
2213 };
+
+
2214#endif
+
2215
+
+
2219 struct ps256 : public pss {
+
+
2227 explicit ps256(const std::string& public_key, const std::string& private_key = "",
+
2228 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2229 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "PS256") {}
+
+
2230 };
+
+
+
2234 struct ps384 : public pss {
+
+
2242 explicit ps384(const std::string& public_key, const std::string& private_key = "",
+
2243 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2244 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "PS384") {}
+
+
2245 };
+
+
+
2249 struct ps512 : public pss {
+
+
2257 explicit ps512(const std::string& public_key, const std::string& private_key = "",
+
2258 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2259 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "PS512") {}
+
+
2260 };
+
+
2261 } // namespace algorithm
+
+
2262
+
+
2266 namespace json {
+
2274 enum class type { boolean, integer, number, string, array, object };
+
2275 } // namespace json
+
+
2276
+
2277 namespace details {
+
2278#ifdef __cpp_lib_void_t
+
2279 template<typename... Ts>
+
2280 using void_t = std::void_t<Ts...>;
+
2281#else
+
2282 // https://en.cppreference.com/w/cpp/types/void_t
+
2283 template<typename... Ts>
+
2284 struct make_void {
+
2285 using type = void;
+
2286 };
+
2287
+
2288 template<typename... Ts>
+
2289 using void_t = typename make_void<Ts...>::type;
+
2290#endif
+
2291
+
2292#ifdef __cpp_lib_experimental_detect
+
2293 template<template<typename...> class _Op, typename... _Args>
+
2294 using is_detected = std::experimental::is_detected<_Op, _Args...>;
+
2295#else
+
2296 struct nonesuch {
+
2297 nonesuch() = delete;
+
2298 ~nonesuch() = delete;
+
2299 nonesuch(nonesuch const&) = delete;
+
2300 nonesuch(nonesuch const&&) = delete;
+
2301 void operator=(nonesuch const&) = delete;
+
2302 void operator=(nonesuch&&) = delete;
+
2303 };
+
2304
+
2305 // https://en.cppreference.com/w/cpp/experimental/is_detected
+
2306 template<class Default, class AlwaysVoid, template<class...> class Op, class... Args>
+
2307 struct detector {
+
2308 using value = std::false_type;
+
2309 using type = Default;
+
2310 };
+
2311
+
2312 template<class Default, template<class...> class Op, class... Args>
+
2313 struct detector<Default, void_t<Op<Args...>>, Op, Args...> {
+
2314 using value = std::true_type;
+
2315 using type = Op<Args...>;
+
2316 };
+
2317
+
2318 template<template<class...> class Op, class... Args>
+
2319 using is_detected = typename detector<nonesuch, void, Op, Args...>::value;
+
2320#endif
+
2321
+
2322 template<typename T, typename Signature>
+
2323 using is_signature = typename std::is_same<T, Signature>;
+
2324
+
2325 template<typename traits_type, template<typename...> class Op, typename Signature>
+
2326 struct is_function_signature_detected {
+
2327 using type = Op<traits_type>;
+
2328 static constexpr auto value = is_detected<Op, traits_type>::value && std::is_function<type>::value &&
+
2329 is_signature<type, Signature>::value;
+
2330 };
+
2331
+
2332 template<typename traits_type, typename value_type>
+
2333 struct supports_get_type {
+
2334 template<typename T>
+
2335 using get_type_t = decltype(T::get_type);
+
2336
+
2337 static constexpr auto value =
+
2338 is_function_signature_detected<traits_type, get_type_t, json::type(const value_type&)>::value;
+
2339
+
2340 // Internal assertions for better feedback
+
2341 static_assert(value, "traits implementation must provide `jwt::json::type get_type(const value_type&)`");
+
2342 };
+
2343
+
2344#define JWT_CPP_JSON_TYPE_TYPE(TYPE) json_##TYPE_type
+
2345#define JWT_CPP_AS_TYPE_T(TYPE) as_##TYPE_t
+
2346#define JWT_CPP_SUPPORTS_AS(TYPE) \
+
2347 template<typename traits_type, typename value_type, typename JWT_CPP_JSON_TYPE_TYPE(TYPE)> \
+
2348 struct supports_as_##TYPE { \
+
2349 template<typename T> \
+
2350 using JWT_CPP_AS_TYPE_T(TYPE) = decltype(T::as_##TYPE); \
+
2351 \
+
2352 static constexpr auto value = \
+
2353 is_function_signature_detected<traits_type, JWT_CPP_AS_TYPE_T(TYPE), \
+
2354 JWT_CPP_JSON_TYPE_TYPE(TYPE)(const value_type&)>::value; \
+
2355 \
+
2356 static_assert(value, "traits implementation must provide `" #TYPE "_type as_" #TYPE "(const value_type&)`"); \
+
2357 }
+
2358
+
2359 JWT_CPP_SUPPORTS_AS(object);
+
2360 JWT_CPP_SUPPORTS_AS(array);
+
2361 JWT_CPP_SUPPORTS_AS(string);
+
2362 JWT_CPP_SUPPORTS_AS(number);
+
2363 JWT_CPP_SUPPORTS_AS(integer);
+
2364 JWT_CPP_SUPPORTS_AS(boolean);
+
2365
+
2366#undef JWT_CPP_JSON_TYPE_TYPE
+
2367#undef JWT_CPP_AS_TYPE_T
+
2368#undef JWT_CPP_SUPPORTS_AS
+
2369
+
2370 template<typename traits>
+
2371 struct is_valid_traits {
+
2372 static constexpr auto value =
+
2373 supports_get_type<traits, typename traits::value_type>::value &&
+
2374 supports_as_object<traits, typename traits::value_type, typename traits::object_type>::value &&
+
2375 supports_as_array<traits, typename traits::value_type, typename traits::array_type>::value &&
+
2376 supports_as_string<traits, typename traits::value_type, typename traits::string_type>::value &&
+
2377 supports_as_number<traits, typename traits::value_type, typename traits::number_type>::value &&
+
2378 supports_as_integer<traits, typename traits::value_type, typename traits::integer_type>::value &&
+
2379 supports_as_boolean<traits, typename traits::value_type, typename traits::boolean_type>::value;
+
2380 };
+
2381
+
2382 template<typename value_type>
+
2383 struct is_valid_json_value {
+
2384 static constexpr auto value =
+
2385 std::is_default_constructible<value_type>::value &&
+
2386 std::is_constructible<value_type, const value_type&>::value && // a more generic is_copy_constructible
+
2387 std::is_move_constructible<value_type>::value && std::is_assignable<value_type, value_type>::value &&
+
2388 std::is_copy_assignable<value_type>::value && std::is_move_assignable<value_type>::value;
+
2389 // TODO(prince-chrismc): Stream operators
+
2390 };
+
2391
+
2392 // https://stackoverflow.com/a/53967057/8480874
+
2393 template<typename T, typename = void>
+
2394 struct is_iterable : std::false_type {};
+
2395
+
2396 template<typename T>
+
2397 struct is_iterable<T, void_t<decltype(std::begin(std::declval<T>())), decltype(std::end(std::declval<T>())),
+
2398#if __cplusplus > 201402L
+
2399 decltype(std::cbegin(std::declval<T>())), decltype(std::cend(std::declval<T>()))
+
2400#else
+
2401 decltype(std::begin(std::declval<const T>())),
+
2402 decltype(std::end(std::declval<const T>()))
+
2403#endif
+
2404 >> : std::true_type {
+
2405 };
+
2406
+
2407#if __cplusplus > 201703L
+
2408 template<typename T>
+
2409 inline constexpr bool is_iterable_v = is_iterable<T>::value;
+
2410#endif
+
2411
+
2412 template<typename object_type, typename string_type>
+
2413 using is_count_signature = typename std::is_integral<decltype(std::declval<const object_type>().count(
+
2414 std::declval<const string_type>()))>;
+
2415
+
2416 template<typename object_type, typename string_type, typename = void>
+
2417 struct is_subcription_operator_signature : std::false_type {};
+
2418
+
2419 template<typename object_type, typename string_type>
+
2420 struct is_subcription_operator_signature<
+
2421 object_type, string_type,
+
2422 void_t<decltype(std::declval<object_type>().operator[](std::declval<string_type>()))>> : std::true_type {
+
2423 // TODO(prince-chrismc): I am not convienced this is meaningful anymore
+
2424 static_assert(
+
2425 value,
+
2426 "object_type must implementate the subscription operator '[]' taking string_type as an argument");
+
2427 };
+
2428
+
2429 template<typename object_type, typename value_type, typename string_type>
+
2430 using is_at_const_signature =
+
2431 typename std::is_same<decltype(std::declval<const object_type>().at(std::declval<const string_type>())),
+
2432 const value_type&>;
+
2433
+
2434 template<typename value_type, typename string_type, typename object_type>
+
2435 struct is_valid_json_object {
+
2436 template<typename T>
+
2437 using mapped_type_t = typename T::mapped_type;
+
2438 template<typename T>
+
2439 using key_type_t = typename T::key_type;
+
2440 template<typename T>
+
2441 using iterator_t = typename T::iterator;
+
2442 template<typename T>
+
2443 using const_iterator_t = typename T::const_iterator;
+
2444
+
2445 static constexpr auto value =
+
2446 std::is_constructible<value_type, object_type>::value &&
+
2447 is_detected<mapped_type_t, object_type>::value &&
+
2448 std::is_same<typename object_type::mapped_type, value_type>::value &&
+
2449 is_detected<key_type_t, object_type>::value &&
+
2450 (std::is_same<typename object_type::key_type, string_type>::value ||
+
2451 std::is_constructible<typename object_type::key_type, string_type>::value) &&
+
2452 is_detected<iterator_t, object_type>::value && is_detected<const_iterator_t, object_type>::value &&
+
2453 is_iterable<object_type>::value && is_count_signature<object_type, string_type>::value &&
+
2454 is_subcription_operator_signature<object_type, string_type>::value &&
+
2455 is_at_const_signature<object_type, value_type, string_type>::value;
+
2456 };
+
2457
+
2458 template<typename value_type, typename array_type>
+
2459 struct is_valid_json_array {
+
2460 template<typename T>
+
2461 using value_type_t = typename T::value_type;
+
2462 using front_base_type = typename std::decay<decltype(std::declval<array_type>().front())>::type;
+
2463
+
2464 static constexpr auto value = std::is_constructible<value_type, array_type>::value &&
+
2465 is_iterable<array_type>::value &&
+
2466 is_detected<value_type_t, array_type>::value &&
+
2467 std::is_same<typename array_type::value_type, value_type>::value &&
+
2468 std::is_same<front_base_type, value_type>::value;
+
2469 };
+
2470
+
2471 template<typename string_type, typename integer_type>
+
2472 using is_substr_start_end_index_signature =
+
2473 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>(),
+
2474 std::declval<integer_type>())),
+
2475 string_type>;
+
2476
+
2477 template<typename string_type, typename integer_type>
+
2478 using is_substr_start_index_signature =
+
2479 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>())),
+
2480 string_type>;
+
2481
+
2482 template<typename string_type>
+
2483 using is_std_operate_plus_signature =
+
2484 typename std::is_same<decltype(std::operator+(std::declval<string_type>(), std::declval<string_type>())),
+
2485 string_type>;
+
2486
+
2487 template<typename value_type, typename string_type, typename integer_type>
+
2488 struct is_valid_json_string {
+
2489 static constexpr auto substr = is_substr_start_end_index_signature<string_type, integer_type>::value &&
+
2490 is_substr_start_index_signature<string_type, integer_type>::value;
+
2491 static_assert(substr, "string_type must have a substr method taking only a start index and an overload "
+
2492 "taking a start and end index, both must return a string_type");
+
2493
+
2494 static constexpr auto operator_plus = is_std_operate_plus_signature<string_type>::value;
+
2495 static_assert(operator_plus,
+
2496 "string_type must have a '+' operator implemented which returns the concatenated string");
+
2497
+
2498 static constexpr auto value =
+
2499 std::is_constructible<value_type, string_type>::value && substr && operator_plus;
+
2500 };
+
2501
+
2502 template<typename value_type, typename number_type>
+
2503 struct is_valid_json_number {
+
2504 static constexpr auto value =
+
2505 std::is_floating_point<number_type>::value && std::is_constructible<value_type, number_type>::value;
+
2506 };
+
2507
+
2508 template<typename value_type, typename integer_type>
+
2509 struct is_valid_json_integer {
+
2510 static constexpr auto value = std::is_signed<integer_type>::value &&
+
2511 !std::is_floating_point<integer_type>::value &&
+
2512 std::is_constructible<value_type, integer_type>::value;
+
2513 };
+
2514 template<typename value_type, typename boolean_type>
+
2515 struct is_valid_json_boolean {
+
2516 static constexpr auto value = std::is_convertible<boolean_type, bool>::value &&
+
2517 std::is_constructible<value_type, boolean_type>::value;
+
2518 };
+
2519
+
2520 template<typename value_type, typename object_type, typename array_type, typename string_type,
+
2521 typename number_type, typename integer_type, typename boolean_type>
+
2522 struct is_valid_json_types {
+
2523 // Internal assertions for better feedback
+
2524 static_assert(is_valid_json_value<value_type>::value,
+
2525 "value_type must meet basic requirements, default constructor, copyable, moveable");
+
2526 static_assert(is_valid_json_object<value_type, string_type, object_type>::value,
+
2527 "object_type must be a string_type to value_type container");
+
2528 static_assert(is_valid_json_array<value_type, array_type>::value,
+
2529 "array_type must be a container of value_type");
+
2530
+
2531 static constexpr auto value = is_valid_json_value<value_type>::value &&
+
2532 is_valid_json_object<value_type, string_type, object_type>::value &&
+
2533 is_valid_json_array<value_type, array_type>::value &&
+
2534 is_valid_json_string<value_type, string_type, integer_type>::value &&
+
2535 is_valid_json_number<value_type, number_type>::value &&
+
2536 is_valid_json_integer<value_type, integer_type>::value &&
+
2537 is_valid_json_boolean<value_type, boolean_type>::value;
+
2538 };
+
2539 } // namespace details
+
2540
+
2548 template<typename json_traits>
+
+ +
2556 static_assert(std::is_same<typename json_traits::string_type, std::string>::value ||
+
2557 std::is_convertible<typename json_traits::string_type, std::string>::value ||
+
2558 std::is_constructible<typename json_traits::string_type, std::string>::value,
+
2559 "string_type must be a std::string, convertible to a std::string, or construct a std::string.");
+
2560
+
2561 static_assert(
+
2562 details::is_valid_json_types<typename json_traits::value_type, typename json_traits::object_type,
+
2563 typename json_traits::array_type, typename json_traits::string_type,
+
2564 typename json_traits::number_type, typename json_traits::integer_type,
+
2565 typename json_traits::boolean_type>::value,
+
2566 "must satisfy json container requirements");
+
2567 static_assert(details::is_valid_traits<json_traits>::value, "traits must satisfy requirements");
+
2568
+
2569 typename json_traits::value_type val;
+
2570
+
2571 public:
+
2575 using set_t = std::set<typename json_traits::string_type>;
+
2576
+
2577 basic_claim() = default;
+
2578 basic_claim(const basic_claim&) = default;
+
2579 basic_claim(basic_claim&&) = default;
+
2580 basic_claim& operator=(const basic_claim&) = default;
+
2581 basic_claim& operator=(basic_claim&&) = default;
+
2582 ~basic_claim() = default;
+
2583
+
2584 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::string_type s) : val(std::move(s)) {}
+
2585 JWT_CLAIM_EXPLICIT basic_claim(const date& d)
+
2586 : val(typename json_traits::integer_type(std::chrono::system_clock::to_time_t(d))) {}
+
2587 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::array_type a) : val(std::move(a)) {}
+
2588 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::value_type v) : val(std::move(v)) {}
+
2589 JWT_CLAIM_EXPLICIT basic_claim(const set_t& s) : val(typename json_traits::array_type(s.begin(), s.end())) {}
+
2590 template<typename Iterator>
+
2591 basic_claim(Iterator begin, Iterator end) : val(typename json_traits::array_type(begin, end)) {}
+
2592
+
2597 typename json_traits::value_type to_json() const { return val; }
+
2598
+
2603 std::istream& operator>>(std::istream& is) { return is >> val; }
+
2604
+
2609 std::ostream& operator<<(std::ostream& os) { return os << val; }
+
2610
+
2616 json::type get_type() const { return json_traits::get_type(val); }
+
2617
+
2623 typename json_traits::string_type as_string() const { return json_traits::as_string(val); }
+
2624
+
+
2633 date as_date() const {
+
2634 using std::chrono::system_clock;
+
2635 if (get_type() == json::type::number) return system_clock::from_time_t(std::round(as_number()));
+
2636 return system_clock::from_time_t(as_integer());
+
2637 }
+
+
2638
+
2644 typename json_traits::array_type as_array() const { return json_traits::as_array(val); }
+
2645
+
+
2651 set_t as_set() const {
+
2652 set_t res;
+
2653 for (const auto& e : json_traits::as_array(val)) {
+
2654 res.insert(json_traits::as_string(e));
+
2655 }
+
2656 return res;
+
2657 }
+
+
2658
+
2664 typename json_traits::integer_type as_integer() const { return json_traits::as_integer(val); }
+
2665
+
2671 typename json_traits::boolean_type as_boolean() const { return json_traits::as_boolean(val); }
+
2672
+
2678 typename json_traits::number_type as_number() const { return json_traits::as_number(val); }
+
2679 };
+
+
2680
+
2681 namespace error {
+
+
2685 struct invalid_json_exception : public std::runtime_error {
+
2686 invalid_json_exception() : runtime_error("invalid json") {}
+
2687 };
+
+
+
2691 struct claim_not_present_exception : public std::out_of_range {
+
2692 claim_not_present_exception() : out_of_range("claim not found") {}
+
2693 };
+
+
2694 } // namespace error
+
2695
+
2696 namespace details {
+
2697 template<typename json_traits>
+
2698 struct map_of_claims {
+
2699 typename json_traits::object_type claims;
+
2700 using basic_claim_t = basic_claim<json_traits>;
+
2701 using iterator = typename json_traits::object_type::iterator;
+
2702 using const_iterator = typename json_traits::object_type::const_iterator;
+
2703
+
2704 map_of_claims() = default;
+
2705 map_of_claims(const map_of_claims&) = default;
+
2706 map_of_claims(map_of_claims&&) = default;
+
2707 map_of_claims& operator=(const map_of_claims&) = default;
+
2708 map_of_claims& operator=(map_of_claims&&) = default;
+
2709
+
2710 map_of_claims(typename json_traits::object_type json) : claims(std::move(json)) {}
+
2711
+
2712 iterator begin() { return claims.begin(); }
+
2713 iterator end() { return claims.end(); }
+
2714 const_iterator cbegin() const { return claims.begin(); }
+
2715 const_iterator cend() const { return claims.end(); }
+
2716 const_iterator begin() const { return claims.begin(); }
+
2717 const_iterator end() const { return claims.end(); }
+
2718
+
2727 static typename json_traits::object_type parse_claims(const typename json_traits::string_type& str) {
+
2728 typename json_traits::value_type val;
+
2729 if (!json_traits::parse(val, str)) throw error::invalid_json_exception();
+
2730
+
2731 return json_traits::as_object(val);
+
2732 };
+
2733
+
2738 bool has_claim(const typename json_traits::string_type& name) const noexcept {
+
2739 return claims.count(name) != 0;
+
2740 }
+
2741
+
2749 basic_claim_t get_claim(const typename json_traits::string_type& name) const {
+
2750 if (!has_claim(name)) throw error::claim_not_present_exception();
+
2751 return basic_claim_t{claims.at(name)};
+
2752 }
+
2753 };
+
2754 } // namespace details
+
2755
+
2760 template<typename json_traits>
+
+
2761 class payload {
+
2762 protected:
+
2763 details::map_of_claims<json_traits> payload_claims;
+
2764
+
2765 public:
+ +
2767
+
2772 bool has_issuer() const noexcept { return has_payload_claim("iss"); }
+
2777 bool has_subject() const noexcept { return has_payload_claim("sub"); }
+
2782 bool has_audience() const noexcept { return has_payload_claim("aud"); }
+
2787 bool has_expires_at() const noexcept { return has_payload_claim("exp"); }
+
2792 bool has_not_before() const noexcept { return has_payload_claim("nbf"); }
+
2797 bool has_issued_at() const noexcept { return has_payload_claim("iat"); }
+
2802 bool has_id() const noexcept { return has_payload_claim("jti"); }
+
2809 typename json_traits::string_type get_issuer() const { return get_payload_claim("iss").as_string(); }
+
2816 typename json_traits::string_type get_subject() const { return get_payload_claim("sub").as_string(); }
+
+ +
2824 auto aud = get_payload_claim("aud");
+
2825 if (aud.get_type() == json::type::string) return {aud.as_string()};
+
2826
+
2827 return aud.as_set();
+
2828 }
+
+
2835 date get_expires_at() const { return get_payload_claim("exp").as_date(); }
+
2842 date get_not_before() const { return get_payload_claim("nbf").as_date(); }
+
2849 date get_issued_at() const { return get_payload_claim("iat").as_date(); }
+
2856 typename json_traits::string_type get_id() const { return get_payload_claim("jti").as_string(); }
+
+
2861 bool has_payload_claim(const typename json_traits::string_type& name) const noexcept {
+
2862 return payload_claims.has_claim(name);
+
2863 }
+
+
+
2869 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
2870 return payload_claims.get_claim(name);
+
2871 }
+
+
2872 };
+
+
2873
+
2878 template<typename json_traits>
+
+
2879 class header {
+
2880 protected:
+
2881 details::map_of_claims<json_traits> header_claims;
+
2882
+
2883 public:
+ +
2889 bool has_algorithm() const noexcept { return has_header_claim("alg"); }
+
2894 bool has_type() const noexcept { return has_header_claim("typ"); }
+
2899 bool has_content_type() const noexcept { return has_header_claim("cty"); }
+
2904 bool has_key_id() const noexcept { return has_header_claim("kid"); }
+
2911 typename json_traits::string_type get_algorithm() const { return get_header_claim("alg").as_string(); }
+
2918 typename json_traits::string_type get_type() const { return get_header_claim("typ").as_string(); }
+
2925 typename json_traits::string_type get_content_type() const { return get_header_claim("cty").as_string(); }
+
2932 typename json_traits::string_type get_key_id() const { return get_header_claim("kid").as_string(); }
+
+
2937 bool has_header_claim(const typename json_traits::string_type& name) const noexcept {
+
2938 return header_claims.has_claim(name);
+
2939 }
+
+
+
2945 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
2946 return header_claims.get_claim(name);
+
2947 }
+
+
2948 };
+
+
2949
+
2953 template<typename json_traits>
+
+
2954 class decoded_jwt : public header<json_traits>, public payload<json_traits> {
+
2955 protected:
+
2957 typename json_traits::string_type token;
+
2959 typename json_traits::string_type header;
+
2961 typename json_traits::string_type header_base64;
+
2963 typename json_traits::string_type payload;
+
2965 typename json_traits::string_type payload_base64;
+
2967 typename json_traits::string_type signature;
+
2969 typename json_traits::string_type signature_base64;
+
2970
+
2971 public:
+ +
2973#ifndef JWT_DISABLE_BASE64
+
+
2983 JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type& token)
+
2984 : decoded_jwt(token, [](const typename json_traits::string_type& str) {
+
2985 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(str));
+
2986 }) {}
+
+
2987#endif
+
2999 template<typename Decode>
+
+
3000 decoded_jwt(const typename json_traits::string_type& token, Decode decode) : token(token) {
+
3001 auto hdr_end = token.find('.');
+
3002 if (hdr_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
3003 auto payload_end = token.find('.', hdr_end + 1);
+
3004 if (payload_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
3005 header_base64 = token.substr(0, hdr_end);
+
3006 payload_base64 = token.substr(hdr_end + 1, payload_end - hdr_end - 1);
+
3007 signature_base64 = token.substr(payload_end + 1);
+
3008
+ + + +
3012
+
3013 this->header_claims = details::map_of_claims<json_traits>::parse_claims(header);
+
3014 this->payload_claims = details::map_of_claims<json_traits>::parse_claims(payload);
+
3015 }
+
+
3016
+
3021 const typename json_traits::string_type& get_token() const noexcept { return token; }
+
3026 const typename json_traits::string_type& get_header() const noexcept { return header; }
+
3031 const typename json_traits::string_type& get_payload() const noexcept { return payload; }
+
3036 const typename json_traits::string_type& get_signature() const noexcept { return signature; }
+
3041 const typename json_traits::string_type& get_header_base64() const noexcept { return header_base64; }
+
3046 const typename json_traits::string_type& get_payload_base64() const noexcept { return payload_base64; }
+
3051 const typename json_traits::string_type& get_signature_base64() const noexcept { return signature_base64; }
+
3056 typename json_traits::object_type get_payload_json() const { return this->payload_claims.claims; }
+
3061 typename json_traits::object_type get_header_json() const { return this->header_claims.claims; }
+
+
3069 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
3070 return this->payload_claims.get_claim(name);
+
3071 }
+
+
+
3079 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
3080 return this->header_claims.get_claim(name);
+
3081 }
+
+
3082 };
+
+
3083
+
3088 template<typename Clock, typename json_traits>
+
+
3089 class builder {
+
3090 typename json_traits::object_type header_claims;
+
3091 typename json_traits::object_type payload_claims;
+
3092
+
3094 Clock clock;
+
3095
+
3096 public:
+
3101 JWT_CLAIM_EXPLICIT builder(Clock c) : clock(c) {}
+
+
3108 builder& set_header_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
3109 header_claims[id] = std::move(c);
+
3110 return *this;
+
3111 }
+
+
3112
+
+
3119 builder& set_header_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
3120 header_claims[id] = c.to_json();
+
3121 return *this;
+
3122 }
+
+
+
3129 builder& set_payload_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
3130 payload_claims[id] = std::move(c);
+
3131 return *this;
+
3132 }
+
+
+
3139 builder& set_payload_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
3140 payload_claims[id] = c.to_json();
+
3141 return *this;
+
3142 }
+
+
+
3150 builder& set_algorithm(typename json_traits::string_type str) {
+
3151 return set_header_claim("alg", typename json_traits::value_type(str));
+
3152 }
+
+
+
3158 builder& set_type(typename json_traits::string_type str) {
+
3159 return set_header_claim("typ", typename json_traits::value_type(str));
+
3160 }
+
+
+
3166 builder& set_content_type(typename json_traits::string_type str) {
+
3167 return set_header_claim("cty", typename json_traits::value_type(str));
+
3168 }
+
+
+
3175 builder& set_key_id(typename json_traits::string_type str) {
+
3176 return set_header_claim("kid", typename json_traits::value_type(str));
+
3177 }
+
+
+
3183 builder& set_issuer(typename json_traits::string_type str) {
+
3184 return set_payload_claim("iss", typename json_traits::value_type(str));
+
3185 }
+
+
+
3191 builder& set_subject(typename json_traits::string_type str) {
+
3192 return set_payload_claim("sub", typename json_traits::value_type(str));
+
3193 }
+
+
+
3199 builder& set_audience(typename json_traits::array_type a) {
+
3200 return set_payload_claim("aud", typename json_traits::value_type(a));
+
3201 }
+
+
+
3207 builder& set_audience(typename json_traits::string_type aud) {
+
3208 return set_payload_claim("aud", typename json_traits::value_type(aud));
+
3209 }
+
+ +
3221 template<class Rep>
+
+
3222 builder& set_expires_in(const std::chrono::duration<Rep>& d) {
+
3223 return set_payload_claim("exp", basic_claim<json_traits>(clock.now() + d));
+
3224 }
+
+ + +
3241 builder& set_issued_now() { return set_issued_at(clock.now()); }
+
+
3247 builder& set_id(const typename json_traits::string_type& str) {
+
3248 return set_payload_claim("jti", typename json_traits::value_type(str));
+
3249 }
+
+
3250
+
3262 template<typename Algo, typename Encode>
+
+
3263 typename json_traits::string_type sign(const Algo& algo, Encode encode) const {
+
3264 std::error_code ec;
+
3265 auto res = sign(algo, encode, ec);
+ +
3267 return res;
+
3268 }
+
+
3269#ifndef JWT_DISABLE_BASE64
+
3278 template<typename Algo>
+
+
3279 typename json_traits::string_type sign(const Algo& algo) const {
+
3280 std::error_code ec;
+
3281 auto res = sign(algo, ec);
+ +
3283 return res;
+
3284 }
+
+
3285#endif
+
3286
+
3299 template<typename Algo, typename Encode>
+
+
3300 typename json_traits::string_type sign(const Algo& algo, Encode encode, std::error_code& ec) const {
+
3301 // make a copy such that a builder can be re-used
+
3302 typename json_traits::object_type obj_header = header_claims;
+
3303 if (header_claims.count("alg") == 0) obj_header["alg"] = typename json_traits::value_type(algo.name());
+
3304
+
3305 const auto header = encode(json_traits::serialize(typename json_traits::value_type(obj_header)));
+
3306 const auto payload = encode(json_traits::serialize(typename json_traits::value_type(payload_claims)));
+
3307 const auto token = header + "." + payload;
+
3308
+
3309 auto signature = algo.sign(token, ec);
+
3310 if (ec) return {};
+
3311
+
3312 return token + "." + encode(signature);
+
3313 }
+
+
3314#ifndef JWT_DISABLE_BASE64
+
3324 template<typename Algo>
+
+
3325 typename json_traits::string_type sign(const Algo& algo, std::error_code& ec) const {
+
3326 return sign(
+
3327 algo,
+
3328 [](const typename json_traits::string_type& data) {
+
3329 return base::trim<alphabet::base64url>(base::encode<alphabet::base64url>(data));
+
3330 },
+
3331 ec);
+
3332 }
+
+
3333#endif
+
3334 };
+
+
3335
+
3336 namespace verify_ops {
+
3340 template<typename json_traits>
+
+ +
3342 verify_context(date ctime, const decoded_jwt<json_traits>& j, size_t l)
+
3343 : current_time(ctime), jwt(j), default_leeway(l) {}
+ + + +
3350
+
3352 typename json_traits::string_type claim_key{};
+
3353
+
+
3360 basic_claim<json_traits> get_claim(bool in_header, std::error_code& ec) const {
+
3361 if (in_header) {
+
3362 if (!jwt.has_header_claim(claim_key)) {
+
3363 ec = error::token_verification_error::missing_claim;
+
3364 return {};
+
3365 }
+
3366 return jwt.get_header_claim(claim_key);
+
3367 } else {
+
3368 if (!jwt.has_payload_claim(claim_key)) {
+
3369 ec = error::token_verification_error::missing_claim;
+
3370 return {};
+
3371 }
+
3372 return jwt.get_payload_claim(claim_key);
+
3373 }
+
3374 }
+
+
+
3382 basic_claim<json_traits> get_claim(bool in_header, json::type t, std::error_code& ec) const {
+
3383 auto c = get_claim(in_header, ec);
+
3384 if (ec) return {};
+
3385 if (c.get_type() != t) {
+
3386 ec = error::token_verification_error::claim_type_missmatch;
+
3387 return {};
+
3388 }
+
3389 return c;
+
3390 }
+
+
3396 basic_claim<json_traits> get_claim(std::error_code& ec) const { return get_claim(false, ec); }
+
+
3403 basic_claim<json_traits> get_claim(json::type t, std::error_code& ec) const {
+
3404 return get_claim(false, t, ec);
+
3405 }
+
+
3406 };
+
+
3407
+
3411 template<typename json_traits, bool in_header = false>
+
+ +
3413 const basic_claim<json_traits> expected;
+
3414 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3415 auto jc = ctx.get_claim(in_header, expected.get_type(), ec);
+
3416 if (ec) return;
+
3417 const bool matches = [&]() {
+
3418 switch (expected.get_type()) {
+
3419 case json::type::boolean: return expected.as_boolean() == jc.as_boolean();
+
3420 case json::type::integer: return expected.as_integer() == jc.as_integer();
+
3421 case json::type::number: return expected.as_number() == jc.as_number();
+
3422 case json::type::string: return expected.as_string() == jc.as_string();
+
3423 case json::type::array:
+
3424 case json::type::object:
+
3425 return json_traits::serialize(expected.to_json()) == json_traits::serialize(jc.to_json());
+
3426 default: throw std::logic_error("internal error, should be unreachable");
+
3427 }
+
3428 }();
+
3429 if (!matches) {
+
3430 ec = error::token_verification_error::claim_value_missmatch;
+
3431 return;
+
3432 }
+
3433 }
+
3434 };
+
+
3435
+
3440 template<typename json_traits, bool in_header = false>
+
+ +
3442 const size_t leeway;
+
3443 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3444 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
3445 if (ec) return;
+
3446 auto c = jc.as_date();
+
3447 if (ctx.current_time > c + std::chrono::seconds(leeway)) {
+
3448 ec = error::token_verification_error::token_expired;
+
3449 }
+
3450 }
+
3451 };
+
+
3452
+
3457 template<typename json_traits, bool in_header = false>
+
+ +
3459 const size_t leeway;
+
3460 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3461 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
3462 if (ec) return;
+
3463 auto c = jc.as_date();
+
3464 if (ctx.current_time < c - std::chrono::seconds(leeway)) {
+
3465 ec = error::token_verification_error::token_expired;
+
3466 }
+
3467 }
+
3468 };
+
+
3469
+
3475 template<typename json_traits, bool in_header = false>
+
+ +
3477 const typename basic_claim<json_traits>::set_t expected;
+
3478 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3479 auto c = ctx.get_claim(in_header, ec);
+
3480 if (ec) return;
+
3481 if (c.get_type() == json::type::string) {
+
3482 if (expected.size() != 1 || *expected.begin() != c.as_string()) {
+
3483 ec = error::token_verification_error::audience_missmatch;
+
3484 return;
+
3485 }
+
3486 } else if (c.get_type() == json::type::array) {
+
3487 auto jc = c.as_set();
+
3488 for (auto& e : expected) {
+
3489 if (jc.find(e) == jc.end()) {
+
3490 ec = error::token_verification_error::audience_missmatch;
+
3491 return;
+
3492 }
+
3493 }
+
3494 } else {
+
3495 ec = error::token_verification_error::claim_type_missmatch;
+
3496 return;
+
3497 }
+
3498 }
+
3499 };
+
+
3500
+
3504 template<typename json_traits, bool in_header = false>
+
+ +
3506 const typename json_traits::string_type expected;
+
3507 std::locale locale;
+
3508 insensitive_string_claim(const typename json_traits::string_type& e, std::locale loc)
+
3509 : expected(to_lower_unicode(e, loc)), locale(loc) {}
+
3510
+
3511 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3512 const auto c = ctx.get_claim(in_header, json::type::string, ec);
+
3513 if (ec) return;
+
3514 if (to_lower_unicode(c.as_string(), locale) != expected) {
+
3515 ec = error::token_verification_error::claim_value_missmatch;
+
3516 }
+
3517 }
+
3518
+
3519 static std::string to_lower_unicode(const std::string& str, const std::locale& loc) {
+
3520 std::mbstate_t state = std::mbstate_t();
+
3521 const char* in_next = str.data();
+
3522 const char* in_end = str.data() + str.size();
+
3523 std::wstring wide;
+
3524 wide.reserve(str.size());
+
3525
+
3526 while (in_next != in_end) {
+
3527 wchar_t wc;
+
3528 std::size_t result = std::mbrtowc(&wc, in_next, in_end - in_next, &state);
+
3529 if (result == static_cast<std::size_t>(-1)) {
+
3530 throw std::runtime_error("encoding error: " + std::string(std::strerror(errno)));
+
3531 } else if (result == static_cast<std::size_t>(-2)) {
+
3532 throw std::runtime_error("conversion error: next bytes constitute an incomplete, but so far "
+
3533 "valid, multibyte character.");
+
3534 }
+
3535 in_next += result;
+
3536 wide.push_back(wc);
+
3537 }
+
3538
+
3539 auto& f = std::use_facet<std::ctype<wchar_t>>(loc);
+
3540 f.tolower(&wide[0], &wide[0] + wide.size());
+
3541
+
3542 std::string out;
+
3543 out.reserve(wide.size());
+
3544 for (wchar_t wc : wide) {
+
3545 char mb[MB_LEN_MAX];
+
3546 std::size_t n = std::wcrtomb(mb, wc, &state);
+
3547 if (n != static_cast<std::size_t>(-1)) out.append(mb, n);
+
3548 }
+
3549
+
3550 return out;
+
3551 }
+
3552 };
+
+
3553 } // namespace verify_ops
+
3554
+
3559 template<typename Clock, typename json_traits>
+
+
3560 class verifier {
+
3561 public:
+ + +
3573 std::function<void(const verify_ops::verify_context<json_traits>&, std::error_code& ec)>;
+
3574
+
3575 private:
+
3576 struct algo_base {
+
3577 virtual ~algo_base() = default;
+
3578 virtual void verify(const std::string& data, const std::string& sig, std::error_code& ec) = 0;
+
3579 };
+
3580 template<typename T>
+
3581 struct algo : public algo_base {
+
3582 T alg;
+
3583 explicit algo(T a) : alg(a) {}
+
3584 void verify(const std::string& data, const std::string& sig, std::error_code& ec) override {
+
3585 alg.verify(data, sig, ec);
+
3586 }
+
3587 };
+
3589 std::unordered_map<typename json_traits::string_type, verify_check_fn_t> claims;
+
3591 size_t default_leeway = 0;
+
3593 Clock clock;
+
3595 std::unordered_map<std::string, std::shared_ptr<algo_base>> algs;
+
3596
+
3597 public:
+
+
3602 explicit verifier(Clock c) : clock(c) {
+
3603 claims["exp"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3604 if (!ctx.jwt.has_expires_at()) return;
+
3605 auto exp = ctx.jwt.get_expires_at();
+
3606 if (ctx.current_time > exp + std::chrono::seconds(ctx.default_leeway)) {
+
3607 ec = error::token_verification_error::token_expired;
+
3608 }
+
3609 };
+
3610 claims["iat"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3611 if (!ctx.jwt.has_issued_at()) return;
+
3612 auto iat = ctx.jwt.get_issued_at();
+
3613 if (ctx.current_time < iat - std::chrono::seconds(ctx.default_leeway)) {
+
3614 ec = error::token_verification_error::token_expired;
+
3615 }
+
3616 };
+
3617 claims["nbf"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3618 if (!ctx.jwt.has_not_before()) return;
+
3619 auto nbf = ctx.jwt.get_not_before();
+
3620 if (ctx.current_time < nbf - std::chrono::seconds(ctx.default_leeway)) {
+
3621 ec = error::token_verification_error::token_expired;
+
3622 }
+
3623 };
+
3624 }
+
+
3625
+
+ +
3632 default_leeway = leeway;
+
3633 return *this;
+
3634 }
+
+
+ + +
3643 return *this;
+
3644 }
+
+
+ + +
3653 return *this;
+
3654 }
+
+
+ + +
3663 return *this;
+
3664 }
+
+
3665
+
+
3677 verifier& with_type(const typename json_traits::string_type& type, std::locale locale = std::locale{}) {
+
3678 return with_claim("typ", verify_ops::insensitive_string_claim<json_traits, true>{type, std::move(locale)});
+
3679 }
+
+
3680
+
+
3687 verifier& with_issuer(const typename json_traits::string_type& iss) {
+
3688 return with_claim("iss", basic_claim_t(iss));
+
3689 }
+
+
3690
+
+
3697 verifier& with_subject(const typename json_traits::string_type& sub) {
+
3698 return with_claim("sub", basic_claim_t(sub));
+
3699 }
+
+
+ +
3707 claims["aud"] = verify_ops::is_subset_claim<json_traits>{aud};
+
3708 return *this;
+
3709 }
+
+
+
3716 verifier& with_audience(const typename json_traits::string_type& aud) {
+
3717 typename basic_claim_t::set_t s;
+
3718 s.insert(aud);
+
3719 return with_audience(s);
+
3720 }
+
+
3727 verifier& with_id(const typename json_traits::string_type& id) { return with_claim("jti", basic_claim_t(id)); }
+
3728
+
+
3740 verifier& with_claim(const typename json_traits::string_type& name, verify_check_fn_t fn) {
+
3741 claims[name] = fn;
+
3742 return *this;
+
3743 }
+
+
3744
+
+
3755 verifier& with_claim(const typename json_traits::string_type& name, basic_claim_t c) {
+ +
3757 }
+
+
3758
+
3772 template<typename Algorithm>
+
+
3773 verifier& allow_algorithm(Algorithm alg) {
+
3774 algs[alg.name()] = std::make_shared<algo<Algorithm>>(alg);
+
3775 return *this;
+
3776 }
+
+
3777
+
+ +
3784 std::error_code ec;
+
3785 verify(jwt, ec);
+ +
3787 }
+
+
+
3793 void verify(const decoded_jwt<json_traits>& jwt, std::error_code& ec) const {
+
3794 ec.clear();
+
3795 const typename json_traits::string_type data = jwt.get_header_base64() + "." + jwt.get_payload_base64();
+
3796 const typename json_traits::string_type sig = jwt.get_signature();
+
3797 const std::string algo = jwt.get_algorithm();
+
3798 if (algs.count(algo) == 0) {
+
3799 ec = error::token_verification_error::wrong_algorithm;
+
3800 return;
+
3801 }
+
3802 algs.at(algo)->verify(data, sig, ec);
+
3803 if (ec) return;
+
3804
+
3805 verify_ops::verify_context<json_traits> ctx{clock.now(), jwt, default_leeway};
+
3806 for (auto& c : claims) {
+
3807 ctx.claim_key = c.first;
+
3808 c.second(ctx, ec);
+
3809 if (ec) return;
+
3810 }
+
3811 }
+
+
3812 };
+
+
3813
+
3822 template<typename json_traits>
+
+
3823 class jwk {
+ +
3825 const details::map_of_claims<json_traits> jwk_claims;
+
3826
+
3827 public:
+
3828 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::string_type& str)
+
3829 : jwk_claims(details::map_of_claims<json_traits>::parse_claims(str)) {}
+
3830
+
3831 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::value_type& json)
+
3832 : jwk_claims(json_traits::as_object(json)) {}
+
3833
+
3842 typename json_traits::string_type get_key_type() const { return get_jwk_claim("kty").as_string(); }
+
3843
+
3850 typename json_traits::string_type get_use() const { return get_jwk_claim("use").as_string(); }
+
3851
+
3858 typename basic_claim_t::set_t get_key_operations() const { return get_jwk_claim("key_ops").as_set(); }
+
3859
+
3866 typename json_traits::string_type get_algorithm() const { return get_jwk_claim("alg").as_string(); }
+
3867
+
3874 typename json_traits::string_type get_key_id() const { return get_jwk_claim("kid").as_string(); }
+
3875
+
3886 typename json_traits::string_type get_curve() const { return get_jwk_claim("crv").as_string(); }
+
3887
+
3894 typename json_traits::array_type get_x5c() const { return get_jwk_claim("x5c").as_array(); };
+
3895
+
3902 typename json_traits::string_type get_x5u() const { return get_jwk_claim("x5u").as_string(); };
+
3903
+
3910 typename json_traits::string_type get_x5t() const { return get_jwk_claim("x5t").as_string(); };
+
3911
+
3918 typename json_traits::string_type get_x5t_sha256() const { return get_jwk_claim("x5t#S256").as_string(); };
+
3919
+
+
3926 typename json_traits::string_type get_x5c_key_value() const {
+
3927 auto x5c_array = get_jwk_claim("x5c").as_array();
+
3928 if (x5c_array.size() == 0) throw error::claim_not_present_exception();
+
3929
+
3930 return json_traits::as_string(x5c_array.front());
+
3931 };
+
+
3932
+
3937 bool has_key_type() const noexcept { return has_jwk_claim("kty"); }
+
3938
+
3943 bool has_use() const noexcept { return has_jwk_claim("use"); }
+
3944
+
3949 bool has_key_operations() const noexcept { return has_jwk_claim("key_ops"); }
+
3950
+
3955 bool has_algorithm() const noexcept { return has_jwk_claim("alg"); }
+
3956
+
3961 bool has_curve() const noexcept { return has_jwk_claim("crv"); }
+
3962
+
3967 bool has_key_id() const noexcept { return has_jwk_claim("kid"); }
+
3968
+
3973 bool has_x5u() const noexcept { return has_jwk_claim("x5u"); }
+
3974
+
3979 bool has_x5c() const noexcept { return has_jwk_claim("x5c"); }
+
3980
+
3985 bool has_x5t() const noexcept { return has_jwk_claim("x5t"); }
+
3986
+
3991 bool has_x5t_sha256() const noexcept { return has_jwk_claim("x5t#S256"); }
+
3992
+
+
3997 bool has_jwk_claim(const typename json_traits::string_type& name) const noexcept {
+
3998 return jwk_claims.has_claim(name);
+
3999 }
+
+
4000
+
+
4006 basic_claim_t get_jwk_claim(const typename json_traits::string_type& name) const {
+
4007 return jwk_claims.get_claim(name);
+
4008 }
+
+
4009
+
4014 bool empty() const noexcept { return jwk_claims.empty(); }
+
4015
+
4020 typename json_traits::object_type get_claims() const { return this->jwk_claims.claims; }
+
4021 };
+
+
4022
+
4033 template<typename json_traits>
+
+
4034 class jwks {
+
4035 public:
+ +
4039 using jwks_vector_t = std::vector<jwks_t>;
+
4040 using iterator = typename jwks_vector_t::iterator;
+
4041 using const_iterator = typename jwks_vector_t::const_iterator;
+
4042
+
4046 jwks() = default;
+
4047
+
+
4054 JWT_CLAIM_EXPLICIT jwks(const typename json_traits::string_type& str) {
+
4055 typename json_traits::value_type parsed_val;
+
4056 if (!json_traits::parse(parsed_val, str)) throw error::invalid_json_exception();
+
4057
+
4058 const details::map_of_claims<json_traits> jwks_json = json_traits::as_object(parsed_val);
+
4059 if (!jwks_json.has_claim("keys")) throw error::invalid_json_exception();
+
4060
+
4061 auto jwk_list = jwks_json.get_claim("keys").as_array();
+
4062 std::transform(jwk_list.begin(), jwk_list.end(), std::back_inserter(jwk_claims),
+
4063 [](const typename json_traits::value_type& val) { return jwks_t{val}; });
+
4064 }
+
+
4065
+
4066 iterator begin() { return jwk_claims.begin(); }
+
4067 iterator end() { return jwk_claims.end(); }
+
4068 const_iterator cbegin() const { return jwk_claims.begin(); }
+
4069 const_iterator cend() const { return jwk_claims.end(); }
+
4070 const_iterator begin() const { return jwk_claims.begin(); }
+
4071 const_iterator end() const { return jwk_claims.end(); }
+
4072
+
+
4077 bool has_jwk(const typename json_traits::string_type& key_id) const noexcept {
+
4078 return find_by_kid(key_id) != end();
+
4079 }
+
+
4080
+
+
4086 jwks_t get_jwk(const typename json_traits::string_type& key_id) const {
+
4087 const auto maybe = find_by_kid(key_id);
+
4088 if (maybe == end()) throw error::claim_not_present_exception();
+
4089 return *maybe;
+
4090 }
+
+
4091
+
4092 private:
+
4093 jwks_vector_t jwk_claims;
+
4094
+
4095 const_iterator find_by_kid(const typename json_traits::string_type& key_id) const noexcept {
+
4096 return std::find_if(cbegin(), cend(), [key_id](const jwks_t& jwk) {
+
4097 if (!jwk.has_key_id()) { return false; }
+
4098 return jwk.get_key_id() == key_id;
+
4099 });
+
4100 }
+
4101 };
+
+
4102
+
4108 template<typename Clock, typename json_traits>
+
+ + +
4111 }
+
+
4112
+
4118 template<typename Clock, typename json_traits>
+
+ + +
4121 }
+
+
4122
+
+ +
4131 date now() const { return date::clock::now(); }
+
4132 };
+
+
4133
+
4142 template<typename json_traits>
+
+ +
4144 return verifier<default_clock, json_traits>(c);
+
4145 }
+
+
4146
+
4150 template<typename json_traits>
+
+ +
4152 return builder<default_clock, json_traits>(c);
+
4153 }
+
+
4154
+
4169 template<typename json_traits, typename Decode>
+
+
4170 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token, Decode decode) {
+
4171 return decoded_jwt<json_traits>(token, decode);
+
4172 }
+
+
4173
+
4184 template<typename json_traits>
+
+
4185 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token) {
+
4186 return decoded_jwt<json_traits>(token);
+
4187 }
+
+
4194 template<typename json_traits>
+
+
4195 jwk<json_traits> parse_jwk(const typename json_traits::string_type& jwk_) {
+
4196 return jwk<json_traits>(jwk_);
+
4197 }
+
+
4208 template<typename json_traits>
+
+
4209 jwks<json_traits> parse_jwks(const typename json_traits::string_type& jwks_) {
+
4210 return jwks<json_traits>(jwks_);
+
4211 }
+
+
4212} // namespace jwt
+
4213
+
4214template<typename json_traits>
+
4215std::istream& operator>>(std::istream& is, jwt::basic_claim<json_traits>& c) {
+
4216 return c.operator>>(is);
+
4217}
+
4218
+
4219template<typename json_traits>
+
4220std::ostream& operator<<(std::ostream& os, const jwt::basic_claim<json_traits>& c) {
+
4221 return os << c.to_json();
+
4222}
+
4223
+
4224#ifndef JWT_DISABLE_PICOJSON
+
4225#include "traits/kazuho-picojson/defaults.h"
+
4226#endif
+
4227
+
4228#endif
+
a class to store a generic JSON value as claim
Definition jwt.h:2549
+
json_traits::number_type as_number() const
Definition jwt.h:2678
+
set_t as_set() const
Definition jwt.h:2651
+
json::type get_type() const
Definition jwt.h:2616
+
std::set< typename json_traits::string_type > set_t
Definition jwt.h:2575
+
std::istream & operator>>(std::istream &is)
Definition jwt.h:2603
+
json_traits::boolean_type as_boolean() const
Definition jwt.h:2671
+
date as_date() const
Get the contained JSON value as a date.
Definition jwt.h:2633
+
std::ostream & operator<<(std::ostream &os)
Definition jwt.h:2609
+
json_traits::integer_type as_integer() const
Definition jwt.h:2664
+
json_traits::value_type to_json() const
Definition jwt.h:2597
+
json_traits::array_type as_array() const
Definition jwt.h:2644
+
json_traits::string_type as_string() const
Definition jwt.h:2623
+
Definition jwt.h:3089
+
builder & set_audience(typename json_traits::string_type aud)
Definition jwt.h:3207
+
builder & set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:3139
+
builder & set_expires_in(const std::chrono::duration< Rep > &d)
Definition jwt.h:3222
+
builder & set_algorithm(typename json_traits::string_type str)
Set algorithm claim You normally don't need to do this, as the algorithm is automatically set if you ...
Definition jwt.h:3150
+
builder & set_expires_at(const date &d)
Definition jwt.h:3215
+
builder & set_type(typename json_traits::string_type str)
Definition jwt.h:3158
+
JWT_CLAIM_EXPLICIT builder(Clock c)
Definition jwt.h:3101
+
json_traits::string_type sign(const Algo &algo, std::error_code &ec) const
Definition jwt.h:3325
+
builder & set_issued_at(const date &d)
Definition jwt.h:3236
+
json_traits::string_type sign(const Algo &algo) const
Definition jwt.h:3279
+
builder & set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:3129
+
builder & set_id(const typename json_traits::string_type &str)
Definition jwt.h:3247
+
builder & set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:3108
+
builder & set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:3119
+
json_traits::string_type sign(const Algo &algo, Encode encode) const
Definition jwt.h:3263
+
builder & set_audience(typename json_traits::array_type a)
Definition jwt.h:3199
+
json_traits::string_type sign(const Algo &algo, Encode encode, std::error_code &ec) const
Definition jwt.h:3300
+
builder & set_content_type(typename json_traits::string_type str)
Definition jwt.h:3166
+
builder & set_not_before(const date &d)
Definition jwt.h:3230
+
builder & set_subject(typename json_traits::string_type str)
Definition jwt.h:3191
+
builder & set_issued_now()
Definition jwt.h:3241
+
builder & set_key_id(typename json_traits::string_type str)
Set key id claim.
Definition jwt.h:3175
+
builder & set_issuer(typename json_traits::string_type str)
Definition jwt.h:3183
+
Definition jwt.h:2954
+
const json_traits::string_type & get_header() const noexcept
Definition jwt.h:3026
+
const json_traits::string_type & get_signature_base64() const noexcept
Definition jwt.h:3051
+
json_traits::string_type signature
Signature part decoded from base64.
Definition jwt.h:2967
+
json_traits::string_type header
Header part decoded from base64.
Definition jwt.h:2959
+
json_traits::string_type header_base64
Unmodified header part in base64.
Definition jwt.h:2961
+
json_traits::string_type token
Unmodified token, as passed to constructor.
Definition jwt.h:2957
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:3069
+
const json_traits::string_type & get_signature() const noexcept
Definition jwt.h:3036
+
JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type &token)
Parses a given token.
Definition jwt.h:2983
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:3079
+
decoded_jwt(const typename json_traits::string_type &token, Decode decode)
Parses a given token.
Definition jwt.h:3000
+
json_traits::object_type get_payload_json() const
Definition jwt.h:3056
+
json_traits::string_type signature_base64
Unmodified signature part in base64.
Definition jwt.h:2969
+
const json_traits::string_type & get_payload_base64() const noexcept
Definition jwt.h:3046
+
const json_traits::string_type & get_token() const noexcept
Definition jwt.h:3021
+
json_traits::object_type get_header_json() const
Definition jwt.h:3061
+
const json_traits::string_type & get_payload() const noexcept
Definition jwt.h:3031
+
const json_traits::string_type & get_header_base64() const noexcept
Definition jwt.h:3041
+
json_traits::string_type payload_base64
Unmodified payload part in base64.
Definition jwt.h:2965
+
json_traits::string_type payload
Payload part decoded from base64.
Definition jwt.h:2963
+
Definition jwt.h:2879
+
json_traits::string_type get_type() const
Definition jwt.h:2918
+
bool has_header_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:2937
+
bool has_algorithm() const noexcept
Definition jwt.h:2889
+
bool has_type() const noexcept
Definition jwt.h:2894
+
json_traits::string_type get_algorithm() const
Definition jwt.h:2911
+
bool has_content_type() const noexcept
Definition jwt.h:2899
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2945
+
json_traits::string_type get_key_id() const
Definition jwt.h:2932
+
json_traits::string_type get_content_type() const
Definition jwt.h:2925
+
bool has_key_id() const noexcept
Definition jwt.h:2904
+
Handle class for EVP_PKEY structures.
Definition jwt.h:425
+
constexpr evp_pkey_handle() noexcept=default
Creates a null key pointer.
+
constexpr evp_pkey_handle(EVP_PKEY *key) noexcept
Construct a new handle. The handle takes ownership of the key.
Definition jwt.h:449
+
JSON Web Key.
Definition jwt.h:3823
+
bool has_x5c() const noexcept
Definition jwt.h:3979
+
json_traits::string_type get_curve() const
Get curve claim.
Definition jwt.h:3886
+
bool has_x5t_sha256() const noexcept
Definition jwt.h:3991
+
json_traits::string_type get_algorithm() const
Definition jwt.h:3866
+
json_traits::array_type get_x5c() const
Definition jwt.h:3894
+
json_traits::object_type get_claims() const
Definition jwt.h:4020
+
json_traits::string_type get_x5t() const
Definition jwt.h:3910
+
json_traits::string_type get_x5c_key_value() const
Definition jwt.h:3926
+
json_traits::string_type get_x5t_sha256() const
Definition jwt.h:3918
+
json_traits::string_type get_key_id() const
Definition jwt.h:3874
+
bool has_algorithm() const noexcept
Definition jwt.h:3955
+
json_traits::string_type get_use() const
Definition jwt.h:3850
+
bool has_key_id() const noexcept
Definition jwt.h:3967
+
bool has_x5u() const noexcept
Definition jwt.h:3973
+
bool has_key_operations() const noexcept
Definition jwt.h:3949
+
bool empty() const noexcept
Definition jwt.h:4014
+
bool has_use() const noexcept
Definition jwt.h:3943
+
bool has_x5t() const noexcept
Definition jwt.h:3985
+
bool has_jwk_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:3997
+
basic_claim_t::set_t get_key_operations() const
Definition jwt.h:3858
+
bool has_curve() const noexcept
Definition jwt.h:3961
+
bool has_key_type() const noexcept
Definition jwt.h:3937
+
basic_claim_t get_jwk_claim(const typename json_traits::string_type &name) const
Definition jwt.h:4006
+
json_traits::string_type get_x5u() const
Definition jwt.h:3902
+
json_traits::string_type get_key_type() const
Definition jwt.h:3842
+
JWK Set.
Definition jwt.h:4034
+
jwks_t get_jwk(const typename json_traits::string_type &key_id) const
Definition jwt.h:4086
+
jwks()=default
+
std::vector< jwks_t > jwks_vector_t
Type specialization for the vector of JWK.
Definition jwt.h:4039
+
JWT_CLAIM_EXPLICIT jwks(const typename json_traits::string_type &str)
Definition jwt.h:4054
+
bool has_jwk(const typename json_traits::string_type &key_id) const noexcept
Definition jwt.h:4077
+
Definition jwt.h:2761
+
basic_claim_t::set_t get_audience() const
Definition jwt.h:2823
+
json_traits::string_type get_id() const
Definition jwt.h:2856
+
bool has_issued_at() const noexcept
Definition jwt.h:2797
+
bool has_not_before() const noexcept
Definition jwt.h:2792
+
bool has_payload_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:2861
+
bool has_subject() const noexcept
Definition jwt.h:2777
+
date get_not_before() const
Definition jwt.h:2842
+
bool has_issuer() const noexcept
Definition jwt.h:2772
+
bool has_id() const noexcept
Definition jwt.h:2802
+
bool has_expires_at() const noexcept
Definition jwt.h:2787
+
date get_issued_at() const
Definition jwt.h:2849
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2869
+
bool has_audience() const noexcept
Definition jwt.h:2782
+
date get_expires_at() const
Definition jwt.h:2835
+
json_traits::string_type get_subject() const
Definition jwt.h:2816
+
json_traits::string_type get_issuer() const
Definition jwt.h:2809
+
Definition jwt.h:3560
+
verifier & expires_at_leeway(size_t leeway)
Definition jwt.h:3641
+
verifier & with_claim(const typename json_traits::string_type &name, verify_check_fn_t fn)
Definition jwt.h:3740
+
void verify(const decoded_jwt< json_traits > &jwt, std::error_code &ec) const
Definition jwt.h:3793
+
std::function< void(const verify_ops::verify_context< json_traits > &, std::error_code &ec)> verify_check_fn_t
Verification function data structure.
Definition jwt.h:3572
+
verifier & not_before_leeway(size_t leeway)
Definition jwt.h:3651
+
verifier & issued_at_leeway(size_t leeway)
Definition jwt.h:3661
+
verifier & with_subject(const typename json_traits::string_type &sub)
Definition jwt.h:3697
+
verifier & with_audience(const typename basic_claim_t::set_t &aud)
Definition jwt.h:3706
+
verifier & with_claim(const typename json_traits::string_type &name, basic_claim_t c)
Definition jwt.h:3755
+
verifier & with_audience(const typename json_traits::string_type &aud)
Definition jwt.h:3716
+
void verify(const decoded_jwt< json_traits > &jwt) const
Definition jwt.h:3783
+
verifier(Clock c)
Definition jwt.h:3602
+
verifier & leeway(size_t leeway)
Definition jwt.h:3631
+
verifier & with_issuer(const typename json_traits::string_type &iss)
Definition jwt.h:3687
+
verifier & allow_algorithm(Algorithm alg)
Add an algorithm available for checking.
Definition jwt.h:3773
+
verifier & with_type(const typename json_traits::string_type &type, std::locale locale=std::locale{})
Definition jwt.h:3677
+
verifier & with_id(const typename json_traits::string_type &id)
Definition jwt.h:3727
+
signature_verification_error
Errors related to verification of signatures.
Definition jwt.h:216
+
std::error_category & token_verification_error_category()
Error category for token verification errors.
Definition jwt.h:351
+
void throw_if_error(std::error_code ec)
Raises an exception if any JWT-CPP error codes are active.
Definition jwt.h:383
+
std::error_category & ecdsa_error_category()
Error category for ECDSA errors.
Definition jwt.h:179
+
std::error_category & signature_verification_error_category()
Error category for verification errors.
Definition jwt.h:230
+
std::error_category & rsa_error_category()
Error category for RSA errors.
Definition jwt.h:127
+
std::error_category & signature_generation_error_category()
Error category for signature generation errors.
Definition jwt.h:289
+
ecdsa_error
Errors related to processing of RSA signatures.
Definition jwt.h:159
+
rsa_error
Errors related to processing of RSA signatures.
Definition jwt.h:110
+
signature_generation_error
Errors related to signature generation errors.
Definition jwt.h:269
+
token_verification_error
Errors related to token verification errors.
Definition jwt.h:339
+
std::error_code make_error_code(rsa_error e)
Converts JWT-CPP errors into generic STL error_codes.
Definition jwt.h:155
+
std::string extract_pubkey_from_cert(const std::string &certstr, const std::string &pw, std::error_code &ec)
Extract the public key of a pem certificate.
Definition jwt.h:542
+
evp_pkey_handle load_public_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a public key from a string.
Definition jwt.h:818
+
evp_pkey_handle load_public_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a public key from a string.
Definition jwt.h:714
+
std::string create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, Decode decode, std::error_code &ec)
create public key from modulus and exponent. This is defined in RFC 7518 Section 6....
Definition jwt.h:917
+
std::unique_ptr< BIGNUM, decltype(&BN_free)> raw2bn(const std::string &raw, std::error_code &ec)
Definition jwt.h:847
+
evp_pkey_handle load_private_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a private key from a string.
Definition jwt.h:897
+
int curve2nid(const std::string curve, std::error_code &ec)
Convert a curve name to an ID.
Definition jwt.h:1124
+
std::string convert_base64_der_to_pem(const std::string &cert_base64_der_str, Decode decode, std::error_code &ec)
Convert the certificate provided as base64 DER to PEM.
Definition jwt.h:628
+
std::string bn2raw(const BIGNUM *bn)
Definition jwt.h:834
+
std::string create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y, Decode decode, std::error_code &ec)
Definition jwt.h:1155
+
evp_pkey_handle load_private_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a private key from a string.
Definition jwt.h:772
+
std::string convert_der_to_pem(const std::string &cert_der_str, std::error_code &ec)
Convert the certificate provided as DER to PEM.
Definition jwt.h:592
+
type
Categories for the various JSON types used in JWTs.
Definition jwt.h:2274
+
JSON Web Token.
Definition base.h:21
+
verifier< Clock, json_traits > verify(Clock c)
Definition jwt.h:4109
+
std::chrono::system_clock::time_point date
Definition jwt.h:86
+
builder< Clock, json_traits > create(Clock c)
Definition jwt.h:4119
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:4195
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:4209
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:4170
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:88
+
Base class for ECDSA family of algorithms.
Definition jwt.h:1542
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1616
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1579
+
ecdsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)
Definition jwt.h:1554
+
std::string name() const
Definition jwt.h:1655
+
Definition jwt.h:2178
+
ed25519(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2188
+
Definition jwt.h:2200
+
ed448(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2210
+
Base class for EdDSA family of algorithms.
Definition jwt.h:1773
+
std::string name() const
Definition jwt.h:1887
+
eddsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)
Definition jwt.h:1784
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1800
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1848
+
Definition jwt.h:2105
+
es256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2115
+
Definition jwt.h:2156
+
es256k(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2165
+
Definition jwt.h:2122
+
es384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2132
+
Definition jwt.h:2139
+
es512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2149
+
Base class for HMAC family of algorithms.
Definition jwt.h:1372
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1389
+
std::string name() const
Definition jwt.h:1429
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1410
+
hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)
Definition jwt.h:1380
+
Definition jwt.h:2027
+
hs256(std::string key)
Definition jwt.h:2032
+
Definition jwt.h:2037
+
hs384(std::string key)
Definition jwt.h:2042
+
Definition jwt.h:2047
+
hs512(std::string key)
Definition jwt.h:2052
+
"none" algorithm.
Definition jwt.h:1347
+
void verify(const std::string &, const std::string &signature, std::error_code &ec) const
Check if the given signature is empty.
Definition jwt.h:1362
+
std::string name() const
Get algorithm name.
Definition jwt.h:1367
+
std::string sign(const std::string &, std::error_code &ec) const
Return an empty string.
Definition jwt.h:1351
+
Definition jwt.h:2219
+
ps256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2227
+
Definition jwt.h:2234
+
ps384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2242
+
Definition jwt.h:2249
+
ps512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2257
+
Base class for PSS-RSA family of algorithms.
Definition jwt.h:1899
+
std::string name() const
Definition jwt.h:2013
+
pss(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
Definition jwt.h:1909
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1974
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1926
+
Definition jwt.h:2059
+
rs256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Construct new instance of algorithm.
Definition jwt.h:2068
+
Definition jwt.h:2075
+
rs384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2083
+
Definition jwt.h:2090
+
rs512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2098
+
Base class for RSA family of algorithms.
Definition jwt.h:1442
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1503
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1469
+
rsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
Definition jwt.h:1453
+
std::string name() const
Definition jwt.h:1529
+
Definition jwt.h:4126
+
date now() const
Definition jwt.h:4131
+ +
Definition jwt.h:101
+ +
Definition jwt.h:98
+ + + + + +
Definition jwt.h:3412
+ + +
Definition jwt.h:3341
+
date current_time
Current time, retrieved from the verifiers clock and cached for performance and consistency.
Definition jwt.h:3345
+
basic_claim< json_traits > get_claim(bool in_header, json::type t, std::error_code &ec) const
Definition jwt.h:3382
+
size_t default_leeway
The configured default leeway for this verification.
Definition jwt.h:3349
+
basic_claim< json_traits > get_claim(bool in_header, std::error_code &ec) const
Helper method to get a claim from the jwt in this context.
Definition jwt.h:3360
+
basic_claim< json_traits > get_claim(json::type t, std::error_code &ec) const
Helper method to get a payload claim of a specific type from the jwt.
Definition jwt.h:3403
+
basic_claim< json_traits > get_claim(std::error_code &ec) const
Helper method to get a payload claim from the jwt.
Definition jwt.h:3396
+
json_traits::string_type claim_key
The claim key to apply this comparison on.
Definition jwt.h:3352
+
const decoded_jwt< json_traits > & jwt
The jwt passed to the verifier.
Definition jwt.h:3347
+
+
+ + + + diff --git a/kazuho-picojson_2defaults_8h_source.html b/kazuho-picojson_2defaults_8h_source.html new file mode 100644 index 00000000..1d61ef7b --- /dev/null +++ b/kazuho-picojson_2defaults_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson/defaults.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
defaults.h
+
+
+
1#ifndef JWT_CPP_KAZUHO_PICOJSON_DEFAULTS_H
+
2#define JWT_CPP_KAZUHO_PICOJSON_DEFAULTS_H
+
3
+
4#include "traits.h"
+
5
+
6namespace jwt {
+
13 using claim = basic_claim<traits::kazuho_picojson>;
+
14
+
19 inline verifier<default_clock, traits::kazuho_picojson> verify() {
+
20 return verify<default_clock, traits::kazuho_picojson>(default_clock{});
+
21 }
+
22
+
27 inline builder<default_clock, traits::kazuho_picojson> create() {
+
28 return builder<default_clock, traits::kazuho_picojson>(default_clock{});
+
29 }
+
30
+
31#ifndef JWT_DISABLE_BASE64
+
39 inline decoded_jwt<traits::kazuho_picojson> decode(const std::string& token) {
+
40 return decoded_jwt<traits::kazuho_picojson>(token);
+
41 }
+
42#endif
+
43
+
55 template<typename Decode>
+
+
56 decoded_jwt<traits::kazuho_picojson> decode(const std::string& token, Decode decode) {
+ +
58 }
+
+
59
+
66 inline jwk<traits::kazuho_picojson> parse_jwk(const traits::kazuho_picojson::string_type& token) {
+
67 return jwk<traits::kazuho_picojson>(token);
+
68 }
+
69
+
76 inline jwks<traits::kazuho_picojson> parse_jwks(const traits::kazuho_picojson::string_type& token) {
+
77 return jwks<traits::kazuho_picojson>(token);
+
78 }
+
79
+
84 using verify_context = verify_ops::verify_context<traits::kazuho_picojson>;
+
85} // namespace jwt
+
86
+
87#endif // JWT_CPP_KAZUHO_PICOJSON_DEFAULTS_H
+
Definition jwt.h:2954
+
JSON Web Token.
Definition base.h:21
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:4195
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:4209
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+
basic_claim< traits::boost_json > claim
a class to store a generic Boost.JSON value as claim
Definition defaults.h:17
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:4170
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:88
+
+
+ + + + diff --git a/kazuho-picojson_2traits_8h_source.html b/kazuho-picojson_2traits_8h_source.html new file mode 100644 index 00000000..442d7aae --- /dev/null +++ b/kazuho-picojson_2traits_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson/traits.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits.h
+
+
+
1#ifndef JWT_CPP_PICOJSON_TRAITS_H
+
2#define JWT_CPP_PICOJSON_TRAITS_H
+
3
+
4#ifndef PICOJSON_USE_INT64
+
5#define PICOJSON_USE_INT64
+
6#endif
+
7#include "picojson/picojson.h"
+
8
+
9#ifndef JWT_DISABLE_PICOJSON
+
10#define JWT_DISABLE_PICOJSON
+
11#endif
+
12#include "jwt-cpp/jwt.h"
+
13
+
14namespace jwt {
+
18 namespace traits {
+
+ +
21 using value_type = picojson::value;
+
22 using object_type = picojson::object;
+
23 using array_type = picojson::array;
+
24 using string_type = std::string;
+
25 using number_type = double;
+
26 using integer_type = int64_t;
+
27 using boolean_type = bool;
+
28
+
29 static json::type get_type(const picojson::value& val) {
+
30 using json::type;
+
31 if (val.is<bool>()) return type::boolean;
+
32 if (val.is<int64_t>()) return type::integer;
+
33 if (val.is<double>()) return type::number;
+
34 if (val.is<std::string>()) return type::string;
+
35 if (val.is<picojson::array>()) return type::array;
+
36 if (val.is<picojson::object>()) return type::object;
+
37
+
38 throw std::logic_error("invalid type");
+
39 }
+
40
+
41 static picojson::object as_object(const picojson::value& val) {
+
42 if (!val.is<picojson::object>()) throw std::bad_cast();
+
43 return val.get<picojson::object>();
+
44 }
+
45
+
46 static std::string as_string(const picojson::value& val) {
+
47 if (!val.is<std::string>()) throw std::bad_cast();
+
48 return val.get<std::string>();
+
49 }
+
50
+
51 static picojson::array as_array(const picojson::value& val) {
+
52 if (!val.is<picojson::array>()) throw std::bad_cast();
+
53 return val.get<picojson::array>();
+
54 }
+
55
+
56 static int64_t as_integer(const picojson::value& val) {
+
57 if (!val.is<int64_t>()) throw std::bad_cast();
+
58 return val.get<int64_t>();
+
59 }
+
60
+
61 static bool as_boolean(const picojson::value& val) {
+
62 if (!val.is<bool>()) throw std::bad_cast();
+
63 return val.get<bool>();
+
64 }
+
65
+
66 static double as_number(const picojson::value& val) {
+
67 if (!val.is<double>()) throw std::bad_cast();
+
68 return val.get<double>();
+
69 }
+
70
+
71 static bool parse(picojson::value& val, const std::string& str) {
+
72 return picojson::parse(val, str).empty();
+
73 }
+
74
+
75 static std::string serialize(const picojson::value& val) { return val.serialize(); }
+
76 };
+
+
77 } // namespace traits
+
78} // namespace jwt
+
79
+
80#endif
+
JSON Web Token.
Definition base.h:21
+
basic_claim's JSON trait implementation for picojson
Definition traits.h:20
+
+
+ + + + diff --git a/md__8github_2security.html b/md__8github_2security.html new file mode 100644 index 00000000..71f708de --- /dev/null +++ b/md__8github_2security.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: Reporting Security Issues + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Reporting Security Issues
+
+
+

If you believe you have found a security vulnerability in JWT-CPP, we encourage you to let us know right away. We will investigate all legitimate reports and do our best to quickly fix the problem.

+

Please refer to the section below for our responsible disclosure policy:

+

Disclosure Policy

+

Please contact one or more of the maintainers using the email advertised on our GitHub profiles:

+ +

Please provide as many details as possible about version, platform, and workflow as possible. Having steps and reproducible code is better and is always greatly appreciated.

+

Supported Version

+

Typically, fixes will be immediately released as a new patch release. However, older affected versions may receive a new patch upon request.

+
+
+
+ + + + diff --git a/md_docs_2faqs.html b/md_docs_2faqs.html new file mode 100644 index 00000000..ef7f1089 --- /dev/null +++ b/md_docs_2faqs.html @@ -0,0 +1,150 @@ + + + + + + + +JWT-CPP: Frequently Asked Questions + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Frequently Asked Questions
+
+
+

Handling Tokens

+

The generated JWT token can be decoded, is this correct and secure?

+

This is the expected behavior. While the integrity of tokens is ensured by the generated/verified hash, the contents of the token are only encoded and not encrypted. This means you can be sure the token has not been modified by an unauthorized party, but you should not store confidential information in it. Anyone with access to the token can read all the claims you put into it. They can however not modify them unless they have the (private or symmetric) key used to generate the token. If you need to put confidential information into it, current industry recommends generating a random id and store the data on your server, using the id to look it up whenever you need.

+

How can new keys be generated for my application?

+

The algorithms provided are all based on OpenSSL, mixing other cryptographic tools might not work.

+

Here are a few links for your convenience:

+ +

Can this library encrypt/decrypt claims?

+

No it does not, see #115 for more details. More importantly you probably don't want to be using JWTs for anything sensitive. Read this for more.

+

Why are my tokens immediately expired?

+

If you are generating tokens that seem to immediately expire, you are likely mixing local time where it is not required. The JWT specification requires using UTC which this library does.

+

Here is a simple example of creating a token that will expire in one hour:

+
auto token = jwt::create()
+
.set_issued_now()
+
.set_expires_in(std::chrono::seconds{3600})
+
.sign(jwt::algorithm::hs256{"secret"});
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+
Definition jwt.h:2027
+

Can you add claims to a signed token?

+

The signature includes both the header and payload, according to the RFCs... changing the payload would cause a discrepancy. That should result in the token being rejected. For more details checkout #194.

+

Why does jwt::basic_claim have no as_object() method?

+

This was brought up in #212 and #101 as it's an excellent question.

+

It simply was not required to handle the required keys in JWTs for signing or verification. All the the mandatory keys are numeric, string or array types which required type definitions and access.

+

The alternative is to use the to_json() method and use the libraries own APIs to pick the data type you need.

+

Build Issues

+

Missing _HMAC and _EVP_sha256 symbols on Mac

+

There seems to exists a problem with the included openssl library of MacOS. Make sure you link to one provided by brew. See #6 for more details.

+

Building on windows fails with syntax errors

+

The header <Windows.h>, which is often included in Windows projects, defines macros for MIN and MAX which conflicts with std::numeric_limits. See #5 for more details or this StackOverflow thread.

+

To fix this do one of the following things:

+
    +
  • define NOMINMAX, which suppresses this behavior
  • +
  • include this library before you #include <Windows.h>
  • +
  • place #undef max and #undef min before you include this library
  • +
+
+
+
+ + + + diff --git a/md_docs_2install.html b/md_docs_2install.html new file mode 100644 index 00000000..34c07f97 --- /dev/null +++ b/md_docs_2install.html @@ -0,0 +1,155 @@ + + + + + + + +JWT-CPP: Installation + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Installation
+
+
+

There's a number of options to choice from.

+

Overview

+

It's strongly recommended to use a package manager, as JWT-CPP has dependencies for both cryptography and JSON libraries, having a tool to do the heavily lifting can be ideal. Examples of a C and C++ package manager are Conan and vcpkg. If the version is out of date please check with their respective communities before opening and issue here.

+

When manually adding this dependency, and the dependencies this has, check the GitHub Actions and Workflows for some inspiration about how to go about it.

+

Package Manager

+ +

Looking for ways to contribute? Help by adding JWT-CPP to your favorite package manager! Nixpkgs for example. Currently many are behind the latest.

+

Header Only

+

Simply downloading the include/ directory is possible. Make sure the jwt-cpp/ subdirectories is visible during compilation. This does require correctly linking to OpenSSL or alternative cryptography library.

+

The minimum is jwt.h but you will need to add the defines:

+ +

In addition to providing your own JSON traits implementation, see traits.md for more information.

+

CMake

+

Using find_package is recommended. Step you environment by installing OpenSSL. Once complete, configure and install the jwt-cpp target using CMake.

+

A simple installation of JWT-CPP may look like

+
cmake .
+
cmake --build . # Make sure everything compiles and links together
+
cmake --install .
+

Then from your own project

+
find_package(jwt-cpp CONFIG REQUIRED)
+
+
target_link_libraries(my_app PRIVATE jwt-cpp::jwt-cpp)
+

Unsupported Alternatives

+

There's also the possibility of using FetchContent in pull this this project to your build tree.

+
include(FetchContent)
+
fetchcontent_declare(jwt-cpp
+
GIT_REPOSITORY https://github.com/Thalhammer/jwt-cpp.git
+
GIT_TAG 08bcf77a687fb06e34138e9e9fa12a4ecbe12332 # v0.7.0 release
+
)
+
set(JWT_BUILD_EXAMPLES OFF CACHE BOOL "disable building examples" FORCE)
+
fetchcontent_makeavailable(jwt-cpp)
+
+
target_link_libraries(my_app PRIVATE jwt-cpp::jwt-cpp)
+

Lastly, you can use add_subdirectory, this is untested but should work.

+
+
+
+ + + + diff --git a/md_docs_2signing.html b/md_docs_2signing.html new file mode 100644 index 00000000..05b03389 --- /dev/null +++ b/md_docs_2signing.html @@ -0,0 +1,137 @@ + + + + + + + +JWT-CPP: Signing Tokens + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Signing Tokens
+
+
+

Custom Signature Algorithms

+

The libraries design is open so you can implement your own algorithms, see existing implementations for ideas.

+
struct your_algorithm{
+
std::string sign(const std::string& /*unused*/, std::error_code& ec) const {
+
ec.clear();
+
// CALL YOUR METHOD HERE
+
return {};
+
}
+
void verify(const std::string& /*unused*/, const std::string& signature, std::error_code& ec) const {
+
ec.clear();
+
if (!signature.empty()) { ec = error::signature_verification_error::invalid_signature; }
+
+
// CALL YOUR METHOD HERE
+
}
+
std::string name() const { return "your_algorithm"; }
+
};
+
verifier< Clock, json_traits > verify(Clock c)
Definition jwt.h:4109
+

Then everything else is the same, just pass in your implementation such as:

+
auto token = jwt::create()
+
.set_id("custom-algo-example")
+
.set_issued_now()
+
.set_expires_in(std::chrono::seconds{36000})
+
.set_payload_claim("sample", jwt::claim(std::string{"test"}))
+
.sign(your_algorithm{/* what ever you want */});
+
a class to store a generic JSON value as claim
Definition jwt.h:2549
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+
+
+
+ + + + diff --git a/md_docs_2ssl.html b/md_docs_2ssl.html new file mode 100644 index 00000000..c39f57e1 --- /dev/null +++ b/md_docs_2ssl.html @@ -0,0 +1,138 @@ + + + + + + + +JWT-CPP: Cryptography Libraries + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Cryptography Libraries
+
+
+

The underlying cryptography libraries describe here can be selected when configuring CMake by explicitly setting JWT_SSL_LIBRARY to one of three values. The default is to use OpenSSL.

+
    +
  • OpenSSL
  • +
  • LibreSSL
  • +
  • wolfSSL
  • +
+

Here's an example:

+
cmake . -DJWT_SSL_LIBRARY:STRING=wolfSSL
+

Supported Versions

+

These are the version which are currently being tested:

+ + + + + + + + + + + +
OpenSSL LibreSSL wolfSSL
1.0.2u 3.3.6 5.1.1
1.1.0i 3.4.3 5.2.0
1.1.1q 3.5.3 5.3.0
3.0.5
+
+

‍[!NOTE] A complete list of versions tested in the past can be found here.

+
+

Notes

+

JWT-CPP relies on the OpenSSL API, as a result both LibreSSL and wolfSSL need to include their respective compatibility layers. Most system already have OpenSSL so it's important to make sure when compiling your application it only includes one. Otherwise you may have missing symbols when linking.

+
+
+
+ + + + diff --git a/md_docs_2traits.html b/md_docs_2traits.html new file mode 100644 index 00000000..2e85a374 --- /dev/null +++ b/md_docs_2traits.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: JSON Traits + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JSON Traits
+
+
+

Traits define the compatibility mapping for JWT-CPP required functionality to the JSON implementation of choice.

+

Selecting a JSON library

+

For your convenience there are serval traits implementation which provide some popular JSON libraries. They are:

+

picojson nlohmann jsoncons boostjson jsoncpp

+

In order to maintain compatibility, 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 for details.

+
//include "jwt-cpp/traits/author-library/traits.h"
+
#include "jwt-cpp/traits/nlohmann-json/traits.h"
+
// There is also a "defaults.h" if you's like to skip providing the
+
// template specializations for the JSON traits
+
+
int main() {
+
// All the provided traits are in jwt::traits namespace
+ +
+
const auto time = jwt::date::clock::now();
+
const auto token = jwt::create<traits>()
+
.set_type("JWT")
+
.set_issuer("auth.mydomain.io")
+
.set_audience("mydomain.io")
+
.set_issued_at(time)
+
.set_not_before(time)
+
.set_expires_at(time + std::chrono::minutes{2} + std::chrono::seconds{15})
+ +
const auto decoded = jwt::decode<traits>(token);
+
+
jwt::verify<traits>()
+
.allow_algorithm(jwt::algorithm::none{})
+
.with_issuer("auth.mydomain.io")
+
.with_audience("mydomain.io")
+
.verify(decoded);
+
"none" algorithm.
Definition jwt.h:1347
+
basic_claim's JSON trait implementation for Modern C++ JSON
Definition traits.h:13
+

Providing your own JSON Traits

+

There are several key items that need to be provided to a jwt::basic_claim in order for it to be interoperable with you JSON library of choice.

+
    +
  • type specifications
  • +
  • conversion from generic "value type" to a specific type
  • +
  • serialization and parsing
  • +
+

If ever you are not sure, the traits are heavily checked against static asserts to make sure you provide everything that's required.

+
+

‍[!important] Not all JSON libraries are a like, you may need to extend certain types such that it can be used. See this provided implementation.

+
+
struct my_favorite_json_library_traits {
+
// Type Specifications
+
using value_type = json; // The generic "value type" implementation, most libraries have one
+
using object_type = json::object_t; // The "map type" string to value
+
using array_type = json::array_t; // The "list type" array of values
+
using string_type = std::string; // The "list of chars", must be a narrow char
+
using number_type = double; // The "precision type"
+
using integer_type = int64_t; // The "integral type"
+
using boolean_type = bool; // The "boolean type"
+
+
// Translation between the implementation notion of type, to the jwt::json::type equivalent
+
static jwt::json::type get_type(const value_type &val) {
+ +
+
if (val.type() == json::value_t::object)
+
return type::object;
+
if (val.type() == json::value_t::array)
+
return type::array;
+
if (val.type() == json::value_t::string)
+
return type::string;
+
if (val.type() == json::value_t::number_float)
+
return type::number;
+
if (val.type() == json::value_t::number_integer)
+
return type::integer;
+
if (val.type() == json::value_t::boolean)
+
return type::boolean;
+
+
throw std::logic_error("invalid type");
+
}
+
+
// Conversion from generic value to specific type
+
static object_type as_object(const value_type &val);
+
static array_type as_array(const value_type &val);
+
static string_type as_string(const value_type &val);
+
static number_type as_number(const value_type &val);
+
static integer_type as_integer(const value_type &val);
+
static boolean_type as_boolean(const value_type &val);
+
+
// serialization and parsing
+
static bool parse(value_type &val, string_type str);
+
static string_type serialize(const value_type &val); // with no extra whitespace, padding or indentation
+
};
+
type
Categories for the various JSON types used in JWTs.
Definition jwt.h:2274
+
+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 00000000..717761d0 --- /dev/null +++ b/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 00000000..d3daaf64 --- /dev/null +++ b/menudata.js @@ -0,0 +1,102 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"b",url:"namespacemembers.html#index_b"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"p",url:"namespacemembers.html#index_p"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}, +{text:"v",url:"namespacemembers.html#index_v"}]}, +{text:"Functions",url:"namespacemembers_func.html",children:[ +{text:"b",url:"namespacemembers_func.html#index_b"}, +{text:"c",url:"namespacemembers_func.html#index_c"}, +{text:"d",url:"namespacemembers_func.html#index_d"}, +{text:"e",url:"namespacemembers_func.html#index_e"}, +{text:"l",url:"namespacemembers_func.html#index_l"}, +{text:"m",url:"namespacemembers_func.html#index_m"}, +{text:"p",url:"namespacemembers_func.html#index_p"}, +{text:"r",url:"namespacemembers_func.html#index_r"}, +{text:"s",url:"namespacemembers_func.html#index_s"}, +{text:"t",url:"namespacemembers_func.html#index_t"}, +{text:"v",url:"namespacemembers_func.html#index_v"}]}, +{text:"Typedefs",url:"namespacemembers_type.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"j",url:"functions.html#index_j"}, +{text:"l",url:"functions.html#index_l"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"v",url:"functions.html#index_v"}, +{text:"w",url:"functions.html#index_w"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"h",url:"functions_func.html#index_h"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"j",url:"functions_func.html#index_j"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"n",url:"functions_func.html#index_n"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"v",url:"functions_func.html#index_v"}, +{text:"w",url:"functions_func.html#index_w"}]}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Typedefs",url:"functions_type.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/minus.svg b/minus.svg new file mode 100644 index 00000000..f70d0c1a --- /dev/null +++ b/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minusd.svg b/minusd.svg new file mode 100644 index 00000000..5f8e8796 --- /dev/null +++ b/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/namespacejwt.html b/namespacejwt.html new file mode 100644 index 00000000..a2cf15c9 --- /dev/null +++ b/namespacejwt.html @@ -0,0 +1,931 @@ + + + + + + + +JWT-CPP: jwt Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt Namespace Reference
    +
    +
    + +

    JSON Web Token. +More...

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  algorithm
     Various cryptographic algorithms when working with JWT.
     
    namespace  alphabet
     character maps when encoding and decoding
     
    namespace  base
     A collection of fellable functions for working with base64 and base64url.
     
    namespace  error
     Everything related to error codes issued by the library.
     
    namespace  helper
     A collection for working with certificates.
     
    namespace  json
     JSON Abstractions for working with any library.
     
    namespace  traits
     Namespace containing all the json_trait implementations for a jwt::basic_claim.
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  basic_claim
     a class to store a generic JSON value as claim More...
     
    class  builder
     
    class  decoded_jwt
     
    struct  default_clock
     
    class  header
     
    class  jwk
     JSON Web Key. More...
     
    class  jwks
     JWK Set. More...
     
    class  payload
     
    class  verifier
     
    + + + + + + + + +

    +Typedefs

    using date = std::chrono::system_clock::time_point
     
    using claim = basic_claim<traits::boost_json>
     a class to store a generic Boost.JSON value as claim
     
    using verify_context = verify_ops::verify_context<traits::boost_json>
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    template<typename Clock , typename json_traits >
    verifier< Clock, json_traits > verify (Clock c)
     
    template<typename Clock , typename json_traits >
    builder< Clock, json_traits > create (Clock c)
     
    template<typename json_traits >
    verifier< default_clock, json_traits > verify (default_clock c={})
     
    template<typename json_traits >
    builder< default_clock, json_traits > create (default_clock c={})
     
    template<typename json_traits , typename Decode >
    decoded_jwt< json_traits > decode (const typename json_traits::string_type &token, Decode decode)
     Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens. See associated example rsa-verify.cpp for more details.
     
    template<typename json_traits >
    decoded_jwt< json_traits > decode (const typename json_traits::string_type &token)
     
    template<typename json_traits >
    jwk< json_traits > parse_jwk (const typename json_traits::string_type &jwk_)
     
    template<typename json_traits >
    jwks< json_traits > parse_jwks (const typename json_traits::string_type &jwks_)
     
    verifier< default_clock, traits::boost_jsonverify ()
     
    builder< default_clock, traits::boost_jsoncreate ()
     
    decoded_jwt< traits::boost_jsondecode (const std::string &token)
     
    template<typename Decode >
    decoded_jwt< traits::boost_jsondecode (const std::string &token, Decode decode)
     
    jwk< traits::boost_jsonparse_jwk (const traits::boost_json::string_type &token)
     
    jwks< traits::boost_jsonparse_jwks (const traits::boost_json::string_type &token)
     
    template<typename Decode >
    decoded_jwt< traits::danielaparker_jsonconsdecode (const std::string &token, Decode decode)
     
    template<typename Decode >
    decoded_jwt< traits::kazuho_picojsondecode (const std::string &token, Decode decode)
     
    template<typename Decode >
    decoded_jwt< traits::nlohmann_jsondecode (const std::string &token, Decode decode)
     
    template<typename Decode >
    decoded_jwt< traits::open_source_parsers_jsoncppdecode (const std::string &token, Decode decode)
     
    +

    Detailed Description

    +

    JSON Web Token.

    +

    A namespace to contain everything related to handling JSON Web Tokens, JWT for short, as a part of RFC7519, or alternatively for JWS (JSON Web Signature) from RFC7515

    +

    Typedef Documentation

    + +

    ◆ claim

    + +
    +
    + +

    a class to store a generic Boost.JSON value as claim

    +

    a class to store a generic jsoncpp value as claim

    +

    a class to store a generic JSON for Modern C++ value as claim

    +

    a class to store a generic picojson value as claim

    +

    a class to store a generic jsoncons value as claim

    +

    This type is the specialization of the basic_claim class which uses the standard template types.

    + +
    +
    + +

    ◆ date

    + +
    +
    + + + + +
    using jwt::date = std::chrono::system_clock::time_point
    +
    +

    Default system time point in UTC

    + +
    +
    + +

    ◆ verify_context

    + +
    +
    +

    This type is the specialization of the verify_ops::verify_context class which uses the standard template types.

    + +
    +
    +

    Function Documentation

    + +

    ◆ create() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    builder< default_clock, traits::open_source_parsers_jsoncpp > jwt::create ()
    +
    +inline
    +
    +

    Create a builder using the default clock

    Returns
    builder instance to create a new token
    + +
    +
    + +

    ◆ create() [2/3]

    + +
    +
    +
    +template<typename Clock , typename json_traits >
    + + + + + + + +
    builder< Clock, json_traits > jwt::create (Clock c)
    +
    +

    Create a builder using the given clock

    Parameters
    + + +
    cClock instance to use
    +
    +
    +
    Returns
    builder instance
    + +
    +
    + +

    ◆ create() [3/3]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + + + +
    builder< default_clock, json_traits > jwt::create (default_clock c = {})
    +
    +

    Return a builder instance to create a new token

    + +
    +
    + +

    ◆ decode() [1/8]

    + +
    +
    + + + + + +
    + + + + + + + +
    decoded_jwt< traits::open_source_parsers_jsoncpp > jwt::decode (const std::string & token)
    +
    +inline
    +
    +

    Decode a token

    Parameters
    + + +
    tokenToken to decode
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ decode() [2/8]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + +
    decoded_jwt< traits::boost_json > jwt::decode (const std::string & token,
    Decode decode )
    +
    +

    Decode a token

    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + +
    tokenToken to decode
    decodeThe token to parse
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ decode() [3/8]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + +
    decoded_jwt< traits::danielaparker_jsoncons > jwt::decode (const std::string & token,
    Decode decode )
    +
    +

    Decode a token

    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + +
    tokenToken to decode
    decodeThe token to parse
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ decode() [4/8]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + +
    decoded_jwt< traits::kazuho_picojson > jwt::decode (const std::string & token,
    Decode decode )
    +
    +

    Decode a token

    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + +
    tokenToken to decode
    decodeThe token to parse
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ decode() [5/8]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + +
    decoded_jwt< traits::nlohmann_json > jwt::decode (const std::string & token,
    Decode decode )
    +
    +

    Decode a token

    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + +
    tokenToken to decode
    decodeThe token to parse
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ decode() [6/8]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + +
    decoded_jwt< traits::open_source_parsers_jsoncpp > jwt::decode (const std::string & token,
    Decode decode )
    +
    +

    Decode a token

    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + +
    tokenToken to decode
    decodeThe token to parse
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ decode() [7/8]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + + + +
    decoded_jwt< json_traits > jwt::decode (const typename json_traits::string_type & token)
    +
    +

    Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens. See associated example rsa-verify.cpp for more details.

    +
    Template Parameters
    + + +
    json_traitsJSON implementation traits
    +
    +
    +
    Parameters
    + + +
    tokenToken to decode
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ decode() [8/8]

    + +
    +
    +
    +template<typename json_traits , typename Decode >
    + + + + + + + + + + + +
    decoded_jwt< json_traits > jwt::decode (const typename json_traits::string_type & token,
    Decode decode )
    +
    + +

    Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens. See associated example rsa-verify.cpp for more details.

    +
    Template Parameters
    + + + +
    json_traitsJSON implementation traits
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + +
    tokenToken to decode
    decodefunction that will pad and base64url decode the token
    +
    +
    +
    Returns
    Decoded token
    +
    Exceptions
    + + + +
    std::invalid_argumentToken is not in correct format
    std::runtime_errorBase64 decoding failed or invalid json
    +
    +
    + +
    +
    + +

    ◆ parse_jwk() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    jwk< traits::open_source_parsers_jsoncpp > jwt::parse_jwk (const traits::boost_json::string_type & token)
    +
    +inline
    +
    +

    Parse a jwk

    Parameters
    + + +
    tokenJWK Token to parse
    +
    +
    +
    Returns
    Parsed JWK
    +
    Exceptions
    + + +
    std::runtime_errorToken is not in correct format
    +
    +
    + +
    +
    + +

    ◆ parse_jwk() [2/2]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + + + +
    jwk< json_traits > jwt::parse_jwk (const typename json_traits::string_type & jwk_)
    +
    +

    Parse a single JSON Web Key

    Template Parameters
    + + +
    json_traitsJSON implementation traits
    +
    +
    +
    Parameters
    + + +
    jwk_string buffer containing the JSON object
    +
    +
    +
    Returns
    Decoded jwk
    + +
    +
    + +

    ◆ parse_jwks() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    jwks< traits::open_source_parsers_jsoncpp > jwt::parse_jwks (const traits::boost_json::string_type & token)
    +
    +inline
    +
    +

    Parse a jwks

    Parameters
    + + +
    tokenJWKs Token to parse
    +
    +
    +
    Returns
    Parsed JWKs
    +
    Exceptions
    + + +
    std::runtime_errorToken is not in correct format
    +
    +
    + +
    +
    + +

    ◆ parse_jwks() [2/2]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + + + +
    jwks< json_traits > jwt::parse_jwks (const typename json_traits::string_type & jwks_)
    +
    +

    Parse a JSON Web Key Set. This can be used to to help access important feild like 'x5c' for verifying tokens. See example jwks-verify.cpp for more information.

    +
    Template Parameters
    + + +
    json_traitsJSON implementation traits
    +
    +
    +
    Parameters
    + + +
    jwks_string buffer containing the JSON object
    +
    +
    +
    Returns
    Parsed JSON object containing the data of the JWK SET string
    +
    Exceptions
    + + +
    std::runtime_errorToken is not in correct format
    +
    +
    + +
    +
    + +

    ◆ verify() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    verifier< default_clock, traits::open_source_parsers_jsoncpp > jwt::verify ()
    +
    +inline
    +
    +

    Create a verifier using the default clock

    Returns
    verifier instance
    + +
    +
    + +

    ◆ verify() [2/3]

    + +
    +
    +
    +template<typename Clock , typename json_traits >
    + + + + + + + +
    verifier< Clock, json_traits > jwt::verify (Clock c)
    +
    +

    Create a verifier using the given clock

    Parameters
    + + +
    cClock instance to use
    +
    +
    +
    Returns
    verifier instance
    + +
    +
    + +

    ◆ verify() [3/3]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + + + +
    verifier< default_clock, json_traits > jwt::verify (default_clock c = {})
    +
    +

    Create a verifier using the default_clock.

    +
    Parameters
    + + +
    cClock instance to use
    +
    +
    +
    Returns
    verifier instance
    + +
    +
    +
    +
    + + + + diff --git a/namespacejwt.js b/namespacejwt.js new file mode 100644 index 00000000..3661a2c9 --- /dev/null +++ b/namespacejwt.js @@ -0,0 +1,54 @@ +var namespacejwt = +[ + [ "algorithm", "namespacejwt_1_1algorithm.html", "namespacejwt_1_1algorithm" ], + [ "alphabet", "namespacejwt_1_1alphabet.html", "namespacejwt_1_1alphabet" ], + [ "base", "namespacejwt_1_1base.html", [ + [ "decode", "namespacejwt_1_1base.html#a2679bf11e3757c8b9d035ea82509c895", null ], + [ "encode", "namespacejwt_1_1base.html#ad2ca00edb94734c69742a1aa867e9d28", null ], + [ "pad", "namespacejwt_1_1base.html#ac78a8afb42e050736a6673cd9be38ffa", null ], + [ "trim", "namespacejwt_1_1base.html#a147e03b002f4a6c272364fa04ce09c6e", null ] + ] ], + [ "error", "namespacejwt_1_1error.html", "namespacejwt_1_1error" ], + [ "helper", "namespacejwt_1_1helper.html", "namespacejwt_1_1helper" ], + [ "json", "namespacejwt_1_1json.html", [ + [ "type", "namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3e", [ + [ "boolean", "namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3ea84e2c64f38f78ba3ea5c905ab5a2da27", null ], + [ "integer", "namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3ea157db7df530023575515d366c9b672e8", null ], + [ "number", "namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3eab1bc248a7ff2b2e95569f56de68615df", null ], + [ "string", "namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3eab45cffe084dd3d20d928bee85e7b0f21", null ], + [ "array", "namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3eaf1f713c9e000f5d3f280adbd124df4f5", null ], + [ "object", "namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3eaa8cfde6331bd59eb2ac96f8911c4b666", null ] + ] ] + ] ], + [ "traits", "namespacejwt_1_1traits.html", "namespacejwt_1_1traits" ], + [ "basic_claim", "classjwt_1_1basic__claim.html", "classjwt_1_1basic__claim" ], + [ "builder", "classjwt_1_1builder.html", "classjwt_1_1builder" ], + [ "decoded_jwt", "classjwt_1_1decoded__jwt.html", "classjwt_1_1decoded__jwt" ], + [ "default_clock", "structjwt_1_1default__clock.html", "structjwt_1_1default__clock" ], + [ "header", "classjwt_1_1header.html", "classjwt_1_1header" ], + [ "jwk", "classjwt_1_1jwk.html", "classjwt_1_1jwk" ], + [ "jwks", "classjwt_1_1jwks.html", "classjwt_1_1jwks" ], + [ "payload", "classjwt_1_1payload.html", "classjwt_1_1payload" ], + [ "verifier", "classjwt_1_1verifier.html", "classjwt_1_1verifier" ], + [ "claim", "namespacejwt.html#adc4ce97c8188e4059d3895e2098c66b7", null ], + [ "date", "namespacejwt.html#a2c7d7a8146a395b1325e63a456d2c8a1", null ], + [ "verify_context", "namespacejwt.html#aff29707468174e3f92fbcc319fe2ea69", null ], + [ "create", "namespacejwt.html#ab1def99dc2f348cce1495e6d74fa1614", null ], + [ "create", "namespacejwt.html#a3205457bac493a17fcdd4464d043c397", null ], + [ "create", "namespacejwt.html#a6732fc1f53b09fb32826e75b09870a4c", null ], + [ "decode", "namespacejwt.html#aee1e0e28b218c18aedc0c9fc4568a108", null ], + [ "decode", "namespacejwt.html#a1888325882765254b8d2680ff1cf3210", null ], + [ "decode", "namespacejwt.html#a98607d668bf63870e5dab3f81afe0320", null ], + [ "decode", "namespacejwt.html#a627d2f26db17185e7eb7bb92defa70cc", null ], + [ "decode", "namespacejwt.html#a65d515aeb39cb5829c7af774051ae91e", null ], + [ "decode", "namespacejwt.html#a36eef183151c35ec01ce76484282e14a", null ], + [ "decode", "namespacejwt.html#ade66496cbe78db1ca2fd769b6982bbc9", null ], + [ "decode", "namespacejwt.html#aefffdd7d2a79d6872c15a7ec1661b149", null ], + [ "parse_jwk", "namespacejwt.html#ace6f81b008c344d9f2a993f0347fce7a", null ], + [ "parse_jwk", "namespacejwt.html#a8948012a32d2d558ced39f6101c5c7e0", null ], + [ "parse_jwks", "namespacejwt.html#a55c19b802020be5175068992bbe6dddb", null ], + [ "parse_jwks", "namespacejwt.html#a978368e4ebd959166629b689fbe3e4ec", null ], + [ "verify", "namespacejwt.html#a64c93da90452a2bf6b4eb81e6560d11c", null ], + [ "verify", "namespacejwt.html#a05f9a08741bb8d685f0b2dfbc22820b7", null ], + [ "verify", "namespacejwt.html#a68225fdaab1a9a068e28d6acec245694", null ] +]; \ No newline at end of file diff --git a/namespacejwt_1_1algorithm.html b/namespacejwt_1_1algorithm.html new file mode 100644 index 00000000..515b9d4d --- /dev/null +++ b/namespacejwt_1_1algorithm.html @@ -0,0 +1,171 @@ + + + + + + + +JWT-CPP: jwt::algorithm Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm Namespace Reference
    +
    +
    + +

    Various cryptographic algorithms when working with JWT. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  ecdsa
     Base class for ECDSA family of algorithms. More...
     
    struct  ed25519
     
    struct  ed448
     
    struct  eddsa
     Base class for EdDSA family of algorithms. More...
     
    struct  es256
     
    struct  es256k
     
    struct  es384
     
    struct  es512
     
    struct  hmacsha
     Base class for HMAC family of algorithms. More...
     
    struct  hs256
     
    struct  hs384
     
    struct  hs512
     
    struct  none
     "none" algorithm. More...
     
    struct  ps256
     
    struct  ps384
     
    struct  ps512
     
    struct  pss
     Base class for PSS-RSA family of algorithms. More...
     
    struct  rs256
     
    struct  rs384
     
    struct  rs512
     
    struct  rsa
     Base class for RSA family of algorithms. More...
     
    +

    Detailed Description

    +

    Various cryptographic algorithms when working with JWT.

    +

    JWT (JSON Web Tokens) signatures are typically used as the payload for a JWS (JSON Web Signature) or JWE (JSON Web Encryption). Both of these use various cryptographic as specified by RFC7518 and are exposed through the a JOSE Header which points to one of the JWA JSON Web Algorithms

    +
    +
    + + + + diff --git a/namespacejwt_1_1algorithm.js b/namespacejwt_1_1algorithm.js new file mode 100644 index 00000000..f370325c --- /dev/null +++ b/namespacejwt_1_1algorithm.js @@ -0,0 +1,24 @@ +var namespacejwt_1_1algorithm = +[ + [ "ecdsa", "structjwt_1_1algorithm_1_1ecdsa.html", "structjwt_1_1algorithm_1_1ecdsa" ], + [ "ed25519", "structjwt_1_1algorithm_1_1ed25519.html", "structjwt_1_1algorithm_1_1ed25519" ], + [ "ed448", "structjwt_1_1algorithm_1_1ed448.html", "structjwt_1_1algorithm_1_1ed448" ], + [ "eddsa", "structjwt_1_1algorithm_1_1eddsa.html", "structjwt_1_1algorithm_1_1eddsa" ], + [ "es256", "structjwt_1_1algorithm_1_1es256.html", "structjwt_1_1algorithm_1_1es256" ], + [ "es256k", "structjwt_1_1algorithm_1_1es256k.html", "structjwt_1_1algorithm_1_1es256k" ], + [ "es384", "structjwt_1_1algorithm_1_1es384.html", "structjwt_1_1algorithm_1_1es384" ], + [ "es512", "structjwt_1_1algorithm_1_1es512.html", "structjwt_1_1algorithm_1_1es512" ], + [ "hmacsha", "structjwt_1_1algorithm_1_1hmacsha.html", "structjwt_1_1algorithm_1_1hmacsha" ], + [ "hs256", "structjwt_1_1algorithm_1_1hs256.html", "structjwt_1_1algorithm_1_1hs256" ], + [ "hs384", "structjwt_1_1algorithm_1_1hs384.html", "structjwt_1_1algorithm_1_1hs384" ], + [ "hs512", "structjwt_1_1algorithm_1_1hs512.html", "structjwt_1_1algorithm_1_1hs512" ], + [ "none", "structjwt_1_1algorithm_1_1none.html", "structjwt_1_1algorithm_1_1none" ], + [ "ps256", "structjwt_1_1algorithm_1_1ps256.html", "structjwt_1_1algorithm_1_1ps256" ], + [ "ps384", "structjwt_1_1algorithm_1_1ps384.html", "structjwt_1_1algorithm_1_1ps384" ], + [ "ps512", "structjwt_1_1algorithm_1_1ps512.html", "structjwt_1_1algorithm_1_1ps512" ], + [ "pss", "structjwt_1_1algorithm_1_1pss.html", "structjwt_1_1algorithm_1_1pss" ], + [ "rs256", "structjwt_1_1algorithm_1_1rs256.html", "structjwt_1_1algorithm_1_1rs256" ], + [ "rs384", "structjwt_1_1algorithm_1_1rs384.html", "structjwt_1_1algorithm_1_1rs384" ], + [ "rs512", "structjwt_1_1algorithm_1_1rs512.html", "structjwt_1_1algorithm_1_1rs512" ], + [ "rsa", "structjwt_1_1algorithm_1_1rsa.html", "structjwt_1_1algorithm_1_1rsa" ] +]; \ No newline at end of file diff --git a/namespacejwt_1_1alphabet.html b/namespacejwt_1_1alphabet.html new file mode 100644 index 00000000..a0da04ce --- /dev/null +++ b/namespacejwt_1_1alphabet.html @@ -0,0 +1,135 @@ + + + + + + + +JWT-CPP: jwt::alphabet Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet Namespace Reference
    +
    +
    + +

    character maps when encoding and decoding +More...

    + + + + + + + + +

    +Classes

    struct  base64
     valid list of character when working with Base64 More...
     
    struct  base64url
     valid list of character when working with Base64URL More...
     
    + + + +

    +Functions

    +uint32_t index (const std::array< int8_t, 256 > &rdata, char symbol)
     
    +

    Detailed Description

    +

    character maps when encoding and decoding

    +
    +
    + + + + diff --git a/namespacejwt_1_1alphabet.js b/namespacejwt_1_1alphabet.js new file mode 100644 index 00000000..88d18ba6 --- /dev/null +++ b/namespacejwt_1_1alphabet.js @@ -0,0 +1,5 @@ +var namespacejwt_1_1alphabet = +[ + [ "base64", "structjwt_1_1alphabet_1_1base64.html", null ], + [ "base64url", "structjwt_1_1alphabet_1_1base64url.html", null ] +]; \ No newline at end of file diff --git a/namespacejwt_1_1base.html b/namespacejwt_1_1base.html new file mode 100644 index 00000000..1ff7a4c7 --- /dev/null +++ b/namespacejwt_1_1base.html @@ -0,0 +1,231 @@ + + + + + + + +JWT-CPP: jwt::base Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::base Namespace Reference
    +
    +
    + +

    A collection of fellable functions for working with base64 and base64url. +More...

    + + + + + + + + + + + + + + + + + + +

    +Functions

    template<typename T >
    std::string encode (const std::string &bin)
     Generic base64 encoding.
     
    template<typename T >
    std::string decode (const std::string &base)
     Generic base64 decoding.
     
    template<typename T >
    std::string pad (const std::string &base)
     Generic base64 padding.
     
    template<typename T >
    std::string trim (const std::string &base)
     Generic base64 trimming.
     
    +

    Detailed Description

    +

    A collection of fellable functions for working with base64 and base64url.

    +

    Function Documentation

    + +

    ◆ decode()

    + +
    +
    +
    +template<typename T >
    + + + + + + + +
    std::string jwt::base::decode (const std::string & base)
    +
    + +

    Generic base64 decoding.

    +

    A Generic base64 decoding function that supports any "alphabet" such as jwt::alphabet::base64

    +
    const auto b64 = jwt::base::decode<jwt::alphabet::base64>("ZXhhbXBsZV9kYXRh")
    +
    +
    +
    + +

    ◆ encode()

    + +
    +
    +
    +template<typename T >
    + + + + + + + +
    std::string jwt::base::encode (const std::string & bin)
    +
    + +

    Generic base64 encoding.

    +

    A Generic base64 encode function that supports any "alphabet" such as jwt::alphabet::base64

    +
    const auto b64 = jwt::base::encode<jwt::alphabet::base64>("example_data")
    +
    +
    +
    + +

    ◆ pad()

    + +
    +
    +
    +template<typename T >
    + + + + + + + +
    std::string jwt::base::pad (const std::string & base)
    +
    + +

    Generic base64 padding.

    +

    A Generic base64 pad function that supports any "alphabet" such as jwt::alphabet::base64

    +
    const auto b64 = jwt::base::pad<jwt::alphabet::base64>("ZXhhbXBsZV9kYQ")
    +
    +
    +
    + +

    ◆ trim()

    + +
    +
    +
    +template<typename T >
    + + + + + + + +
    std::string jwt::base::trim (const std::string & base)
    +
    + +

    Generic base64 trimming.

    +

    A Generic base64 trim function that supports any "alphabet" such as jwt::alphabet::base64

    +
    const auto b64 = jwt::base::trim<jwt::alphabet::base64>("ZXhhbXBsZV9kYQ==")
    +
    +
    +
    +
    +
    + + + + diff --git a/namespacejwt_1_1error.html b/namespacejwt_1_1error.html new file mode 100644 index 00000000..ab83575e --- /dev/null +++ b/namespacejwt_1_1error.html @@ -0,0 +1,282 @@ + + + + + + + +JWT-CPP: jwt::error Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::error Namespace Reference
    +
    +
    + +

    Everything related to error codes issued by the library. +More...

    + + + + + + + + + + + + + + + + +

    +Classes

    struct  claim_not_present_exception
     
    struct  ecdsa_exception
     
    struct  invalid_json_exception
     
    struct  rsa_exception
     
    struct  signature_generation_exception
     
    struct  signature_verification_exception
     
    struct  token_verification_exception
     
    + + + + + + + + + + + + + + + + +

    +Enumerations

    enum class  rsa_error {
    +  ok = 0 +, cert_load_failed = 10 +, get_key_failed +, write_key_failed +,
    +  write_cert_failed +, convert_to_pem_failed +, load_key_bio_write +, load_key_bio_read +,
    +  create_mem_bio_failed +, no_key_provided +, set_rsa_failed +, create_context_failed +
    + }
     Errors related to processing of RSA signatures.
     
    enum class  ecdsa_error {
    +  ok = 0 +, load_key_bio_write = 10 +, load_key_bio_read +, create_mem_bio_failed +,
    +  no_key_provided +, invalid_key_size +, invalid_key +, create_context_failed +,
    +  cert_load_failed +, get_key_failed +, write_key_failed +, write_cert_failed +,
    +  convert_to_pem_failed +, unknown_curve +, set_ecdsa_failed +
    + }
     Errors related to processing of RSA signatures.
     
    enum class  signature_verification_error {
    +  ok = 0 +, invalid_signature = 10 +, create_context_failed +, verifyinit_failed +,
    +  verifyupdate_failed +, verifyfinal_failed +, get_key_failed +, set_rsa_pss_saltlen_failed +,
    +  signature_encoding_failed +
    + }
     Errors related to verification of signatures.
     
    enum class  signature_generation_error {
    +  ok = 0 +, hmac_failed = 10 +, create_context_failed +, signinit_failed +,
    +  signupdate_failed +, signfinal_failed +, ecdsa_do_sign_failed +, digestinit_failed +,
    +  digestupdate_failed +, digestfinal_failed +, rsa_padding_failed +, rsa_private_encrypt_failed +,
    +  get_key_failed +, set_rsa_pss_saltlen_failed +, signature_decoding_failed +
    + }
     Errors related to signature generation errors.
     
    enum class  token_verification_error {
    +  ok = 0 +, wrong_algorithm = 10 +, missing_claim +, claim_type_missmatch +,
    +  claim_value_missmatch +, token_expired +, audience_missmatch +
    + }
     Errors related to token verification errors.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +std::error_category & rsa_error_category ()
     Error category for RSA errors.
     
    +std::error_code make_error_code (rsa_error e)
     Converts JWT-CPP errors into generic STL error_codes.
     
    +std::error_category & ecdsa_error_category ()
     Error category for ECDSA errors.
     
    +std::error_code make_error_code (ecdsa_error e)
     Converts JWT-CPP errors into generic STL error_codes.
     
    +std::error_category & signature_verification_error_category ()
     Error category for verification errors.
     
    +std::error_code make_error_code (signature_verification_error e)
     Converts JWT-CPP errors into generic STL error_codes.
     
    +std::error_category & signature_generation_error_category ()
     Error category for signature generation errors.
     
    +std::error_code make_error_code (signature_generation_error e)
     Converts JWT-CPP errors into generic STL error_codes.
     
    +std::error_category & token_verification_error_category ()
     Error category for token verification errors.
     
    +std::error_code make_error_code (token_verification_error e)
     Converts JWT-CPP errors into generic STL error_codes.
     
    +void throw_if_error (std::error_code ec)
     Raises an exception if any JWT-CPP error codes are active.
     
    +

    Detailed Description

    +

    Everything related to error codes issued by the library.

    +
    +
    + + + + diff --git a/namespacejwt_1_1error.js b/namespacejwt_1_1error.js new file mode 100644 index 00000000..bfa2e50a --- /dev/null +++ b/namespacejwt_1_1error.js @@ -0,0 +1,89 @@ +var namespacejwt_1_1error = +[ + [ "claim_not_present_exception", "structjwt_1_1error_1_1claim__not__present__exception.html", null ], + [ "ecdsa_exception", "structjwt_1_1error_1_1ecdsa__exception.html", null ], + [ "invalid_json_exception", "structjwt_1_1error_1_1invalid__json__exception.html", null ], + [ "rsa_exception", "structjwt_1_1error_1_1rsa__exception.html", null ], + [ "signature_generation_exception", "structjwt_1_1error_1_1signature__generation__exception.html", null ], + [ "signature_verification_exception", "structjwt_1_1error_1_1signature__verification__exception.html", null ], + [ "token_verification_exception", "structjwt_1_1error_1_1token__verification__exception.html", null ], + [ "ecdsa_error", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3", [ + [ "ok", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a444bcb3a3fcf8389296c49467f27e1d6", null ], + [ "load_key_bio_write", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a44f966f50636fb8e175d6f2d533c1692", null ], + [ "load_key_bio_read", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3ae42bedb116868d6a66ed2b044fdc0637", null ], + [ "create_mem_bio_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a47fd419b07ca34b7ab701ca47dcdef35", null ], + [ "no_key_provided", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a9187f432c77c43c6246f7d2a112436c0", null ], + [ "invalid_key_size", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a0e127af36ee0857e8d0cd4f46b104ae2", null ], + [ "invalid_key", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3ad9d8172ffa4e21f955e8ad125f9dbc32", null ], + [ "create_context_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3ad50946bd69038b7b1dc23e8493c8abd9", null ], + [ "cert_load_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a3d6de114f6e703a4bcd79b3d9bf22150", null ], + [ "get_key_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a61ffa765262720c4d3f9fa1bae16aef1", null ], + [ "write_key_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3aa981db8d66a8ab35a65c60821b89d66d", null ], + [ "write_cert_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3ad45e2b718ee68984b44ff463759a01da", null ], + [ "convert_to_pem_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a3f97237b9425b9738ff8f55486a12a40", null ], + [ "unknown_curve", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3a932cb16b7eac4aa8595a52a68b6b82db", null ], + [ "set_ecdsa_failed", "namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3aac857872a206a6177062eaadcac40f86", null ] + ] ], + [ "rsa_error", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7", [ + [ "ok", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7a444bcb3a3fcf8389296c49467f27e1d6", null ], + [ "cert_load_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7a3d6de114f6e703a4bcd79b3d9bf22150", null ], + [ "get_key_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7a61ffa765262720c4d3f9fa1bae16aef1", null ], + [ "write_key_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7aa981db8d66a8ab35a65c60821b89d66d", null ], + [ "write_cert_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7ad45e2b718ee68984b44ff463759a01da", null ], + [ "convert_to_pem_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7a3f97237b9425b9738ff8f55486a12a40", null ], + [ "load_key_bio_write", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7a44f966f50636fb8e175d6f2d533c1692", null ], + [ "load_key_bio_read", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7ae42bedb116868d6a66ed2b044fdc0637", null ], + [ "create_mem_bio_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7a47fd419b07ca34b7ab701ca47dcdef35", null ], + [ "no_key_provided", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7a9187f432c77c43c6246f7d2a112436c0", null ], + [ "set_rsa_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7aca90256766b2b53c009fa2d6f32aab7e", null ], + [ "create_context_failed", "namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7ad50946bd69038b7b1dc23e8493c8abd9", null ] + ] ], + [ "signature_generation_error", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cd", [ + [ "ok", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda444bcb3a3fcf8389296c49467f27e1d6", null ], + [ "hmac_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda3c80daa8e5183892d84eeee4ba8d4225", null ], + [ "create_context_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cdad50946bd69038b7b1dc23e8493c8abd9", null ], + [ "signinit_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cdaced6d1bde8f92a00acce72c1ad77b5ed", null ], + [ "signupdate_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cdaa3956ad366f295e7863216eb0c9cf476", null ], + [ "signfinal_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda8cf7ce834c617c414615cba0b4f44aab", null ], + [ "ecdsa_do_sign_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cdad31784e325bf521b9fcf9fa157a42606", null ], + [ "digestinit_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda540d7251aa18c17af60e5685d2f81928", null ], + [ "digestupdate_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cdacee3a6b4893eb1f81d15741543ddf648", null ], + [ "digestfinal_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cdafc69ffe4a95fa9cd0869df713792c818", null ], + [ "rsa_padding_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda004ad1938f3e55494a84e5179601dea8", null ], + [ "rsa_private_encrypt_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda84789e1aa6ddf95c61fdccaba08f3b55", null ], + [ "get_key_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda61ffa765262720c4d3f9fa1bae16aef1", null ], + [ "set_rsa_pss_saltlen_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cda3b8494597c180ed60912ae5c51177438", null ], + [ "signature_decoding_failed", "namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cdafa403d015a946fdae4d1ba0515dfb3c6", null ] + ] ], + [ "signature_verification_error", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244", [ + [ "ok", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244a444bcb3a3fcf8389296c49467f27e1d6", null ], + [ "invalid_signature", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244a12c527ffd45868061a192960b352b5d9", null ], + [ "create_context_failed", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244ad50946bd69038b7b1dc23e8493c8abd9", null ], + [ "verifyinit_failed", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244a5d43faf0ec0b24438f98bf74d72c5c79", null ], + [ "verifyupdate_failed", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244a946c3b7abfe6b3e54cbc80e11940b199", null ], + [ "verifyfinal_failed", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244a333283503c06d433714ce5b8203364f3", null ], + [ "get_key_failed", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244a61ffa765262720c4d3f9fa1bae16aef1", null ], + [ "set_rsa_pss_saltlen_failed", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244a3b8494597c180ed60912ae5c51177438", null ], + [ "signature_encoding_failed", "namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244ad8e3c0cf1edd42a9dc9dfc91403dcf33", null ] + ] ], + [ "token_verification_error", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baed", [ + [ "ok", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baeda444bcb3a3fcf8389296c49467f27e1d6", null ], + [ "wrong_algorithm", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baeda4404b67544ddc49f3f2094bd49ddf7a9", null ], + [ "missing_claim", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baedacfde715e0d40a081f7f5e422bd937799", null ], + [ "claim_type_missmatch", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baeda7fe3c31fbd6b90c70970a68c367a97c3", null ], + [ "claim_value_missmatch", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baeda70f3db8189bd7eb2942b9f5ab6f43152", null ], + [ "token_expired", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baeda69b58fd647119e4faedceb8c5190f3e9", null ], + [ "audience_missmatch", "namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baedaa01717cbe8c9b54f3fcd5a14f9e7ecfa", null ] + ] ], + [ "ecdsa_error_category", "namespacejwt_1_1error.html#a641d06c74f6ed676ac0636215b50e2b2", null ], + [ "make_error_code", "namespacejwt_1_1error.html#a6f161df364c8c96916102327c44bb222", null ], + [ "make_error_code", "namespacejwt_1_1error.html#ac6388f2c4e7f4ab3178053ad31d8960a", null ], + [ "make_error_code", "namespacejwt_1_1error.html#ada6a1ce2904f5f1bacad36dcdf98bcf1", null ], + [ "make_error_code", "namespacejwt_1_1error.html#a10e1eb999b24b20b47a109e2195cdd3f", null ], + [ "make_error_code", "namespacejwt_1_1error.html#ade95fa33d7627f499b36643b3280d79f", null ], + [ "rsa_error_category", "namespacejwt_1_1error.html#a7fd09a10a0c499fe063293a10caf89e9", null ], + [ "signature_generation_error_category", "namespacejwt_1_1error.html#a86c5b0c1df898d66161455b323b8053e", null ], + [ "signature_verification_error_category", "namespacejwt_1_1error.html#a7c0e4691aa8c55743300cd068ad23aec", null ], + [ "throw_if_error", "namespacejwt_1_1error.html#a4735679a4ffc8a483f7560d722fdbd4d", null ], + [ "token_verification_error_category", "namespacejwt_1_1error.html#a187142c60516cc974c86efb5e277922d", null ] +]; \ No newline at end of file diff --git a/namespacejwt_1_1helper.html b/namespacejwt_1_1helper.html new file mode 100644 index 00000000..5d8ef02e --- /dev/null +++ b/namespacejwt_1_1helper.html @@ -0,0 +1,1465 @@ + + + + + + + +JWT-CPP: jwt::helper Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::helper Namespace Reference
    +
    +
    + +

    A collection for working with certificates. +More...

    + + + + + +

    +Classes

    class  evp_pkey_handle
     Handle class for EVP_PKEY structures. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +std::unique_ptr< BIO, decltype(&BIO_free_all)> make_mem_buf_bio ()
     
    +std::unique_ptr< BIO, decltype(&BIO_free_all)> make_mem_buf_bio (const std::string &data)
     
    +template<typename error_category = error::rsa_error>
    std::string write_bio_to_string (std::unique_ptr< BIO, decltype(&BIO_free_all)> &bio_out, std::error_code &ec)
     
    +std::unique_ptr< EVP_MD_CTX, void(*)(EVP_MD_CTX *)> make_evp_md_ctx ()
     
    template<typename error_category = error::rsa_error>
    std::string extract_pubkey_from_cert (const std::string &certstr, const std::string &pw, std::error_code &ec)
     Extract the public key of a pem certificate.
     
    template<typename error_category = error::rsa_error>
    std::string extract_pubkey_from_cert (const std::string &certstr, const std::string &pw="")
     Extract the public key of a pem certificate.
     
    std::string convert_der_to_pem (const std::string &cert_der_str, std::error_code &ec)
     Convert the certificate provided as DER to PEM.
     
    template<typename Decode >
    std::string convert_base64_der_to_pem (const std::string &cert_base64_der_str, Decode decode, std::error_code &ec)
     Convert the certificate provided as base64 DER to PEM.
     
    template<typename Decode >
    std::string convert_base64_der_to_pem (const std::string &cert_base64_der_str, Decode decode)
     Convert the certificate provided as base64 DER to PEM.
     
    std::string convert_der_to_pem (const std::string &cert_der_str)
     Convert the certificate provided as DER to PEM.
     
    std::string convert_base64_der_to_pem (const std::string &cert_base64_der_str, std::error_code &ec)
     Convert the certificate provided as base64 DER to PEM.
     
    std::string convert_base64_der_to_pem (const std::string &cert_base64_der_str)
     Convert the certificate provided as base64 DER to PEM.
     
    template<typename error_category = error::rsa_error>
    evp_pkey_handle load_public_key_from_string (const std::string &key, const std::string &password, std::error_code &ec)
     Load a public key from a string.
     
    template<typename error_category = error::rsa_error>
    evp_pkey_handle load_public_key_from_string (const std::string &key, const std::string &password="")
     Load a public key from a string.
     
    template<typename error_category = error::rsa_error>
    evp_pkey_handle load_private_key_from_string (const std::string &key, const std::string &password, std::error_code &ec)
     Load a private key from a string.
     
    template<typename error_category = error::rsa_error>
    evp_pkey_handle load_private_key_from_string (const std::string &key, const std::string &password="")
     Load a private key from a string.
     
    evp_pkey_handle load_public_ec_key_from_string (const std::string &key, const std::string &password, std::error_code &ec)
     Load a public key from a string.
     
    std::string bn2raw (const BIGNUM *bn)
     
    std::unique_ptr< BIGNUM, decltype(&BN_free)> raw2bn (const std::string &raw, std::error_code &ec)
     
    std::unique_ptr< BIGNUM, decltype(&BN_free)> raw2bn (const std::string &raw)
     
    evp_pkey_handle load_public_ec_key_from_string (const std::string &key, const std::string &password="")
     Load a public key from a string.
     
    evp_pkey_handle load_private_ec_key_from_string (const std::string &key, const std::string &password, std::error_code &ec)
     Load a private key from a string.
     
    template<typename Decode >
    std::string create_public_key_from_rsa_components (const std::string &modulus, const std::string &exponent, Decode decode, std::error_code &ec)
     create public key from modulus and exponent. This is defined in RFC 7518 Section 6.3 Using the required "n" (Modulus) Parameter and "e" (Exponent) Parameter.
     
    template<typename Decode >
    std::string create_public_key_from_rsa_components (const std::string &modulus, const std::string &exponent, Decode decode)
     
    std::string create_public_key_from_rsa_components (const std::string &modulus, const std::string &exponent, std::error_code &ec)
     
    std::string create_public_key_from_rsa_components (const std::string &modulus, const std::string &exponent)
     
    evp_pkey_handle load_private_ec_key_from_string (const std::string &key, const std::string &password="")
     Load a private key from a string.
     
    int curve2nid (const std::string curve, std::error_code &ec)
     Convert a curve name to an ID.
     
    template<typename Decode >
    std::string create_public_key_from_ec_components (const std::string &curve, const std::string &x, const std::string &y, Decode decode, std::error_code &ec)
     
    template<typename Decode >
    std::string create_public_key_from_ec_components (const std::string &curve, const std::string &x, const std::string &y, Decode decode)
     
    std::string create_public_key_from_ec_components (const std::string &curve, const std::string &x, const std::string &y, std::error_code &ec)
     
    std::string create_public_key_from_ec_components (const std::string &curve, const std::string &x, const std::string &y)
     
    +

    Detailed Description

    +

    A collection for working with certificates.

    +

    These helpers are usefully when working with certificates OpenSSL APIs. For example, when dealing with JWKS (JSON Web Key Set)[https://tools.ietf.org/html/rfc7517] you maybe need to extract the modulus and exponent of an RSA Public Key.

    +

    Function Documentation

    + +

    ◆ bn2raw()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::helper::bn2raw (const BIGNUM * bn)
    +
    +inline
    +
    +

    Convert a OpenSSL BIGNUM to a std::string

    Parameters
    + + +
    bnBIGNUM to convert
    +
    +
    +
    Returns
    bignum as string
    + +
    +
    + +

    ◆ convert_base64_der_to_pem() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::helper::convert_base64_der_to_pem (const std::string & cert_base64_der_str)
    +
    +inline
    +
    + +

    Convert the certificate provided as base64 DER to PEM.

    +

    This is useful when using with JWKs as x5c claim is encoded as base64 DER. More info here

    +
    Parameters
    + + +
    cert_base64_der_strString containing the certificate encoded as base64 DER
    +
    +
    +
    Exceptions
    + + +
    rsa_exceptionif an error occurred
    +
    +
    + +
    +
    + +

    ◆ convert_base64_der_to_pem() [2/4]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + +
    std::string jwt::helper::convert_base64_der_to_pem (const std::string & cert_base64_der_str,
    Decode decode )
    +
    + +

    Convert the certificate provided as base64 DER to PEM.

    +

    This is useful when using with JWKs as x5c claim is encoded as base64 DER. More info here

    +
    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64 decode and return the results.
    +
    +
    +
    Parameters
    + + + +
    cert_base64_der_strString containing the certificate encoded as base64 DER
    decodeThe function to decode the cert
    +
    +
    +
    Exceptions
    + + +
    rsa_exceptionif an error occurred
    +
    +
    + +
    +
    + +

    ◆ convert_base64_der_to_pem() [3/4]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + + + + + + +
    std::string jwt::helper::convert_base64_der_to_pem (const std::string & cert_base64_der_str,
    Decode decode,
    std::error_code & ec )
    +
    + +

    Convert the certificate provided as base64 DER to PEM.

    +

    This is useful when using with JWKs as x5c claim is encoded as base64 DER. More info here.

    +
    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64 decode and return the results.
    +
    +
    +
    Parameters
    + + + + +
    cert_base64_der_strString containing the certificate encoded as base64 DER
    decodeThe function to decode the cert
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    + +
    +
    + +

    ◆ convert_base64_der_to_pem() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::helper::convert_base64_der_to_pem (const std::string & cert_base64_der_str,
    std::error_code & ec )
    +
    +inline
    +
    + +

    Convert the certificate provided as base64 DER to PEM.

    +

    This is useful when using with JWKs as x5c claim is encoded as base64 DER. More info here

    +
    Parameters
    + + + +
    cert_base64_der_strString containing the certificate encoded as base64 DER
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    + +
    +
    + +

    ◆ convert_der_to_pem() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::helper::convert_der_to_pem (const std::string & cert_der_str)
    +
    +inline
    +
    + +

    Convert the certificate provided as DER to PEM.

    +
    Parameters
    + + +
    cert_der_strString containing the DER certificate
    +
    +
    +
    Exceptions
    + + +
    rsa_exceptionif an error occurred
    +
    +
    + +
    +
    + +

    ◆ convert_der_to_pem() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::helper::convert_der_to_pem (const std::string & cert_der_str,
    std::error_code & ec )
    +
    +inline
    +
    + +

    Convert the certificate provided as DER to PEM.

    +
    Parameters
    + + + +
    cert_der_strString containing the certificate encoded as base64 DER
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    + +
    +
    + +

    ◆ create_public_key_from_ec_components() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_ec_components (const std::string & curve,
    const std::string & x,
    const std::string & y )
    +
    +inline
    +
    +

    Create public key from curve name and coordinates. This is defined in RFC 7518 Section 6.2 Using the required "crv" (Curve), "x" (X Coordinate) and "y" (Y Coordinate) Parameters.

    +
    Parameters
    + + + + +
    curvestring containing curve name
    xstring containing base64url encoded x coordinate
    ystring containing base64url encoded y coordinate
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ create_public_key_from_ec_components() [2/4]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_ec_components (const std::string & curve,
    const std::string & x,
    const std::string & y,
    Decode decode )
    +
    +

    Create public key from curve name and coordinates. This is defined in RFC 7518 Section 6.2 Using the required "crv" (Curve), "x" (X Coordinate) and "y" (Y Coordinate) Parameters.

    +
    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + + + +
    curvestring containing curve name
    xstring containing base64url encoded x coordinate
    ystring containing base64url encoded y coordinate
    decodeThe function to decode the RSA parameters
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ create_public_key_from_ec_components() [3/4]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_ec_components (const std::string & curve,
    const std::string & x,
    const std::string & y,
    Decode decode,
    std::error_code & ec )
    +
    +

    Create public key from curve name and coordinates. This is defined in RFC 7518 Section 6.2 Using the required "crv" (Curve), "x" (X Coordinate) and "y" (Y Coordinate) Parameters.

    +
    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + + + + +
    curvestring containing curve name
    xstring containing base64url encoded x coordinate
    ystring containing base64url encoded y coordinate
    decodeThe function to decode the RSA parameters
    ecerror_code for error_detection (gets cleared if no error occur
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ create_public_key_from_ec_components() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_ec_components (const std::string & curve,
    const std::string & x,
    const std::string & y,
    std::error_code & ec )
    +
    +inline
    +
    +

    Create public key from curve name and coordinates. This is defined in RFC 7518 Section 6.2 Using the required "crv" (Curve), "x" (X Coordinate) and "y" (Y Coordinate) Parameters.

    +
    Parameters
    + + + + + +
    curvestring containing curve name
    xstring containing base64url encoded x coordinate
    ystring containing base64url encoded y coordinate
    ecerror_code for error_detection (gets cleared if no error occur
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ create_public_key_from_rsa_components() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_rsa_components (const std::string & modulus,
    const std::string & exponent )
    +
    +inline
    +
    +

    Create public key from modulus and exponent. This is defined in RFC 7518 Section 6.3 Using the required "n" (Modulus) Parameter and "e" (Exponent) Parameter.

    +
    Parameters
    + + + +
    modulusstring containing base64url encoded modulus
    exponentstring containing base64url encoded exponent
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ create_public_key_from_rsa_components() [2/4]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_rsa_components (const std::string & modulus,
    const std::string & exponent,
    Decode decode )
    +
    +

    Create public key from modulus and exponent. This is defined in RFC 7518 Section 6.3 Using the required "n" (Modulus) Parameter and "e" (Exponent) Parameter.

    +
    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + + +
    modulusstring containing base64url encoded modulus
    exponentstring containing base64url encoded exponent
    decodeThe function to decode the RSA parameters
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ create_public_key_from_rsa_components() [3/4]

    + +
    +
    +
    +template<typename Decode >
    + + + + + + + + + + + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_rsa_components (const std::string & modulus,
    const std::string & exponent,
    Decode decode,
    std::error_code & ec )
    +
    + +

    create public key from modulus and exponent. This is defined in RFC 7518 Section 6.3 Using the required "n" (Modulus) Parameter and "e" (Exponent) Parameter.

    +
    Template Parameters
    + + +
    Decodeis callable, taking a string_type and returns a string_type. It should ensure the padding of the input and then base64url decode and return the results.
    +
    +
    +
    Parameters
    + + + + + +
    modulusstring containing base64url encoded modulus
    exponentstring containing base64url encoded exponent
    decodeThe function to decode the RSA parameters
    ecerror_code for error_detection (gets cleared if no error occur
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ create_public_key_from_rsa_components() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    std::string jwt::helper::create_public_key_from_rsa_components (const std::string & modulus,
    const std::string & exponent,
    std::error_code & ec )
    +
    +inline
    +
    +

    Create public key from modulus and exponent. This is defined in RFC 7518 Section 6.3 Using the required "n" (Modulus) Parameter and "e" (Exponent) Parameter.

    +
    Parameters
    + + + + +
    modulusstring containing base64 encoded modulus
    exponentstring containing base64 encoded exponent
    ecerror_code for error_detection (gets cleared if no error occur
    +
    +
    +
    Returns
    public key in PEM format
    + +
    +
    + +

    ◆ curve2nid()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    int jwt::helper::curve2nid (const std::string curve,
    std::error_code & ec )
    +
    +inline
    +
    + +

    Convert a curve name to an ID.

    +
    Parameters
    + + + +
    curvestring containing curve name
    ecerror_code for error_detection
    +
    +
    +
    Returns
    ID
    + +
    +
    + +

    ◆ extract_pubkey_from_cert() [1/2]

    + +
    +
    +
    +template<typename error_category = error::rsa_error>
    + + + + + + + + + + + + + + + + +
    std::string jwt::helper::extract_pubkey_from_cert (const std::string & certstr,
    const std::string & pw,
    std::error_code & ec )
    +
    + +

    Extract the public key of a pem certificate.

    +
    Template Parameters
    + + +
    error_categoryjwt::error enum category to match with the keys being used
    +
    +
    +
    Parameters
    + + + + +
    certstrString containing the certificate encoded as pem
    pwPassword used to decrypt certificate (leave empty if not encrypted)
    ecerror_code for error_detection (gets cleared if no error occurred)
    +
    +
    + +
    +
    + +

    ◆ extract_pubkey_from_cert() [2/2]

    + +
    +
    +
    +template<typename error_category = error::rsa_error>
    + + + + + + + + + + + +
    std::string jwt::helper::extract_pubkey_from_cert (const std::string & certstr,
    const std::string & pw = "" )
    +
    + +

    Extract the public key of a pem certificate.

    +
    Template Parameters
    + + +
    error_categoryjwt::error enum category to match with the keys being used
    +
    +
    +
    Parameters
    + + + +
    certstrString containing the certificate encoded as pem
    pwPassword used to decrypt certificate (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    templatederror_category's type exception if an error occurred
    +
    +
    + +
    +
    + +

    ◆ load_private_ec_key_from_string() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_private_ec_key_from_string (const std::string & key,
    const std::string & password,
    std::error_code & ec )
    +
    +inline
    +
    + +

    Load a private key from a string.

    +
    Deprecated
    Use the templated version helper::load_private_key_from_string with error::ecdsa_error
    +
    Parameters
    + + + + +
    keyString containing a private key as pem
    passwordPassword used to decrypt key (leave empty if not encrypted)
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    + +
    +
    + +

    ◆ load_private_ec_key_from_string() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_private_ec_key_from_string (const std::string & key,
    const std::string & password = "" )
    +
    +inline
    +
    + +

    Load a private key from a string.

    +
    Deprecated
    Use the templated version helper::load_private_key_from_string with error::ecdsa_error
    +
    Parameters
    + + + +
    keyString containing a private key as pem
    passwordPassword used to decrypt key (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    ecdsa_exceptionif an error occurred
    +
    +
    + +
    +
    + +

    ◆ load_private_key_from_string() [1/2]

    + +
    +
    +
    +template<typename error_category = error::rsa_error>
    + + + + + +
    + + + + + + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_private_key_from_string (const std::string & key,
    const std::string & password,
    std::error_code & ec )
    +
    +inline
    +
    + +

    Load a private key from a string.

    +
    Template Parameters
    + + +
    error_categoryjwt::error enum category to match with the keys being used
    +
    +
    +
    Parameters
    + + + + +
    keyString containing a private key as pem
    passwordPassword used to decrypt key (leave empty if not encrypted)
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    + +
    +
    + +

    ◆ load_private_key_from_string() [2/2]

    + +
    +
    +
    +template<typename error_category = error::rsa_error>
    + + + + + +
    + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_private_key_from_string (const std::string & key,
    const std::string & password = "" )
    +
    +inline
    +
    + +

    Load a private key from a string.

    +
    Template Parameters
    + + +
    error_categoryjwt::error enum category to match with the keys being used
    +
    +
    +
    Parameters
    + + + +
    keyString containing a private key as pem
    passwordPassword used to decrypt key (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    Templatederror_category's type exception if an error occurred
    +
    +
    + +
    +
    + +

    ◆ load_public_ec_key_from_string() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_public_ec_key_from_string (const std::string & key,
    const std::string & password,
    std::error_code & ec )
    +
    +inline
    +
    + +

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

    +
    Deprecated
    Use the templated version helper::load_private_key_from_string with error::ecdsa_error
    +
    Parameters
    + + + + +
    keyString containing the certificate encoded as pem
    passwordPassword used to decrypt certificate (leave empty if not encrypted)
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    + +
    +
    + +

    ◆ load_public_ec_key_from_string() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_public_ec_key_from_string (const std::string & key,
    const std::string & password = "" )
    +
    +inline
    +
    + +

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

    +
    Deprecated
    Use the templated version helper::load_private_key_from_string with error::ecdsa_error
    +
    Parameters
    + + + +
    keyString containing the certificate or key encoded as pem
    passwordPassword used to decrypt certificate or key (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    ecdsa_exceptionif an error occurred
    +
    +
    + +
    +
    + +

    ◆ load_public_key_from_string() [1/2]

    + +
    +
    +
    +template<typename error_category = error::rsa_error>
    + + + + + + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_public_key_from_string (const std::string & key,
    const std::string & password,
    std::error_code & ec )
    +
    + +

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

    +
    Template Parameters
    + + +
    error_categoryjwt::error enum category to match with the keys being used
    +
    +
    +
    Parameters
    + + + + +
    keyString containing the certificate encoded as pem
    passwordPassword used to decrypt certificate (leave empty if not encrypted)
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    + +
    +
    + +

    ◆ load_public_key_from_string() [2/2]

    + +
    +
    +
    +template<typename error_category = error::rsa_error>
    + + + + + +
    + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_public_key_from_string (const std::string & key,
    const std::string & password = "" )
    +
    +inline
    +
    + +

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

    +
    Template Parameters
    + + +
    error_categoryjwt::error enum category to match with the keys being used
    +
    +
    +
    Parameters
    + + + +
    keyString containing the certificate encoded as pem
    passwordPassword used to decrypt certificate (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    Templatederror_category's type exception if an error occurred
    +
    +
    + +
    +
    + +

    ◆ raw2bn() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    std::unique_ptr< BIGNUM, decltype(&BN_free)> jwt::helper::raw2bn (const std::string & raw)
    +
    +inline
    +
    +

    Convert an std::string to a OpenSSL BIGNUM

    Parameters
    + + +
    rawString to convert
    +
    +
    +
    Returns
    BIGNUM representation
    + +
    +
    + +

    ◆ raw2bn() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::unique_ptr< BIGNUM, decltype(&BN_free)> jwt::helper::raw2bn (const std::string & raw,
    std::error_code & ec )
    +
    +inline
    +
    +

    Convert an std::string to a OpenSSL BIGNUM

    Parameters
    + + + +
    rawString to convert
    ecerror_code for error_detection (gets cleared if no error occurs)
    +
    +
    +
    Returns
    BIGNUM representation
    + +
    +
    +
    +
    + + + + diff --git a/namespacejwt_1_1helper.js b/namespacejwt_1_1helper.js new file mode 100644 index 00000000..09c3dae5 --- /dev/null +++ b/namespacejwt_1_1helper.js @@ -0,0 +1,32 @@ +var namespacejwt_1_1helper = +[ + [ "evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html", "classjwt_1_1helper_1_1evp__pkey__handle" ], + [ "bn2raw", "namespacejwt_1_1helper.html#aa75689cc6b3d9f710b5c050cc9bff5ff", null ], + [ "convert_base64_der_to_pem", "namespacejwt_1_1helper.html#a792fb50c64b41b4546c2a2b2dfb41746", null ], + [ "convert_base64_der_to_pem", "namespacejwt_1_1helper.html#a8a6dd42aec39dc85dbc3d14df183f125", null ], + [ "convert_base64_der_to_pem", "namespacejwt_1_1helper.html#a868bab109dbaf38adc80f4025c9ce378", null ], + [ "convert_base64_der_to_pem", "namespacejwt_1_1helper.html#ab58e1f3020d0415a71aa9cea1e9fa4f2", null ], + [ "convert_der_to_pem", "namespacejwt_1_1helper.html#aabc2a97481e9cbcee6c4a09705cf4c15", null ], + [ "convert_der_to_pem", "namespacejwt_1_1helper.html#aeb9ab265a9a4baeb4c82288dc869f5b2", null ], + [ "create_public_key_from_ec_components", "namespacejwt_1_1helper.html#ac9e8992adb029afdd8861ffb227ca1c2", null ], + [ "create_public_key_from_ec_components", "namespacejwt_1_1helper.html#a40c830b9869c674e5a7c53d211546902", null ], + [ "create_public_key_from_ec_components", "namespacejwt_1_1helper.html#ac0b56b1459920a749a75f6f3c950e87e", null ], + [ "create_public_key_from_ec_components", "namespacejwt_1_1helper.html#ac6b7260d5d1fe515aa15a26ba7ddebf8", null ], + [ "create_public_key_from_rsa_components", "namespacejwt_1_1helper.html#a50ee5e3437ce34c0305380dc2ec3febe", null ], + [ "create_public_key_from_rsa_components", "namespacejwt_1_1helper.html#a3de5fd41491a79bd10e3741af6bb54e9", null ], + [ "create_public_key_from_rsa_components", "namespacejwt_1_1helper.html#a5e85008a942e3fb63adcd063cb2fa89a", null ], + [ "create_public_key_from_rsa_components", "namespacejwt_1_1helper.html#ab77020dc9808b2384738739ff53b9c60", null ], + [ "curve2nid", "namespacejwt_1_1helper.html#a6c9a8700c42e112d9dde037471201875", null ], + [ "extract_pubkey_from_cert", "namespacejwt_1_1helper.html#a29716cee5cd54a7b39de4395ea6cb194", null ], + [ "extract_pubkey_from_cert", "namespacejwt_1_1helper.html#a3395ae07af120d7cbd48ea2d5f163e73", null ], + [ "load_private_ec_key_from_string", "namespacejwt_1_1helper.html#a63731359f8e1b6d0b31f3a768fc355f1", null ], + [ "load_private_ec_key_from_string", "namespacejwt_1_1helper.html#ad23f6478334425f86a75b659981187ca", null ], + [ "load_private_key_from_string", "namespacejwt_1_1helper.html#acbfd2c904cc2d2f603ef3524930c9802", null ], + [ "load_private_key_from_string", "namespacejwt_1_1helper.html#a5091f944a41985bf1c72117bf7a87368", null ], + [ "load_public_ec_key_from_string", "namespacejwt_1_1helper.html#a366b03033ec53d5321256b9f05238b38", null ], + [ "load_public_ec_key_from_string", "namespacejwt_1_1helper.html#a7ca85602a4520008b1b624e1b175bba5", null ], + [ "load_public_key_from_string", "namespacejwt_1_1helper.html#a46af07b491df1bb8ce2f91419167bddf", null ], + [ "load_public_key_from_string", "namespacejwt_1_1helper.html#a305734040e76012a413378d65fad2611", null ], + [ "raw2bn", "namespacejwt_1_1helper.html#aedff25cd41e1136d225e172e1fa61461", null ], + [ "raw2bn", "namespacejwt_1_1helper.html#a620f9b2cdcdcbfb8d398411cebd1f83c", null ] +]; \ No newline at end of file diff --git a/namespacejwt_1_1json.html b/namespacejwt_1_1json.html new file mode 100644 index 00000000..94d7063a --- /dev/null +++ b/namespacejwt_1_1json.html @@ -0,0 +1,160 @@ + + + + + + + +JWT-CPP: jwt::json Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::json Namespace Reference
    +
    +
    + +

    JSON Abstractions for working with any library. +More...

    + + + + + +

    +Enumerations

    enum class  type {
    +  boolean +, integer +, number +, string +,
    +  array +, object +
    + }
     Categories for the various JSON types used in JWTs. More...
     
    +

    Detailed Description

    +

    JSON Abstractions for working with any library.

    +

    Enumeration Type Documentation

    + +

    ◆ type

    + +
    +
    + + + + + +
    + + + + +
    enum class jwt::json::type
    +
    +strong
    +
    + +

    Categories for the various JSON types used in JWTs.

    +

    This enum is to abstract the third party underlying types and allows the library to identify the different structures and reason about them without needing a "concept" to capture that defintion to compare against a concrete type.

    + +
    +
    +
    +
    + + + + diff --git a/namespacejwt_1_1traits.html b/namespacejwt_1_1traits.html new file mode 100644 index 00000000..0f3388cf --- /dev/null +++ b/namespacejwt_1_1traits.html @@ -0,0 +1,137 @@ + + + + + + + +JWT-CPP: jwt::traits Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits Namespace Reference
    +
    +
    + +

    Namespace containing all the json_trait implementations for a jwt::basic_claim. +More...

    + + + + + + + + + + + + + + + + + +

    +Classes

    struct  boost_json
     basic_claim's JSON trait implementation for Boost.JSON More...
     
    struct  danielaparker_jsoncons
     basic_claim's JSON trait implementation for jsoncons. More...
     
    struct  kazuho_picojson
     basic_claim's JSON trait implementation for picojson More...
     
    struct  nlohmann_json
     basic_claim's JSON trait implementation for Modern C++ JSON More...
     
    struct  open_source_parsers_jsoncpp
     basic_claim's JSON trait implementation for jsoncpp More...
     
    +

    Detailed Description

    +

    Namespace containing all the json_trait implementations for a jwt::basic_claim.

    +
    +
    + + + + diff --git a/namespacejwt_1_1traits.js b/namespacejwt_1_1traits.js new file mode 100644 index 00000000..ce99fc78 --- /dev/null +++ b/namespacejwt_1_1traits.js @@ -0,0 +1,8 @@ +var namespacejwt_1_1traits = +[ + [ "boost_json", "structjwt_1_1traits_1_1boost__json.html", null ], + [ "danielaparker_jsoncons", "structjwt_1_1traits_1_1danielaparker__jsoncons.html", "structjwt_1_1traits_1_1danielaparker__jsoncons" ], + [ "kazuho_picojson", "structjwt_1_1traits_1_1kazuho__picojson.html", null ], + [ "nlohmann_json", "structjwt_1_1traits_1_1nlohmann__json.html", null ], + [ "open_source_parsers_jsoncpp", "structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html", "structjwt_1_1traits_1_1open__source__parsers__jsoncpp" ] +]; \ No newline at end of file diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 00000000..7d8a8252 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,187 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

      +
    • signature_generation_error : jwt::error
    • +
    • signature_generation_error_category() : jwt::error
    • +
    • signature_verification_error : jwt::error
    • +
    • signature_verification_error_category() : jwt::error
    • +
    + + +

    - t -

    + + +

    - v -

      +
    • verify() : jwt
    • +
    • verify_context : jwt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 00000000..afa057db --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace enums with links to the namespaces they belong to:
    +
    +
    + + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 00000000..a12f4524 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,178 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

      +
    • signature_generation_error_category() : jwt::error
    • +
    • signature_verification_error_category() : jwt::error
    • +
    + + +

    - t -

    + + +

    - v -

      +
    • verify() : jwt
    • +
    +
    +
    + + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 00000000..112e39c5 --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,112 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace typedefs with links to the namespaces they belong to:
      +
    • claim : jwt
    • +
    • date : jwt
    • +
    • verify_context : jwt
    • +
    +
    +
    + + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 00000000..a06ef04e --- /dev/null +++ b/namespaces.html @@ -0,0 +1,171 @@ + + + + + + + +JWT-CPP: Namespace List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     NjwtJSON Web Token
     NalgorithmVarious cryptographic algorithms when working with JWT
     CecdsaBase class for ECDSA family of algorithms
     Ced25519
     Ced448
     CeddsaBase class for EdDSA family of algorithms
     Ces256
     Ces256k
     Ces384
     Ces512
     ChmacshaBase class for HMAC family of algorithms
     Chs256
     Chs384
     Chs512
     Cnone"none" algorithm
     Cps256
     Cps384
     Cps512
     CpssBase class for PSS-RSA family of algorithms
     Crs256
     Crs384
     Crs512
     CrsaBase class for RSA family of algorithms
     NalphabetCharacter maps when encoding and decoding
     Cbase64Valid list of character when working with Base64
     Cbase64urlValid list of character when working with Base64URL
     NbaseA collection of fellable functions for working with base64 and base64url
     NerrorEverything related to error codes issued by the library
     Cclaim_not_present_exception
     Cecdsa_exception
     Cinvalid_json_exception
     Crsa_exception
     Csignature_generation_exception
     Csignature_verification_exception
     Ctoken_verification_exception
     NhelperA collection for working with certificates
     Cevp_pkey_handleHandle class for EVP_PKEY structures
     NjsonJSON Abstractions for working with any library
     NtraitsNamespace containing all the json_trait implementations for a jwt::basic_claim
     Cboost_jsonBasic_claim's JSON trait implementation for Boost.JSON
     Cdanielaparker_jsonconsBasic_claim's JSON trait implementation for jsoncons
     Carray_type
     Cobject_type
     Ckazuho_picojsonBasic_claim's JSON trait implementation for picojson
     Cnlohmann_jsonBasic_claim's JSON trait implementation for Modern C++ JSON
     Copen_source_parsers_jsoncppBasic_claim's JSON trait implementation for jsoncpp
     Carray_type
     Cobject_type
     Cbasic_claimClass to store a generic JSON value as claim
     Cbuilder
     Cdecoded_jwt
     Cdefault_clock
     Cheader
     CjwkJSON Web Key
     CjwksJWK Set
     Cpayload
     Cverifier
    +
    +
    +
    + + + + diff --git a/namespaces_dup.js b/namespaces_dup.js new file mode 100644 index 00000000..8ef37513 --- /dev/null +++ b/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "jwt", "namespacejwt.html", "namespacejwt" ] +]; \ No newline at end of file diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 00000000..72a58a52 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 00000000..032fbdd4 Binary files /dev/null and b/nav_fd.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 00000000..2093a237 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 00000000..33389b10 Binary files /dev/null and b/nav_h.png differ diff --git a/nav_hd.png b/nav_hd.png new file mode 100644 index 00000000..de80f18a Binary files /dev/null and b/nav_hd.png differ diff --git a/navtree.css b/navtree.css new file mode 100644 index 00000000..6b1e5e46 --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url('splitbar.png'); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 00000000..884b79b6 --- /dev/null +++ b/navtree.js @@ -0,0 +1,482 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + window.location.href=aname; + animationInProgress=false; + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +JWT-CPP: include/jwt-cpp/traits/nlohmann-json/defaults.h Source File + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    defaults.h
    +
    +
    +
    1#ifndef JWT_CPP_NLOHMANN_JSON_DEFAULTS_H
    +
    2#define JWT_CPP_NLOHMANN_JSON_DEFAULTS_H
    +
    3
    +
    4#ifndef JWT_DISABLE_PICOJSON
    +
    5#define JWT_DISABLE_PICOJSON
    +
    6#endif
    +
    7
    +
    8#include "traits.h"
    +
    9
    +
    10namespace jwt {
    +
    17 using claim = basic_claim<traits::nlohmann_json>;
    +
    18
    +
    23 inline verifier<default_clock, traits::nlohmann_json> verify() {
    +
    24 return verify<default_clock, traits::nlohmann_json>(default_clock{});
    +
    25 }
    +
    26
    +
    31 inline builder<default_clock, traits::nlohmann_json> create() {
    +
    32 return builder<default_clock, traits::nlohmann_json>(default_clock{});
    +
    33 }
    +
    34
    +
    35#ifndef JWT_DISABLE_BASE64
    +
    43 inline decoded_jwt<traits::nlohmann_json> decode(const std::string& token) {
    +
    44 return decoded_jwt<traits::nlohmann_json>(token);
    +
    45 }
    +
    46#endif
    +
    47
    +
    59 template<typename Decode>
    +
    +
    60 decoded_jwt<traits::nlohmann_json> decode(const std::string& token, Decode decode) {
    + +
    62 }
    +
    +
    63
    +
    70 inline jwk<traits::nlohmann_json> parse_jwk(const traits::nlohmann_json::string_type& token) {
    +
    71 return jwk<traits::nlohmann_json>(token);
    +
    72 }
    +
    73
    +
    80 inline jwks<traits::nlohmann_json> parse_jwks(const traits::nlohmann_json::string_type& token) {
    +
    81 return jwks<traits::nlohmann_json>(token);
    +
    82 }
    +
    83
    +
    88 using verify_context = verify_ops::verify_context<traits::nlohmann_json>;
    +
    89} // namespace jwt
    +
    90
    +
    91#endif // JWT_CPP_NLOHMANN_JSON_DEFAULTS_H
    +
    Definition jwt.h:2954
    +
    JSON Web Token.
    Definition base.h:21
    +
    verifier< default_clock, traits::boost_json > verify()
    Definition defaults.h:23
    +
    jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
    Definition jwt.h:4195
    +
    jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
    Definition jwt.h:4209
    +
    builder< default_clock, traits::boost_json > create()
    Definition defaults.h:31
    +
    basic_claim< traits::boost_json > claim
    a class to store a generic Boost.JSON value as claim
    Definition defaults.h:17
    +
    decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
    Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
    Definition jwt.h:4170
    +
    verify_ops::verify_context< traits::boost_json > verify_context
    Definition defaults.h:88
    +
    +
    + + + + diff --git a/nlohmann-json_2traits_8h_source.html b/nlohmann-json_2traits_8h_source.html new file mode 100644 index 00000000..c3947646 --- /dev/null +++ b/nlohmann-json_2traits_8h_source.html @@ -0,0 +1,198 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/nlohmann-json/traits.h Source File + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    traits.h
    +
    +
    +
    1#ifndef JWT_CPP_NLOHMANN_JSON_TRAITS_H
    +
    2#define JWT_CPP_NLOHMANN_JSON_TRAITS_H
    +
    3
    +
    4#include "jwt-cpp/jwt.h"
    +
    5#include "nlohmann/json.hpp"
    +
    6
    +
    7namespace jwt {
    +
    11 namespace traits {
    +
    + +
    14 using json = nlohmann::json;
    +
    15 using value_type = json;
    +
    16 using object_type = json::object_t;
    +
    17 using array_type = json::array_t;
    +
    18 using string_type = std::string; // current limitation of traits implementation
    +
    19 using number_type = json::number_float_t;
    +
    20 using integer_type = json::number_integer_t;
    +
    21 using boolean_type = json::boolean_t;
    +
    22
    +
    23 static jwt::json::type get_type(const json& val) {
    +
    24 using jwt::json::type;
    +
    25
    +
    26 if (val.type() == json::value_t::boolean) return type::boolean;
    +
    27 // nlohmann internally tracks two types of integers
    +
    28 if (val.type() == json::value_t::number_integer) return type::integer;
    +
    29 if (val.type() == json::value_t::number_unsigned) return type::integer;
    +
    30 if (val.type() == json::value_t::number_float) return type::number;
    +
    31 if (val.type() == json::value_t::string) return type::string;
    +
    32 if (val.type() == json::value_t::array) return type::array;
    +
    33 if (val.type() == json::value_t::object) return type::object;
    +
    34
    +
    35 throw std::logic_error("invalid type");
    +
    36 }
    +
    37
    +
    38 static json::object_t as_object(const json& val) {
    +
    39 if (val.type() != json::value_t::object) throw std::bad_cast();
    +
    40 return val.get<json::object_t>();
    +
    41 }
    +
    42
    +
    43 static std::string as_string(const json& val) {
    +
    44 if (val.type() != json::value_t::string) throw std::bad_cast();
    +
    45 return val.get<std::string>();
    +
    46 }
    +
    47
    +
    48 static json::array_t as_array(const json& val) {
    +
    49 if (val.type() != json::value_t::array) throw std::bad_cast();
    +
    50 return val.get<json::array_t>();
    +
    51 }
    +
    52
    +
    53 static int64_t as_integer(const json& val) {
    +
    54 switch (val.type()) {
    +
    55 case json::value_t::number_integer:
    +
    56 case json::value_t::number_unsigned: return val.get<int64_t>();
    +
    57 default: throw std::bad_cast();
    +
    58 }
    +
    59 }
    +
    60
    +
    61 static bool as_boolean(const json& val) {
    +
    62 if (val.type() != json::value_t::boolean) throw std::bad_cast();
    +
    63 return val.get<bool>();
    +
    64 }
    +
    65
    +
    66 static double as_number(const json& val) {
    +
    67 if (val.type() != json::value_t::number_float) throw std::bad_cast();
    +
    68 return val.get<double>();
    +
    69 }
    +
    70
    +
    71 static bool parse(json& val, std::string str) {
    +
    72 val = json::parse(str.begin(), str.end());
    +
    73 return true;
    +
    74 }
    +
    75
    +
    76 static std::string serialize(const json& val) { return val.dump(); }
    +
    77 };
    +
    +
    78 } // namespace traits
    +
    79} // namespace jwt
    +
    80
    +
    81#endif
    +
    type
    Categories for the various JSON types used in JWTs.
    Definition jwt.h:2274
    +
    JSON Web Token.
    Definition base.h:21
    +
    basic_claim's JSON trait implementation for Modern C++ JSON
    Definition traits.h:13
    +
    +
    + + + + diff --git a/open-source-parsers-jsoncpp_2defaults_8h_source.html b/open-source-parsers-jsoncpp_2defaults_8h_source.html new file mode 100644 index 00000000..f369e3ca --- /dev/null +++ b/open-source-parsers-jsoncpp_2defaults_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/open-source-parsers-jsoncpp/defaults.h Source File + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    defaults.h
    +
    +
    +
    1#ifndef JWT_CPP_OPEN_SOURCE_PARSERS_JSONCPP_DEFAULTS_H
    +
    2#define JWT_CPP_OPEN_SOURCE_PARSERS_JSONCPP_DEFAULTS_H
    +
    3
    +
    4#ifndef JWT_DISABLE_PICOJSON
    +
    5#define JWT_DISABLE_PICOJSON
    +
    6#endif
    +
    7
    +
    8#include "traits.h"
    +
    9
    +
    10namespace jwt {
    +
    17 using claim = basic_claim<traits::open_source_parsers_jsoncpp>;
    +
    18
    +
    23 inline verifier<default_clock, traits::open_source_parsers_jsoncpp> verify() {
    +
    24 return verify<default_clock, traits::open_source_parsers_jsoncpp>(default_clock{});
    +
    25 }
    +
    26
    +
    31 inline builder<default_clock, traits::open_source_parsers_jsoncpp> create() {
    +
    32 return builder<default_clock, traits::open_source_parsers_jsoncpp>(default_clock{});
    +
    33 }
    +
    34
    +
    35#ifndef JWT_DISABLE_BASE64
    +
    43 inline decoded_jwt<traits::open_source_parsers_jsoncpp> decode(const std::string& token) {
    +
    44 return decoded_jwt<traits::open_source_parsers_jsoncpp>(token);
    +
    45 }
    +
    46#endif
    +
    47
    +
    59 template<typename Decode>
    + +
    63
    +
    70 inline jwk<traits::open_source_parsers_jsoncpp>
    +
    71 parse_jwk(const traits::open_source_parsers_jsoncpp::string_type& token) {
    +
    72 return jwk<traits::open_source_parsers_jsoncpp>(token);
    +
    73 }
    +
    74
    +
    81 inline jwks<traits::open_source_parsers_jsoncpp>
    +
    82 parse_jwks(const traits::open_source_parsers_jsoncpp::string_type& token) {
    +
    83 return jwks<traits::open_source_parsers_jsoncpp>(token);
    +
    84 }
    +
    85
    +
    90 using verify_context = verify_ops::verify_context<traits::open_source_parsers_jsoncpp>;
    +
    91} // namespace jwt
    +
    92
    +
    93#endif // JWT_CPP_OPEN_SOURCE_PARSERS_JSONCPP_DEFAULTS_H
    +
    Definition jwt.h:2954
    +
    JSON Web Token.
    Definition base.h:21
    +
    verifier< default_clock, traits::boost_json > verify()
    Definition defaults.h:23
    +
    jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
    Definition jwt.h:4195
    +
    jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
    Definition jwt.h:4209
    +
    builder< default_clock, traits::boost_json > create()
    Definition defaults.h:31
    +
    basic_claim< traits::boost_json > claim
    a class to store a generic Boost.JSON value as claim
    Definition defaults.h:17
    +
    decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
    Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
    Definition jwt.h:4170
    +
    verify_ops::verify_context< traits::boost_json > verify_context
    Definition defaults.h:88
    +
    +
    + + + + diff --git a/open-source-parsers-jsoncpp_2traits_8h_source.html b/open-source-parsers-jsoncpp_2traits_8h_source.html new file mode 100644 index 00000000..8a1a52d9 --- /dev/null +++ b/open-source-parsers-jsoncpp_2traits_8h_source.html @@ -0,0 +1,263 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/open-source-parsers-jsoncpp/traits.h Source File + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    traits.h
    +
    +
    +
    1#ifndef JWT_CPP_JSONCPP_TRAITS_H
    +
    2#define JWT_CPP_JSONCPP_TRAITS_H
    +
    3
    +
    4#include "jwt-cpp/jwt.h"
    +
    5#include "json/json.h"
    +
    6
    +
    7namespace jwt {
    +
    11 namespace traits {
    +
    + +
    14 using value_type = Json::Value;
    +
    15 using string_type = std::string;
    +
    +
    16 class array_type : public Json::Value {
    +
    17 public:
    +
    18 using value_type = Json::Value;
    +
    19
    +
    20 array_type() = default;
    +
    21 array_type(const array_type&) = default;
    +
    22 explicit array_type(const Json::Value& o) : Json::Value(o) {}
    +
    23 array_type(array_type&&) = default;
    +
    24 explicit array_type(Json::Value&& o) : Json::Value(o) {}
    +
    25 template<typename Iterator>
    +
    26 array_type(Iterator begin, Iterator end) {
    +
    27 for (Iterator it = begin; it != end; ++it) {
    +
    28 Json::Value value;
    +
    29 value = *it;
    +
    30 this->append(value);
    +
    31 }
    +
    32 }
    +
    33 ~array_type() = default;
    +
    34 array_type& operator=(const array_type& o) = default;
    +
    35 array_type& operator=(array_type&& o) noexcept = default;
    +
    36
    +
    37 value_type const& front() const { return this->operator[](0U); }
    +
    38 };
    +
    +
    39 using number_type = double;
    +
    40 using integer_type = Json::Value::Int;
    +
    41 using boolean_type = bool;
    +
    +
    42 class object_type : public Json::Value {
    +
    43 public:
    +
    44 using key_type = std::string;
    +
    45 using mapped_type = Json::Value;
    +
    46 using size_type = size_t;
    +
    47
    +
    48 object_type() = default;
    +
    49 object_type(const object_type&) = default;
    +
    50 explicit object_type(const Json::Value& o) : Json::Value(o) {}
    +
    51 object_type(object_type&&) = default;
    +
    52 explicit object_type(Json::Value&& o) : Json::Value(o) {}
    +
    53 ~object_type() = default;
    +
    54 object_type& operator=(const object_type& o) = default;
    +
    55 object_type& operator=(object_type&& o) noexcept = default;
    +
    56
    +
    57 // Add missing C++11 element access
    +
    58 const mapped_type& at(const key_type& key) const {
    +
    59 Json::Value const* found = find(key.data(), key.data() + key.length());
    +
    60 if (!found) throw std::out_of_range("invalid key");
    +
    61 return *found;
    +
    62 }
    +
    63
    +
    64 size_type count(const key_type& key) const { return this->isMember(key) ? 1 : 0; }
    +
    65 };
    +
    +
    66
    +
    67 // Translation between the implementation notion of type, to the jwt::json::type equivilant
    +
    68 static jwt::json::type get_type(const value_type& val) {
    +
    69 using jwt::json::type;
    +
    70
    +
    71 if (val.isArray())
    +
    72 return type::array;
    +
    73 else if (val.isString())
    +
    74 return type::string;
    +
    75 // Order is important https://github.com/Thalhammer/jwt-cpp/pull/320#issuecomment-1865322511
    +
    76 else if (val.isInt())
    +
    77 return type::integer;
    +
    78 else if (val.isNumeric())
    +
    79 return type::number;
    +
    80 else if (val.isBool())
    +
    81 return type::boolean;
    +
    82 else if (val.isObject())
    +
    83 return type::object;
    +
    84
    +
    85 throw std::logic_error("invalid type");
    +
    86 }
    +
    87
    +
    88 static integer_type as_integer(const value_type& val) {
    +
    89 switch (val.type()) {
    +
    90 case Json::intValue: return val.asInt64();
    +
    91 case Json::uintValue: return static_cast<integer_type>(val.asUInt64());
    +
    92 default: throw std::bad_cast();
    +
    93 }
    +
    94 }
    +
    95
    +
    96 static boolean_type as_boolean(const value_type& val) {
    +
    97 if (!val.isBool()) throw std::bad_cast();
    +
    98 return val.asBool();
    +
    99 }
    +
    100
    +
    101 static number_type as_number(const value_type& val) {
    +
    102 if (!val.isNumeric()) throw std::bad_cast();
    +
    103 return val.asDouble();
    +
    104 }
    +
    105
    +
    106 static string_type as_string(const value_type& val) {
    +
    107 if (!val.isString()) throw std::bad_cast();
    +
    108 return val.asString();
    +
    109 }
    +
    110
    +
    111 static object_type as_object(const value_type& val) {
    +
    112 if (!val.isObject()) throw std::bad_cast();
    +
    113 return object_type(val);
    +
    114 }
    +
    115
    +
    116 static array_type as_array(const value_type& val) {
    +
    117 if (!val.isArray()) throw std::bad_cast();
    +
    118 return array_type(val);
    +
    119 }
    +
    120
    +
    121 static bool parse(value_type& val, string_type str) {
    +
    122 Json::CharReaderBuilder builder;
    +
    123 const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
    +
    124
    +
    125 return reader->parse(reinterpret_cast<const char*>(str.c_str()),
    +
    126 reinterpret_cast<const char*>(str.c_str() + str.size()), &val, nullptr);
    +
    127 }
    +
    128
    +
    129 static string_type serialize(const value_type& val) {
    +
    130 Json::StreamWriterBuilder builder;
    +
    131 builder["commentStyle"] = "None";
    +
    132 builder["indentation"] = "";
    +
    133 std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
    +
    134 return Json::writeString(builder, val);
    +
    135 }
    +
    136 };
    +
    +
    137 } // namespace traits
    +
    138} // namespace jwt
    +
    139
    +
    140#endif
    + + +
    type
    Categories for the various JSON types used in JWTs.
    Definition jwt.h:2274
    +
    JSON Web Token.
    Definition base.h:21
    +
    basic_claim's JSON trait implementation for jsoncpp
    Definition traits.h:13
    +
    +
    + + + + diff --git a/open.png b/open.png new file mode 100644 index 00000000..30f75c7e Binary files /dev/null and b/open.png differ diff --git a/overrides.css b/overrides.css new file mode 100644 index 00000000..279c2df8 --- /dev/null +++ b/overrides.css @@ -0,0 +1,26 @@ +html { + --top-nav-height: 150px +} + +@media screen and (min-width: 768px) { + #top { + height: var(--top-nav-height); + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-nav-height)) !important; + } + + #side-nav { + top: var(--top-nav-height); + } +} + +.paramname em { + font-weight: 600; + color: var(--primary-dark-color); +} + +a code { + color: var(--primary-color) !important; +} diff --git a/pages.html b/pages.html new file mode 100644 index 00000000..3ff28927 --- /dev/null +++ b/pages.html @@ -0,0 +1,121 @@ + + + + + + + +JWT-CPP: Related Pages + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/partial-claim-verifier_8cpp.html b/partial-claim-verifier_8cpp.html new file mode 100644 index 00000000..3f6b3b78 --- /dev/null +++ b/partial-claim-verifier_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: example/partial-claim-verifier.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    partial-claim-verifier.cpp File Reference
    +
    +
    +
    #include "jwt-cpp/traits/nlohmann-json/defaults.h"
    +#include <iostream>
    +
    +Include dependency graph for partial-claim-verifier.cpp:
    +
    +
    +
    +
    + + + +

    +Functions

    +int main ()
     
    +
    +
    + + + + diff --git a/partial-claim-verifier_8cpp__incl.map b/partial-claim-verifier_8cpp__incl.map new file mode 100644 index 00000000..7cfeb4f2 --- /dev/null +++ b/partial-claim-verifier_8cpp__incl.map @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/partial-claim-verifier_8cpp__incl.md5 b/partial-claim-verifier_8cpp__incl.md5 new file mode 100644 index 00000000..ef698b7b --- /dev/null +++ b/partial-claim-verifier_8cpp__incl.md5 @@ -0,0 +1 @@ +9343e546d0239bc47bbe8f2d79e87479 \ No newline at end of file diff --git a/partial-claim-verifier_8cpp__incl.svg b/partial-claim-verifier_8cpp__incl.svg new file mode 100644 index 00000000..17b0aa81 --- /dev/null +++ b/partial-claim-verifier_8cpp__incl.svg @@ -0,0 +1,708 @@ + + + + + + +example/partial-claim-verifier.cpp + + +Node1 + + +example/partial-claim +-verifier.cpp + + + + + +Node2 + + +jwt-cpp/traits/nlohmann +-json/defaults.h + + + + + +Node1->Node2 + + + + + + + + +Node37 + + +iostream + + + + + +Node1->Node37 + + + + + + + + +Node3 + + +traits.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +jwt-cpp/jwt.h + + + + + +Node3->Node4 + + + + + + + + +Node36 + + +nlohmann/json.hpp + + + + + +Node3->Node36 + + + + + + + + +Node5 + + +picojson/picojson.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +base.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +algorithm + + + + + +Node4->Node7 + + + + + + + + +Node12 + + +vector + + + + + +Node4->Node12 + + + + + + + + +Node13 + + +openssl/ec.h + + + + + +Node4->Node13 + + + + + + + + +Node14 + + +openssl/ecdsa.h + + + + + +Node4->Node14 + + + + + + + + +Node15 + + +openssl/err.h + + + + + +Node4->Node15 + + + + + + + + +Node16 + + +openssl/evp.h + + + + + +Node4->Node16 + + + + + + + + +Node17 + + +openssl/hmac.h + + + + + +Node4->Node17 + + + + + + + + +Node18 + + +openssl/pem.h + + + + + +Node4->Node18 + + + + + + + + +Node19 + + +openssl/rsa.h + + + + + +Node4->Node19 + + + + + + + + +Node20 + + +openssl/ssl.h + + + + + +Node4->Node20 + + + + + + + + +Node21 + + +chrono + + + + + +Node4->Node21 + + + + + + + + +Node22 + + +climits + + + + + +Node4->Node22 + + + + + + + + +Node23 + + +cmath + + + + + +Node4->Node23 + + + + + + + + +Node24 + + +cstring + + + + + +Node4->Node24 + + + + + + + + +Node25 + + +functional + + + + + +Node4->Node25 + + + + + + + + +Node26 + + +iterator + + + + + +Node4->Node26 + + + + + + + + +Node27 + + +locale + + + + + +Node4->Node27 + + + + + + + + +Node28 + + +memory + + + + + +Node4->Node28 + + + + + + + + +Node29 + + +set + + + + + +Node4->Node29 + + + + + + + + +Node30 + + +system_error + + + + + +Node4->Node30 + + + + + + + + +Node31 + + +type_traits + + + + + +Node4->Node31 + + + + + + + + +Node32 + + +unordered_map + + + + + +Node4->Node32 + + + + + + + + +Node33 + + +utility + + + + + +Node4->Node33 + + + + + + + + +Node34 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node4->Node34 + + + + + + + + +Node6->Node7 + + + + + + + + +Node8 + + +array + + + + + +Node6->Node8 + + + + + + + + +Node9 + + +cstdint + + + + + +Node6->Node9 + + + + + + + + +Node10 + + +stdexcept + + + + + +Node6->Node10 + + + + + + + + +Node11 + + +string + + + + + +Node6->Node11 + + + + + + + + +Node6->Node12 + + + + + + + + +Node35 + + +traits.h + + + + + +Node34->Node35 + + + + + + + + +Node35->Node4 + + + + + + + + +Node35->Node5 + + + + + + + + diff --git a/plus.svg b/plus.svg new file mode 100644 index 00000000..07520165 --- /dev/null +++ b/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 00000000..0c65bfe9 --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/print-claims_8cpp.html b/print-claims_8cpp.html new file mode 100644 index 00000000..e8b4adca --- /dev/null +++ b/print-claims_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: example/print-claims.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    print-claims.cpp File Reference
    +
    +
    +
    #include <iostream>
    +#include <jwt-cpp/jwt.h>
    +
    +Include dependency graph for print-claims.cpp:
    +
    +
    +
    +
    + + + +

    +Functions

    +int main ()
     
    +
    +
    + + + + diff --git a/print-claims_8cpp__incl.map b/print-claims_8cpp__incl.map new file mode 100644 index 00000000..3344af70 --- /dev/null +++ b/print-claims_8cpp__incl.map @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/print-claims_8cpp__incl.md5 b/print-claims_8cpp__incl.md5 new file mode 100644 index 00000000..9989af8c --- /dev/null +++ b/print-claims_8cpp__incl.md5 @@ -0,0 +1 @@ +04387ab2f12fa90f8fb943c37aa4908e \ No newline at end of file diff --git a/print-claims_8cpp__incl.svg b/print-claims_8cpp__incl.svg new file mode 100644 index 00000000..62b6d230 --- /dev/null +++ b/print-claims_8cpp__incl.svg @@ -0,0 +1,652 @@ + + + + + + +example/print-claims.cpp + + +Node1 + + +example/print-claims.cpp + + + + + +Node2 + + +iostream + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt-cpp/jwt.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +picojson/picojson.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +base.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +algorithm + + + + + +Node3->Node6 + + + + + + + + +Node11 + + +vector + + + + + +Node3->Node11 + + + + + + + + +Node12 + + +openssl/ec.h + + + + + +Node3->Node12 + + + + + + + + +Node13 + + +openssl/ecdsa.h + + + + + +Node3->Node13 + + + + + + + + +Node14 + + +openssl/err.h + + + + + +Node3->Node14 + + + + + + + + +Node15 + + +openssl/evp.h + + + + + +Node3->Node15 + + + + + + + + +Node16 + + +openssl/hmac.h + + + + + +Node3->Node16 + + + + + + + + +Node17 + + +openssl/pem.h + + + + + +Node3->Node17 + + + + + + + + +Node18 + + +openssl/rsa.h + + + + + +Node3->Node18 + + + + + + + + +Node19 + + +openssl/ssl.h + + + + + +Node3->Node19 + + + + + + + + +Node20 + + +chrono + + + + + +Node3->Node20 + + + + + + + + +Node21 + + +climits + + + + + +Node3->Node21 + + + + + + + + +Node22 + + +cmath + + + + + +Node3->Node22 + + + + + + + + +Node23 + + +cstring + + + + + +Node3->Node23 + + + + + + + + +Node24 + + +functional + + + + + +Node3->Node24 + + + + + + + + +Node25 + + +iterator + + + + + +Node3->Node25 + + + + + + + + +Node26 + + +locale + + + + + +Node3->Node26 + + + + + + + + +Node27 + + +memory + + + + + +Node3->Node27 + + + + + + + + +Node28 + + +set + + + + + +Node3->Node28 + + + + + + + + +Node29 + + +system_error + + + + + +Node3->Node29 + + + + + + + + +Node30 + + +type_traits + + + + + +Node3->Node30 + + + + + + + + +Node31 + + +unordered_map + + + + + +Node3->Node31 + + + + + + + + +Node32 + + +utility + + + + + +Node3->Node32 + + + + + + + + +Node33 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node3->Node33 + + + + + + + + +Node5->Node6 + + + + + + + + +Node7 + + +array + + + + + +Node5->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node5->Node8 + + + + + + + + +Node9 + + +stdexcept + + + + + +Node5->Node9 + + + + + + + + +Node10 + + +string + + + + + +Node5->Node10 + + + + + + + + +Node5->Node11 + + + + + + + + +Node34 + + +traits.h + + + + + +Node33->Node34 + + + + + + + + +Node34->Node3 + + + + + + + + +Node34->Node4 + + + + + + + + diff --git a/private-claims_8cpp.html b/private-claims_8cpp.html new file mode 100644 index 00000000..52b69fd0 --- /dev/null +++ b/private-claims_8cpp.html @@ -0,0 +1,138 @@ + + + + + + + +JWT-CPP: example/private-claims.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    private-claims.cpp File Reference
    +
    +
    +
    #include <jwt-cpp/jwt.h>
    +#include <iostream>
    +#include <sstream>
    +
    +Include dependency graph for private-claims.cpp:
    +
    +
    +
    +
    + + + + + +

    +Typedefs

    +using sec = std::chrono::seconds
     
    +using min = std::chrono::minutes
     
    + + + +

    +Functions

    +int main ()
     
    +
    +
    + + + + diff --git a/private-claims_8cpp__incl.map b/private-claims_8cpp__incl.map new file mode 100644 index 00000000..40910081 --- /dev/null +++ b/private-claims_8cpp__incl.map @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/private-claims_8cpp__incl.md5 b/private-claims_8cpp__incl.md5 new file mode 100644 index 00000000..99ee1599 --- /dev/null +++ b/private-claims_8cpp__incl.md5 @@ -0,0 +1 @@ +0e9fd96aa2db2fc92a60c29e79448d1d \ No newline at end of file diff --git a/private-claims_8cpp__incl.svg b/private-claims_8cpp__incl.svg new file mode 100644 index 00000000..d5596b4c --- /dev/null +++ b/private-claims_8cpp__incl.svg @@ -0,0 +1,670 @@ + + + + + + +example/private-claims.cpp + + +Node1 + + +example/private-claims.cpp + + + + + +Node2 + + +jwt-cpp/jwt.h + + + + + +Node1->Node2 + + + + + + + + +Node34 + + +iostream + + + + + +Node1->Node34 + + + + + + + + +Node35 + + +sstream + + + + + +Node1->Node35 + + + + + + + + +Node3 + + +picojson/picojson.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +base.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +algorithm + + + + + +Node2->Node5 + + + + + + + + +Node10 + + +vector + + + + + +Node2->Node10 + + + + + + + + +Node11 + + +openssl/ec.h + + + + + +Node2->Node11 + + + + + + + + +Node12 + + +openssl/ecdsa.h + + + + + +Node2->Node12 + + + + + + + + +Node13 + + +openssl/err.h + + + + + +Node2->Node13 + + + + + + + + +Node14 + + +openssl/evp.h + + + + + +Node2->Node14 + + + + + + + + +Node15 + + +openssl/hmac.h + + + + + +Node2->Node15 + + + + + + + + +Node16 + + +openssl/pem.h + + + + + +Node2->Node16 + + + + + + + + +Node17 + + +openssl/rsa.h + + + + + +Node2->Node17 + + + + + + + + +Node18 + + +openssl/ssl.h + + + + + +Node2->Node18 + + + + + + + + +Node19 + + +chrono + + + + + +Node2->Node19 + + + + + + + + +Node20 + + +climits + + + + + +Node2->Node20 + + + + + + + + +Node21 + + +cmath + + + + + +Node2->Node21 + + + + + + + + +Node22 + + +cstring + + + + + +Node2->Node22 + + + + + + + + +Node23 + + +functional + + + + + +Node2->Node23 + + + + + + + + +Node24 + + +iterator + + + + + +Node2->Node24 + + + + + + + + +Node25 + + +locale + + + + + +Node2->Node25 + + + + + + + + +Node26 + + +memory + + + + + +Node2->Node26 + + + + + + + + +Node27 + + +set + + + + + +Node2->Node27 + + + + + + + + +Node28 + + +system_error + + + + + +Node2->Node28 + + + + + + + + +Node29 + + +type_traits + + + + + +Node2->Node29 + + + + + + + + +Node30 + + +unordered_map + + + + + +Node2->Node30 + + + + + + + + +Node31 + + +utility + + + + + +Node2->Node31 + + + + + + + + +Node32 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node2->Node32 + + + + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +array + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +cstdint + + + + + +Node4->Node7 + + + + + + + + +Node8 + + +stdexcept + + + + + +Node4->Node8 + + + + + + + + +Node9 + + +string + + + + + +Node4->Node9 + + + + + + + + +Node4->Node10 + + + + + + + + +Node33 + + +traits.h + + + + + +Node32->Node33 + + + + + + + + +Node33->Node2 + + + + + + + + +Node33->Node3 + + + + + + + + diff --git a/resize.js b/resize.js new file mode 100644 index 00000000..6ad2ae80 --- /dev/null +++ b/resize.js @@ -0,0 +1,109 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable() { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() { + const headerHeight = header.outerHeight(); + const footerHeight = footer.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: () => resizeWidth() }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(() => resizeHeight()); + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = (evt) => evt.preventDefault(); + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/rsa-create_8cpp.html b/rsa-create_8cpp.html new file mode 100644 index 00000000..35a8a2cc --- /dev/null +++ b/rsa-create_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: example/rsa-create.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rsa-create.cpp File Reference
    +
    +
    +
    #include <iostream>
    +#include <jwt-cpp/jwt.h>
    +
    +Include dependency graph for rsa-create.cpp:
    +
    +
    +
    +
    + + + +

    +Functions

    +int main ()
     
    +
    +
    + + + + diff --git a/rsa-create_8cpp__incl.map b/rsa-create_8cpp__incl.map new file mode 100644 index 00000000..b68a05be --- /dev/null +++ b/rsa-create_8cpp__incl.map @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rsa-create_8cpp__incl.md5 b/rsa-create_8cpp__incl.md5 new file mode 100644 index 00000000..5b8a9ed8 --- /dev/null +++ b/rsa-create_8cpp__incl.md5 @@ -0,0 +1 @@ +5a6e6e16c6c983c685cbeb416c8ef6fe \ No newline at end of file diff --git a/rsa-create_8cpp__incl.svg b/rsa-create_8cpp__incl.svg new file mode 100644 index 00000000..b14302a8 --- /dev/null +++ b/rsa-create_8cpp__incl.svg @@ -0,0 +1,652 @@ + + + + + + +example/rsa-create.cpp + + +Node1 + + +example/rsa-create.cpp + + + + + +Node2 + + +iostream + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt-cpp/jwt.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +picojson/picojson.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +base.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +algorithm + + + + + +Node3->Node6 + + + + + + + + +Node11 + + +vector + + + + + +Node3->Node11 + + + + + + + + +Node12 + + +openssl/ec.h + + + + + +Node3->Node12 + + + + + + + + +Node13 + + +openssl/ecdsa.h + + + + + +Node3->Node13 + + + + + + + + +Node14 + + +openssl/err.h + + + + + +Node3->Node14 + + + + + + + + +Node15 + + +openssl/evp.h + + + + + +Node3->Node15 + + + + + + + + +Node16 + + +openssl/hmac.h + + + + + +Node3->Node16 + + + + + + + + +Node17 + + +openssl/pem.h + + + + + +Node3->Node17 + + + + + + + + +Node18 + + +openssl/rsa.h + + + + + +Node3->Node18 + + + + + + + + +Node19 + + +openssl/ssl.h + + + + + +Node3->Node19 + + + + + + + + +Node20 + + +chrono + + + + + +Node3->Node20 + + + + + + + + +Node21 + + +climits + + + + + +Node3->Node21 + + + + + + + + +Node22 + + +cmath + + + + + +Node3->Node22 + + + + + + + + +Node23 + + +cstring + + + + + +Node3->Node23 + + + + + + + + +Node24 + + +functional + + + + + +Node3->Node24 + + + + + + + + +Node25 + + +iterator + + + + + +Node3->Node25 + + + + + + + + +Node26 + + +locale + + + + + +Node3->Node26 + + + + + + + + +Node27 + + +memory + + + + + +Node3->Node27 + + + + + + + + +Node28 + + +set + + + + + +Node3->Node28 + + + + + + + + +Node29 + + +system_error + + + + + +Node3->Node29 + + + + + + + + +Node30 + + +type_traits + + + + + +Node3->Node30 + + + + + + + + +Node31 + + +unordered_map + + + + + +Node3->Node31 + + + + + + + + +Node32 + + +utility + + + + + +Node3->Node32 + + + + + + + + +Node33 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node3->Node33 + + + + + + + + +Node5->Node6 + + + + + + + + +Node7 + + +array + + + + + +Node5->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node5->Node8 + + + + + + + + +Node9 + + +stdexcept + + + + + +Node5->Node9 + + + + + + + + +Node10 + + +string + + + + + +Node5->Node10 + + + + + + + + +Node5->Node11 + + + + + + + + +Node34 + + +traits.h + + + + + +Node33->Node34 + + + + + + + + +Node34->Node3 + + + + + + + + +Node34->Node4 + + + + + + + + diff --git a/rsa-verify_8cpp.html b/rsa-verify_8cpp.html new file mode 100644 index 00000000..e3a915fd --- /dev/null +++ b/rsa-verify_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: example/rsa-verify.cpp File Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rsa-verify.cpp File Reference
    +
    +
    +
    #include <iostream>
    +#include <jwt-cpp/jwt.h>
    +
    +Include dependency graph for rsa-verify.cpp:
    +
    +
    +
    +
    + + + +

    +Functions

    +int main ()
     
    +
    +
    + + + + diff --git a/rsa-verify_8cpp__incl.map b/rsa-verify_8cpp__incl.map new file mode 100644 index 00000000..29cd99b5 --- /dev/null +++ b/rsa-verify_8cpp__incl.map @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rsa-verify_8cpp__incl.md5 b/rsa-verify_8cpp__incl.md5 new file mode 100644 index 00000000..ea939833 --- /dev/null +++ b/rsa-verify_8cpp__incl.md5 @@ -0,0 +1 @@ +3d77ad720653c7ce792e3972d0f4a6df \ No newline at end of file diff --git a/rsa-verify_8cpp__incl.svg b/rsa-verify_8cpp__incl.svg new file mode 100644 index 00000000..782aa9c6 --- /dev/null +++ b/rsa-verify_8cpp__incl.svg @@ -0,0 +1,652 @@ + + + + + + +example/rsa-verify.cpp + + +Node1 + + +example/rsa-verify.cpp + + + + + +Node2 + + +iostream + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt-cpp/jwt.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +picojson/picojson.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +base.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +algorithm + + + + + +Node3->Node6 + + + + + + + + +Node11 + + +vector + + + + + +Node3->Node11 + + + + + + + + +Node12 + + +openssl/ec.h + + + + + +Node3->Node12 + + + + + + + + +Node13 + + +openssl/ecdsa.h + + + + + +Node3->Node13 + + + + + + + + +Node14 + + +openssl/err.h + + + + + +Node3->Node14 + + + + + + + + +Node15 + + +openssl/evp.h + + + + + +Node3->Node15 + + + + + + + + +Node16 + + +openssl/hmac.h + + + + + +Node3->Node16 + + + + + + + + +Node17 + + +openssl/pem.h + + + + + +Node3->Node17 + + + + + + + + +Node18 + + +openssl/rsa.h + + + + + +Node3->Node18 + + + + + + + + +Node19 + + +openssl/ssl.h + + + + + +Node3->Node19 + + + + + + + + +Node20 + + +chrono + + + + + +Node3->Node20 + + + + + + + + +Node21 + + +climits + + + + + +Node3->Node21 + + + + + + + + +Node22 + + +cmath + + + + + +Node3->Node22 + + + + + + + + +Node23 + + +cstring + + + + + +Node3->Node23 + + + + + + + + +Node24 + + +functional + + + + + +Node3->Node24 + + + + + + + + +Node25 + + +iterator + + + + + +Node3->Node25 + + + + + + + + +Node26 + + +locale + + + + + +Node3->Node26 + + + + + + + + +Node27 + + +memory + + + + + +Node3->Node27 + + + + + + + + +Node28 + + +set + + + + + +Node3->Node28 + + + + + + + + +Node29 + + +system_error + + + + + +Node3->Node29 + + + + + + + + +Node30 + + +type_traits + + + + + +Node3->Node30 + + + + + + + + +Node31 + + +unordered_map + + + + + +Node3->Node31 + + + + + + + + +Node32 + + +utility + + + + + +Node3->Node32 + + + + + + + + +Node33 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node3->Node33 + + + + + + + + +Node5->Node6 + + + + + + + + +Node7 + + +array + + + + + +Node5->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node5->Node8 + + + + + + + + +Node9 + + +stdexcept + + + + + +Node5->Node9 + + + + + + + + +Node10 + + +string + + + + + +Node5->Node10 + + + + + + + + +Node5->Node11 + + + + + + + + +Node34 + + +traits.h + + + + + +Node33->Node34 + + + + + + + + +Node34->Node3 + + + + + + + + +Node34->Node4 + + + + + + + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 00000000..7f468050 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['allow_5falgorithm_0',['allow_algorithm',['../classjwt_1_1verifier.html#ae2cc9d0125be58b51f4c4aa30878aa41',1,'jwt::verifier']]], + ['array_5ftype_1',['array_type',['../classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type.html',1,'jwt::traits::danielaparker_jsoncons::array_type'],['../classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html',1,'jwt::traits::open_source_parsers_jsoncpp::array_type']]], + ['as_5farray_2',['as_array',['../classjwt_1_1basic__claim.html#af06fe57ced0b69e5d3e0480b283ac31f',1,'jwt::basic_claim']]], + ['as_5fboolean_3',['as_boolean',['../classjwt_1_1basic__claim.html#a97442d8e2ba7ac24201d1d16d6c32aef',1,'jwt::basic_claim']]], + ['as_5fdate_4',['as_date',['../classjwt_1_1basic__claim.html#aadef1dd6e6275680067940fedb06ab08',1,'jwt::basic_claim']]], + ['as_5finteger_5',['as_integer',['../classjwt_1_1basic__claim.html#ae2c58375c443bfc1037066edaf88be53',1,'jwt::basic_claim']]], + ['as_5fnumber_6',['as_number',['../classjwt_1_1basic__claim.html#a2000561f92e202acdeb532f15056e764',1,'jwt::basic_claim']]], + ['as_5fset_7',['as_set',['../classjwt_1_1basic__claim.html#a33b043d261a23cd108778893a24ae976',1,'jwt::basic_claim']]], + ['as_5fstring_8',['as_string',['../classjwt_1_1basic__claim.html#afe7cd8e0feebff55c05adfe71748e1fd',1,'jwt::basic_claim']]], + ['asked_20questions_9',['Frequently Asked Questions',['../md_docs_2faqs.html',1,'']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 00000000..05e8f2d9 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['base64_0',['base64',['../structjwt_1_1alphabet_1_1base64.html',1,'jwt::alphabet']]], + ['base64url_1',['base64url',['../structjwt_1_1alphabet_1_1base64url.html',1,'jwt::alphabet']]], + ['base64url_5fpercent_5fencoding_2',['base64url_percent_encoding',['../structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html',1,'jwt::alphabet::helper']]], + ['basic_5fclaim_3',['basic_claim',['../classjwt_1_1basic__claim.html',1,'jwt']]], + ['bn2raw_4',['bn2raw',['../namespacejwt_1_1helper.html#aa75689cc6b3d9f710b5c050cc9bff5ff',1,'jwt::helper']]], + ['boost_5fjson_5',['boost_json',['../structjwt_1_1traits_1_1boost__json.html',1,'jwt::traits']]], + ['builder_6',['builder',['../classjwt_1_1builder.html',1,'jwt::builder< Clock, json_traits >'],['../classjwt_1_1builder.html#a526a5810677403c5cf4825ff29211bad',1,'jwt::builder::builder()']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 00000000..6178922e --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['questions_0',['Frequently Asked Questions',['../md_docs_2faqs.html',1,'']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 00000000..35e9d84a --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['raw2bn_0',['raw2bn',['../namespacejwt_1_1helper.html#a620f9b2cdcdcbfb8d398411cebd1f83c',1,'jwt::helper::raw2bn(const std::string &raw, std::error_code &ec)'],['../namespacejwt_1_1helper.html#aedff25cd41e1136d225e172e1fa61461',1,'jwt::helper::raw2bn(const std::string &raw)']]], + ['reporting_20security_20issues_1',['Reporting Security Issues',['../md__8github_2security.html',1,'']]], + ['rs256_2',['rs256',['../structjwt_1_1algorithm_1_1rs256.html',1,'jwt::algorithm::rs256'],['../structjwt_1_1algorithm_1_1rs256.html#aa87ccde15aad4ad592fa4ac0a2a5f748',1,'jwt::algorithm::rs256::rs256()']]], + ['rs384_3',['rs384',['../structjwt_1_1algorithm_1_1rs384.html',1,'jwt::algorithm::rs384'],['../structjwt_1_1algorithm_1_1rs384.html#a3f5bada82c323b97a6b1c5777bc512ef',1,'jwt::algorithm::rs384::rs384()']]], + ['rs512_4',['rs512',['../structjwt_1_1algorithm_1_1rs512.html',1,'jwt::algorithm::rs512'],['../structjwt_1_1algorithm_1_1rs512.html#aa3331d1fbe994d97ee57ffdabd05eb1b',1,'jwt::algorithm::rs512::rs512()']]], + ['rsa_5',['rsa',['../structjwt_1_1algorithm_1_1rsa.html',1,'jwt::algorithm::rsa'],['../structjwt_1_1algorithm_1_1rsa.html#a505ccbff5695e94370cc4549c2426bc7',1,'jwt::algorithm::rsa::rsa()']]], + ['rsa_2dcreate_2ecpp_6',['rsa-create.cpp',['../rsa-create_8cpp.html',1,'']]], + ['rsa_2dverify_2ecpp_7',['rsa-verify.cpp',['../rsa-verify_8cpp.html',1,'']]], + ['rsa_5ferror_8',['rsa_error',['../namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7',1,'jwt::error']]], + ['rsa_5ferror_5fcategory_9',['rsa_error_category',['../namespacejwt_1_1error.html#a7fd09a10a0c499fe063293a10caf89e9',1,'jwt::error']]], + ['rsa_5fexception_10',['rsa_exception',['../structjwt_1_1error_1_1rsa__exception.html',1,'jwt::error']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 00000000..acee2b1d --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['security_20issues_0',['Reporting Security Issues',['../md__8github_2security.html',1,'']]], + ['set_5falgorithm_1',['set_algorithm',['../classjwt_1_1builder.html#a30c8575e0bc051ddbd059cc8f33901af',1,'jwt::builder']]], + ['set_5faudience_2',['set_audience',['../classjwt_1_1builder.html#aa467c6fdecc6eb24a15aa8d12ad8bf3f',1,'jwt::builder::set_audience(typename json_traits::array_type a)'],['../classjwt_1_1builder.html#a0802e89ea6f786e5054e65706519a7fc',1,'jwt::builder::set_audience(typename json_traits::string_type aud)']]], + ['set_5fcontent_5ftype_3',['set_content_type',['../classjwt_1_1builder.html#ac981cab62339602cde466e485fd8ba73',1,'jwt::builder']]], + ['set_5fexpires_5fat_4',['set_expires_at',['../classjwt_1_1builder.html#a3a86ce9d30ba356d635096aa52edce59',1,'jwt::builder']]], + ['set_5fexpires_5fin_5',['set_expires_in',['../classjwt_1_1builder.html#a2676613dcdb3e323ba413732fecc5ce2',1,'jwt::builder']]], + ['set_5fheader_5fclaim_6',['set_header_claim',['../classjwt_1_1builder.html#a9d38527f7bc6a602398d31463e02cd45',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)'],['../classjwt_1_1builder.html#aa1a54e4729b429f39d0653dc8ab68c05',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)']]], + ['set_5fid_7',['set_id',['../classjwt_1_1builder.html#a84f4a5eb95b2b1062ac35535e722b2db',1,'jwt::builder']]], + ['set_5fissued_5fat_8',['set_issued_at',['../classjwt_1_1builder.html#a5f04f42f90eac4ae249fc1ad8714389e',1,'jwt::builder']]], + ['set_5fissued_5fnow_9',['set_issued_now',['../classjwt_1_1builder.html#aebdd8cc359dd83a93d16356e7e0d3ec9',1,'jwt::builder']]], + ['set_5fissuer_10',['set_issuer',['../classjwt_1_1builder.html#af3fac73d576d0faa6e876f02d99c9823',1,'jwt::builder']]], + ['set_5fkey_5fid_11',['set_key_id',['../classjwt_1_1builder.html#af20342c125d75feef037649b74c56e94',1,'jwt::builder']]], + ['set_5fnot_5fbefore_12',['set_not_before',['../classjwt_1_1builder.html#ae0246e2cb498e06541ca2980c9da6c76',1,'jwt::builder']]], + ['set_5fpayload_5fclaim_13',['set_payload_claim',['../classjwt_1_1builder.html#a8290a4ad976f0d36f4da6b2310ad847a',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)'],['../classjwt_1_1builder.html#a0e7800e32fa1012cbeaf283786a5e586',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)']]], + ['set_5fsubject_14',['set_subject',['../classjwt_1_1builder.html#ae5722127fba2d9567c6b68a741cbba2f',1,'jwt::builder']]], + ['set_5ft_15',['set_t',['../classjwt_1_1basic__claim.html#a7f91e69345710ff7d8c4a7cc9089c000',1,'jwt::basic_claim']]], + ['set_5ftype_16',['set_type',['../classjwt_1_1builder.html#a49a4e85df1c98faf540b4056a1d00f11',1,'jwt::builder']]], + ['sign_17',['sign',['../structjwt_1_1algorithm_1_1none.html#ad672c49fb2931f1fe5daae3595daf090',1,'jwt::algorithm::none::sign()'],['../structjwt_1_1algorithm_1_1hmacsha.html#a1c4b1e54522894fb83c18b52dd06fc70',1,'jwt::algorithm::hmacsha::sign()'],['../structjwt_1_1algorithm_1_1rsa.html#a35ceb620da332ce4b487866a4bb16eb4',1,'jwt::algorithm::rsa::sign()'],['../structjwt_1_1algorithm_1_1ecdsa.html#a1498ffe04434510bc854e20f9c6c81ed',1,'jwt::algorithm::ecdsa::sign()'],['../structjwt_1_1algorithm_1_1eddsa.html#a696fec4d3122fa795c9cf4c2d41f58aa',1,'jwt::algorithm::eddsa::sign()'],['../structjwt_1_1algorithm_1_1pss.html#ad1a33f36e7f0e3cd73024920504ed596',1,'jwt::algorithm::pss::sign()'],['../classjwt_1_1builder.html#aa25101397fd0eedd6e7025e72e4ebfc0',1,'jwt::builder::sign(const Algo &algo, Encode encode) const'],['../classjwt_1_1builder.html#a7e07c097549542adbafbcdaaf3f96edd',1,'jwt::builder::sign(const Algo &algo) const'],['../classjwt_1_1builder.html#ab3a46c8adeb6b9e5dc76a753bb78cd14',1,'jwt::builder::sign(const Algo &algo, Encode encode, std::error_code &ec) const'],['../classjwt_1_1builder.html#a563bd0c77e05a6ca908aee9b0a8b97e9',1,'jwt::builder::sign(const Algo &algo, std::error_code &ec) const']]], + ['signature_18',['signature',['../classjwt_1_1decoded__jwt.html#a029ac1ee047b99ac75265755a3107ccb',1,'jwt::decoded_jwt']]], + ['signature_5fbase64_19',['signature_base64',['../classjwt_1_1decoded__jwt.html#a8ccaba87d81df84591da392cb8702f2e',1,'jwt::decoded_jwt']]], + ['signature_5fgeneration_5ferror_20',['signature_generation_error',['../namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cd',1,'jwt::error']]], + ['signature_5fgeneration_5ferror_5fcategory_21',['signature_generation_error_category',['../namespacejwt_1_1error.html#a86c5b0c1df898d66161455b323b8053e',1,'jwt::error']]], + ['signature_5fgeneration_5fexception_22',['signature_generation_exception',['../structjwt_1_1error_1_1signature__generation__exception.html',1,'jwt::error']]], + ['signature_5fverification_5ferror_23',['signature_verification_error',['../namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244',1,'jwt::error']]], + ['signature_5fverification_5ferror_5fcategory_24',['signature_verification_error_category',['../namespacejwt_1_1error.html#a7c0e4691aa8c55743300cd068ad23aec',1,'jwt::error']]], + ['signature_5fverification_5fexception_25',['signature_verification_exception',['../structjwt_1_1error_1_1signature__verification__exception.html',1,'jwt::error']]], + ['signing_20tokens_26',['Signing Tokens',['../md_docs_2signing.html',1,'']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 00000000..d8d8223f --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['throw_5fif_5ferror_0',['throw_if_error',['../namespacejwt_1_1error.html#a4735679a4ffc8a483f7560d722fdbd4d',1,'jwt::error']]], + ['to_5fjson_1',['to_json',['../classjwt_1_1basic__claim.html#ae47b0e6de750563a2ba1f9e5628b72ee',1,'jwt::basic_claim']]], + ['token_2',['token',['../classjwt_1_1decoded__jwt.html#a1f564f04da292da715126b57fa4c735e',1,'jwt::decoded_jwt']]], + ['token_5fverification_5ferror_3',['token_verification_error',['../namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baed',1,'jwt::error']]], + ['token_5fverification_5ferror_5fcategory_4',['token_verification_error_category',['../namespacejwt_1_1error.html#a187142c60516cc974c86efb5e277922d',1,'jwt::error']]], + ['token_5fverification_5fexception_5',['token_verification_exception',['../structjwt_1_1error_1_1token__verification__exception.html',1,'jwt::error']]], + ['tokens_6',['Signing Tokens',['../md_docs_2signing.html',1,'']]], + ['traits_7',['JSON Traits',['../md_docs_2traits.html',1,'']]], + ['trim_8',['trim',['../namespacejwt_1_1base.html#a147e03b002f4a6c272364fa04ce09c6e',1,'jwt::base']]], + ['type_9',['type',['../namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3e',1,'jwt::json']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 00000000..3be0ac67 --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['verifier_0',['verifier',['../classjwt_1_1verifier.html',1,'jwt::verifier< Clock, json_traits >'],['../classjwt_1_1verifier.html#aa4764c828213d9ef1537d2490ed98b45',1,'jwt::verifier::verifier()']]], + ['verify_1',['verify',['../structjwt_1_1algorithm_1_1none.html#a7b5d147bcad38fb193d5e21bacd200a2',1,'jwt::algorithm::none::verify()'],['../structjwt_1_1algorithm_1_1hmacsha.html#a8f667034d2f9821f21a430d08e322d5b',1,'jwt::algorithm::hmacsha::verify()'],['../structjwt_1_1algorithm_1_1rsa.html#a0494f35ced969aaa279b431e225ea077',1,'jwt::algorithm::rsa::verify()'],['../structjwt_1_1algorithm_1_1ecdsa.html#a07f0ad6eabfd1dace07e00e51a46cfe1',1,'jwt::algorithm::ecdsa::verify()'],['../structjwt_1_1algorithm_1_1eddsa.html#aeacb514e6be70be3a2874e4c4e1d0852',1,'jwt::algorithm::eddsa::verify()'],['../structjwt_1_1algorithm_1_1pss.html#ad01544d3a3448a2ea611493f68807ea9',1,'jwt::algorithm::pss::verify()'],['../classjwt_1_1verifier.html#aa275e9eedac41ad8d8a0f2a3300acda2',1,'jwt::verifier::verify(const decoded_jwt< json_traits > &jwt) const'],['../classjwt_1_1verifier.html#a448cd954e1ea53ff2bcb39b7cc30cc65',1,'jwt::verifier::verify(const decoded_jwt< json_traits > &jwt, std::error_code &ec) const'],['../namespacejwt.html#a05f9a08741bb8d685f0b2dfbc22820b7',1,'jwt::verify(Clock c)'],['../namespacejwt.html#a68225fdaab1a9a068e28d6acec245694',1,'jwt::verify(default_clock c={})'],['../namespacejwt.html#a64c93da90452a2bf6b4eb81e6560d11c',1,'jwt::verify()']]], + ['verify_5fcheck_5ffn_5ft_2',['verify_check_fn_t',['../classjwt_1_1verifier.html#a52d03bd9864849da855916e44753eea6',1,'jwt::verifier']]], + ['verify_5fcontext_3',['verify_context',['../structjwt_1_1verify__ops_1_1verify__context.html',1,'jwt::verify_ops::verify_context< json_traits >'],['../namespacejwt.html#aff29707468174e3f92fbcc319fe2ea69',1,'jwt::verify_context']]] +]; diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 00000000..7830ef90 --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['with_5faudience_0',['with_audience',['../classjwt_1_1verifier.html#a7cf070f76669f32c96e38ee4e9c5cb00',1,'jwt::verifier::with_audience(const typename basic_claim_t::set_t &aud)'],['../classjwt_1_1verifier.html#a9e1129b30859be9d617547e333ad0ca8',1,'jwt::verifier::with_audience(const typename json_traits::string_type &aud)']]], + ['with_5fclaim_1',['with_claim',['../classjwt_1_1verifier.html#a1e21d481d69ebddb1d7275449c35be23',1,'jwt::verifier::with_claim(const typename json_traits::string_type &name, verify_check_fn_t fn)'],['../classjwt_1_1verifier.html#a9ad51170089fb1566c5d97314cc33e41',1,'jwt::verifier::with_claim(const typename json_traits::string_type &name, basic_claim_t c)']]], + ['with_5fid_2',['with_id',['../classjwt_1_1verifier.html#af26d00278aca90b1c4ee80531aebb8ed',1,'jwt::verifier']]], + ['with_5fissuer_3',['with_issuer',['../classjwt_1_1verifier.html#ad7cf48fc13d29bc59643379c891232cb',1,'jwt::verifier']]], + ['with_5fsubject_4',['with_subject',['../classjwt_1_1verifier.html#a7ae6f50c039290ac6f87e7dda905c25c',1,'jwt::verifier']]], + ['with_5ftype_5',['with_type',['../classjwt_1_1verifier.html#ae77119a8c25bb7b906191f0055981a7b',1,'jwt::verifier']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 00000000..ef774fad --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['claim_0',['claim',['../namespacejwt.html#adc4ce97c8188e4059d3895e2098c66b7',1,'jwt']]], + ['claim_5fkey_1',['claim_key',['../structjwt_1_1verify__ops_1_1verify__context.html#ae17bf5d6d68a5138b7b05ef0cd45365b',1,'jwt::verify_ops::verify_context']]], + ['claim_5fnot_5fpresent_5fexception_2',['claim_not_present_exception',['../structjwt_1_1error_1_1claim__not__present__exception.html',1,'jwt::error']]], + ['convert_5fbase64_5fder_5fto_5fpem_3',['convert_base64_der_to_pem',['../namespacejwt_1_1helper.html#a868bab109dbaf38adc80f4025c9ce378',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str, Decode decode, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a8a6dd42aec39dc85dbc3d14df183f125',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str, Decode decode)'],['../namespacejwt_1_1helper.html#ab58e1f3020d0415a71aa9cea1e9fa4f2',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a792fb50c64b41b4546c2a2b2dfb41746',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str)']]], + ['convert_5fder_5fto_5fpem_4',['convert_der_to_pem',['../namespacejwt_1_1helper.html#aeb9ab265a9a4baeb4c82288dc869f5b2',1,'jwt::helper::convert_der_to_pem(const std::string &cert_der_str, std::error_code &ec)'],['../namespacejwt_1_1helper.html#aabc2a97481e9cbcee6c4a09705cf4c15',1,'jwt::helper::convert_der_to_pem(const std::string &cert_der_str)']]], + ['cpp_5',['JWT-CPP',['../index.html',1,'']]], + ['create_6',['create',['../namespacejwt.html#a3205457bac493a17fcdd4464d043c397',1,'jwt::create(Clock c)'],['../namespacejwt.html#a6732fc1f53b09fb32826e75b09870a4c',1,'jwt::create(default_clock c={})'],['../namespacejwt.html#ab1def99dc2f348cce1495e6d74fa1614',1,'jwt::create()']]], + ['create_5fpublic_5fkey_5ffrom_5fec_5fcomponents_7',['create_public_key_from_ec_components',['../namespacejwt_1_1helper.html#ac0b56b1459920a749a75f6f3c950e87e',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y, Decode decode, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a40c830b9869c674e5a7c53d211546902',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y, Decode decode)'],['../namespacejwt_1_1helper.html#ac6b7260d5d1fe515aa15a26ba7ddebf8',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y, std::error_code &ec)'],['../namespacejwt_1_1helper.html#ac9e8992adb029afdd8861ffb227ca1c2',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y)']]], + ['create_5fpublic_5fkey_5ffrom_5frsa_5fcomponents_8',['create_public_key_from_rsa_components',['../namespacejwt_1_1helper.html#a5e85008a942e3fb63adcd063cb2fa89a',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, Decode decode, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a3de5fd41491a79bd10e3741af6bb54e9',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, Decode decode)'],['../namespacejwt_1_1helper.html#ab77020dc9808b2384738739ff53b9c60',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a50ee5e3437ce34c0305380dc2ec3febe',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent)']]], + ['cryptography_20libraries_9',['Cryptography Libraries',['../md_docs_2ssl.html',1,'']]], + ['current_5ftime_10',['current_time',['../structjwt_1_1verify__ops_1_1verify__context.html#a17a600462f21974dfc97ff60fd2e2747',1,'jwt::verify_ops::verify_context']]], + ['curve2nid_11',['curve2nid',['../namespacejwt_1_1helper.html#a6c9a8700c42e112d9dde037471201875',1,'jwt::helper']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 00000000..ff967530 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['danielaparker_5fjsoncons_0',['danielaparker_jsoncons',['../structjwt_1_1traits_1_1danielaparker__jsoncons.html',1,'jwt::traits']]], + ['date_1',['date',['../namespacejwt.html#a2c7d7a8146a395b1325e63a456d2c8a1',1,'jwt']]], + ['date_5fafter_5fclaim_2',['date_after_claim',['../structjwt_1_1verify__ops_1_1date__after__claim.html',1,'jwt::verify_ops']]], + ['date_5fbefore_5fclaim_3',['date_before_claim',['../structjwt_1_1verify__ops_1_1date__before__claim.html',1,'jwt::verify_ops']]], + ['decode_4',['decode',['../namespacejwt_1_1base.html#a2679bf11e3757c8b9d035ea82509c895',1,'jwt::base::decode()'],['../namespacejwt.html#aefffdd7d2a79d6872c15a7ec1661b149',1,'jwt::decode(const typename json_traits::string_type &token, Decode decode)'],['../namespacejwt.html#ade66496cbe78db1ca2fd769b6982bbc9',1,'jwt::decode(const typename json_traits::string_type &token)'],['../namespacejwt.html#aee1e0e28b218c18aedc0c9fc4568a108',1,'jwt::decode(const std::string &token)'],['../namespacejwt.html#a1888325882765254b8d2680ff1cf3210',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a98607d668bf63870e5dab3f81afe0320',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a627d2f26db17185e7eb7bb92defa70cc',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a65d515aeb39cb5829c7af774051ae91e',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a36eef183151c35ec01ce76484282e14a',1,'jwt::decode(const std::string &token, Decode decode)']]], + ['decoded_5fjwt_5',['decoded_jwt',['../classjwt_1_1decoded__jwt.html',1,'jwt::decoded_jwt< json_traits >'],['../classjwt_1_1decoded__jwt.html#a74547d7eee095f9bb440b572da5edd39',1,'jwt::decoded_jwt::decoded_jwt(const typename json_traits::string_type &token)'],['../classjwt_1_1decoded__jwt.html#a8517ef5dd3f099223ec4477aff546ac8',1,'jwt::decoded_jwt::decoded_jwt(const typename json_traits::string_type &token, Decode decode)']]], + ['default_5fclock_6',['default_clock',['../structjwt_1_1default__clock.html',1,'jwt']]], + ['default_5fleeway_7',['default_leeway',['../structjwt_1_1verify__ops_1_1verify__context.html#a84d6ff2a4a9704af5ffc93a587d4cc95',1,'jwt::verify_ops::verify_context']]], + ['deprecated_20list_8',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 00000000..90b8fdbe --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['ecdsa_0',['ecdsa',['../structjwt_1_1algorithm_1_1ecdsa.html',1,'jwt::algorithm::ecdsa'],['../structjwt_1_1algorithm_1_1ecdsa.html#a26916f3b94cced8e413df2b3312432c5',1,'jwt::algorithm::ecdsa::ecdsa()']]], + ['ecdsa_5ferror_1',['ecdsa_error',['../namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3',1,'jwt::error']]], + ['ecdsa_5ferror_5fcategory_2',['ecdsa_error_category',['../namespacejwt_1_1error.html#a641d06c74f6ed676ac0636215b50e2b2',1,'jwt::error']]], + ['ecdsa_5fexception_3',['ecdsa_exception',['../structjwt_1_1error_1_1ecdsa__exception.html',1,'jwt::error']]], + ['ed25519_4',['ed25519',['../structjwt_1_1algorithm_1_1ed25519.html',1,'jwt::algorithm::ed25519'],['../structjwt_1_1algorithm_1_1ed25519.html#aa6c66e731c2b597965768cdcdea29b9a',1,'jwt::algorithm::ed25519::ed25519()']]], + ['ed448_5',['ed448',['../structjwt_1_1algorithm_1_1ed448.html',1,'jwt::algorithm::ed448'],['../structjwt_1_1algorithm_1_1ed448.html#a4fa1fcbc8669ef749f65c39b8a976df7',1,'jwt::algorithm::ed448::ed448()']]], + ['eddsa_6',['eddsa',['../structjwt_1_1algorithm_1_1eddsa.html',1,'jwt::algorithm::eddsa'],['../structjwt_1_1algorithm_1_1eddsa.html#a35aca8602274c1d8afc8ed90532466d1',1,'jwt::algorithm::eddsa::eddsa()']]], + ['empty_7',['empty',['../classjwt_1_1jwk.html#aab2ca3844cbb8338c2f874f522ebe1cf',1,'jwt::jwk']]], + ['encode_8',['encode',['../namespacejwt_1_1base.html#ad2ca00edb94734c69742a1aa867e9d28',1,'jwt::base']]], + ['equals_5fclaim_9',['equals_claim',['../structjwt_1_1verify__ops_1_1equals__claim.html',1,'jwt::verify_ops']]], + ['es256_10',['es256',['../structjwt_1_1algorithm_1_1es256.html',1,'jwt::algorithm::es256'],['../structjwt_1_1algorithm_1_1es256.html#aac62df85a6311e2e3bdfc8821a522127',1,'jwt::algorithm::es256::es256()']]], + ['es256k_11',['es256k',['../structjwt_1_1algorithm_1_1es256k.html',1,'jwt::algorithm::es256k'],['../structjwt_1_1algorithm_1_1es256k.html#ad88e35c7c3494b7da3024f019ab59097',1,'jwt::algorithm::es256k::es256k()']]], + ['es256k_2ecpp_12',['es256k.cpp',['../es256k_8cpp.html',1,'']]], + ['es384_13',['es384',['../structjwt_1_1algorithm_1_1es384.html',1,'jwt::algorithm::es384'],['../structjwt_1_1algorithm_1_1es384.html#a820e0e6673d7c429bfd8bb272d57d849',1,'jwt::algorithm::es384::es384()']]], + ['es512_14',['es512',['../structjwt_1_1algorithm_1_1es512.html',1,'jwt::algorithm::es512'],['../structjwt_1_1algorithm_1_1es512.html#aa37f9fe9071c49b7f686fe382d20e7d7',1,'jwt::algorithm::es512::es512()']]], + ['evp_5fpkey_5fhandle_15',['evp_pkey_handle',['../classjwt_1_1helper_1_1evp__pkey__handle.html',1,'jwt::helper::evp_pkey_handle'],['../classjwt_1_1helper_1_1evp__pkey__handle.html#a8fae1977c01380da9189d10fe429841a',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle() noexcept=default'],['../classjwt_1_1helper_1_1evp__pkey__handle.html#a9948effb83d8dcd17447eff28c852f6f',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle(EVP_PKEY *key) noexcept']]], + ['expires_5fat_5fleeway_16',['expires_at_leeway',['../classjwt_1_1verifier.html#a157d3a7b128aaac1b37a9ba47dd72718',1,'jwt::verifier']]], + ['extract_5fpubkey_5ffrom_5fcert_17',['extract_pubkey_from_cert',['../namespacejwt_1_1helper.html#a29716cee5cd54a7b39de4395ea6cb194',1,'jwt::helper::extract_pubkey_from_cert(const std::string &certstr, const std::string &pw, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a3395ae07af120d7cbd48ea2d5f163e73',1,'jwt::helper::extract_pubkey_from_cert(const std::string &certstr, const std::string &pw="")']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 00000000..546872a2 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frequently_20asked_20questions_0',['Frequently Asked Questions',['../md_docs_2faqs.html',1,'']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 00000000..a77e73af --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['get_5falgorithm_0',['get_algorithm',['../classjwt_1_1header.html#a8ac7e7c26859e172a3f0f22ded7b307f',1,'jwt::header::get_algorithm()'],['../classjwt_1_1jwk.html#a50b2c64b52a7028acfad1e4ac64c8e66',1,'jwt::jwk::get_algorithm()']]], + ['get_5faudience_1',['get_audience',['../classjwt_1_1payload.html#a0131e3f94dc5deaef9f2128e61675ef3',1,'jwt::payload']]], + ['get_5fclaim_2',['get_claim',['../structjwt_1_1verify__ops_1_1verify__context.html#a8a2aef62f0fb92d3372bdfb2bc35baa2',1,'jwt::verify_ops::verify_context::get_claim(bool in_header, std::error_code &ec) const'],['../structjwt_1_1verify__ops_1_1verify__context.html#a5b4875d47d2f2ebd0055fb1e351bae89',1,'jwt::verify_ops::verify_context::get_claim(bool in_header, json::type t, std::error_code &ec) const'],['../structjwt_1_1verify__ops_1_1verify__context.html#ad2148052b231e8fdfa1c277e3dfaeb1d',1,'jwt::verify_ops::verify_context::get_claim(std::error_code &ec) const'],['../structjwt_1_1verify__ops_1_1verify__context.html#ab3a44096e09225a2623001a4a2e98da9',1,'jwt::verify_ops::verify_context::get_claim(json::type t, std::error_code &ec) const']]], + ['get_5fclaims_3',['get_claims',['../classjwt_1_1jwk.html#a5628cd17ea929a33e6d40eef5b073d0d',1,'jwt::jwk']]], + ['get_5fcontent_5ftype_4',['get_content_type',['../classjwt_1_1header.html#ae2cb8d327ed651286af732663ef23c44',1,'jwt::header']]], + ['get_5fcurve_5',['get_curve',['../classjwt_1_1jwk.html#a09d3afa0dcca94aee47c8cb9eb42dc9f',1,'jwt::jwk']]], + ['get_5fexpires_5fat_6',['get_expires_at',['../classjwt_1_1payload.html#adab036c2f63dad223d163ad6689938e5',1,'jwt::payload']]], + ['get_5fheader_7',['get_header',['../classjwt_1_1decoded__jwt.html#a00a77aedba4b77d9ee0a6f32307c2f92',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fbase64_8',['get_header_base64',['../classjwt_1_1decoded__jwt.html#af55156d334c665ad0b11cb6881d242c2',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fclaim_9',['get_header_claim',['../classjwt_1_1header.html#ad941b52adacc083b2b895fbfa23f938b',1,'jwt::header::get_header_claim()'],['../classjwt_1_1decoded__jwt.html#a807f00ca32b360b69b4d8555f7cb7795',1,'jwt::decoded_jwt::get_header_claim(const typename json_traits::string_type &name) const']]], + ['get_5fheader_5fjson_10',['get_header_json',['../classjwt_1_1decoded__jwt.html#acc90b0d668345b0f3c41d382fe087a08',1,'jwt::decoded_jwt']]], + ['get_5fid_11',['get_id',['../classjwt_1_1payload.html#a0cb0076f6d6ca4c8acb498076c8f5721',1,'jwt::payload']]], + ['get_5fissued_5fat_12',['get_issued_at',['../classjwt_1_1payload.html#aa1efb5105a9c3efb49d08b8651069d15',1,'jwt::payload']]], + ['get_5fissuer_13',['get_issuer',['../classjwt_1_1payload.html#afbad104eceb35855baa247ec211eeac4',1,'jwt::payload']]], + ['get_5fjwk_14',['get_jwk',['../classjwt_1_1jwks.html#a25f52012c42fcc2761331db48b0d6926',1,'jwt::jwks']]], + ['get_5fjwk_5fclaim_15',['get_jwk_claim',['../classjwt_1_1jwk.html#af814feaeb94f0394d14341e4e7024ebb',1,'jwt::jwk']]], + ['get_5fkey_5fid_16',['get_key_id',['../classjwt_1_1header.html#ad9e1ae6bf5aecf92d533028bc6f9b973',1,'jwt::header::get_key_id()'],['../classjwt_1_1jwk.html#a6ff417d9e099f70183e5b065130f420f',1,'jwt::jwk::get_key_id() const']]], + ['get_5fkey_5foperations_17',['get_key_operations',['../classjwt_1_1jwk.html#ae5f0bb1bc9728e721c62e7aa0ab1ce5a',1,'jwt::jwk']]], + ['get_5fkey_5ftype_18',['get_key_type',['../classjwt_1_1jwk.html#afcfb7ade4ffa503db7c5b92280b49514',1,'jwt::jwk']]], + ['get_5fnot_5fbefore_19',['get_not_before',['../classjwt_1_1payload.html#a60f492d8bda3225155b6f10f05273f35',1,'jwt::payload']]], + ['get_5fpayload_20',['get_payload',['../classjwt_1_1decoded__jwt.html#adb1dc325d49e01838e78e9cd809aaa2b',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fbase64_21',['get_payload_base64',['../classjwt_1_1decoded__jwt.html#aa137fa9dfcf54444901618bfa0fc2ac4',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fclaim_22',['get_payload_claim',['../classjwt_1_1payload.html#aabe0fc87ca6261eae5b7b32b7f2fd531',1,'jwt::payload::get_payload_claim()'],['../classjwt_1_1decoded__jwt.html#a6a86e22661351e17f8880d6b4801ea9a',1,'jwt::decoded_jwt::get_payload_claim(const typename json_traits::string_type &name) const']]], + ['get_5fpayload_5fjson_23',['get_payload_json',['../classjwt_1_1decoded__jwt.html#a8a4dea7cc8187e496feaf3112a6de419',1,'jwt::decoded_jwt']]], + ['get_5fsignature_24',['get_signature',['../classjwt_1_1decoded__jwt.html#a715bf6407901d555442ba79e68e96ddb',1,'jwt::decoded_jwt']]], + ['get_5fsignature_5fbase64_25',['get_signature_base64',['../classjwt_1_1decoded__jwt.html#a0210f5688a6b0327b781fbd3d6e124f7',1,'jwt::decoded_jwt']]], + ['get_5fsubject_26',['get_subject',['../classjwt_1_1payload.html#adb0c71f6a7ea21910314ff4372a945dd',1,'jwt::payload']]], + ['get_5ftoken_27',['get_token',['../classjwt_1_1decoded__jwt.html#ac6dce886f27c3a5afadea6ae991063fb',1,'jwt::decoded_jwt']]], + ['get_5ftype_28',['get_type',['../classjwt_1_1basic__claim.html#a59be52f75f5d32386f0e57be25dda38a',1,'jwt::basic_claim::get_type()'],['../classjwt_1_1header.html#a0bed2e5b52abbefda5317a2712c08e8a',1,'jwt::header::get_type()']]], + ['get_5fuse_29',['get_use',['../classjwt_1_1jwk.html#a8581a05f8628ce98a898e36fb30649df',1,'jwt::jwk']]], + ['get_5fx5c_30',['get_x5c',['../classjwt_1_1jwk.html#a50c5eb1410fc69363527329efd58d09c',1,'jwt::jwk']]], + ['get_5fx5c_5fkey_5fvalue_31',['get_x5c_key_value',['../classjwt_1_1jwk.html#a5e3675060ca4b75d675ed4a301abac95',1,'jwt::jwk']]], + ['get_5fx5t_32',['get_x5t',['../classjwt_1_1jwk.html#a5a1e7e2940e23e2e2a4f64e1db9d5f38',1,'jwt::jwk']]], + ['get_5fx5t_5fsha256_33',['get_x5t_sha256',['../classjwt_1_1jwk.html#a6f49dc9f0e73b9f34044ee56b49c8baa',1,'jwt::jwk']]], + ['get_5fx5u_34',['get_x5u',['../classjwt_1_1jwk.html#af9e5af688ecdc3c88579ba5bfcfa4f17',1,'jwt::jwk']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 00000000..cf03e98e --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['has_5falgorithm_0',['has_algorithm',['../classjwt_1_1header.html#a59cc46de655365a8c1d99c60828051c0',1,'jwt::header::has_algorithm()'],['../classjwt_1_1jwk.html#a7791ca410ed90a89a4325b990efdb1bd',1,'jwt::jwk::has_algorithm()']]], + ['has_5faudience_1',['has_audience',['../classjwt_1_1payload.html#ad9f078e20d3cb6ce1ee135b2698a7059',1,'jwt::payload']]], + ['has_5fcontent_5ftype_2',['has_content_type',['../classjwt_1_1header.html#a9b9e6f2fd191afd8a167591818ad26da',1,'jwt::header']]], + ['has_5fcurve_3',['has_curve',['../classjwt_1_1jwk.html#ae97c9750a6a65d7b6a5cc16a3e3d5c6b',1,'jwt::jwk']]], + ['has_5fexpires_5fat_4',['has_expires_at',['../classjwt_1_1payload.html#a8577be97185f42d58ba0ca0b31c1a116',1,'jwt::payload']]], + ['has_5fheader_5fclaim_5',['has_header_claim',['../classjwt_1_1header.html#a2d5ee46b83e06da380bcbe20c5362b59',1,'jwt::header']]], + ['has_5fid_6',['has_id',['../classjwt_1_1payload.html#a78fd663cc80012d9bbf1a948d246a69d',1,'jwt::payload']]], + ['has_5fissued_5fat_7',['has_issued_at',['../classjwt_1_1payload.html#a0d1df458e88887342373b4ddb1c6b8f2',1,'jwt::payload']]], + ['has_5fissuer_8',['has_issuer',['../classjwt_1_1payload.html#a69dcb60e7108e6d124135e1a079943ca',1,'jwt::payload']]], + ['has_5fjwk_9',['has_jwk',['../classjwt_1_1jwks.html#aedd6c046ef7c08fcf8ab71158d3bafc5',1,'jwt::jwks']]], + ['has_5fjwk_5fclaim_10',['has_jwk_claim',['../classjwt_1_1jwk.html#ac7776dfc51fca7a44ffdf80e1c9e699b',1,'jwt::jwk']]], + ['has_5fkey_5fid_11',['has_key_id',['../classjwt_1_1header.html#af8fb4b77c7c066bb4a6ffefc0d459000',1,'jwt::header::has_key_id()'],['../classjwt_1_1jwk.html#a8fd4f19ffb59645a70182aa53ee773d8',1,'jwt::jwk::has_key_id() const noexcept']]], + ['has_5fkey_5foperations_12',['has_key_operations',['../classjwt_1_1jwk.html#aa774d9e337af22dbb482efe480725593',1,'jwt::jwk']]], + ['has_5fkey_5ftype_13',['has_key_type',['../classjwt_1_1jwk.html#af2955f1903c7c25c07390b8734b1278b',1,'jwt::jwk']]], + ['has_5fnot_5fbefore_14',['has_not_before',['../classjwt_1_1payload.html#a151f3aed388ffeba63e14379808f3e53',1,'jwt::payload']]], + ['has_5fpayload_5fclaim_15',['has_payload_claim',['../classjwt_1_1payload.html#a3d7fce2a8b0ad4965671009baa619fa9',1,'jwt::payload']]], + ['has_5fsubject_16',['has_subject',['../classjwt_1_1payload.html#a3f9fd30aae3e7cb5fa4f5332cf9cc9e6',1,'jwt::payload']]], + ['has_5ftype_17',['has_type',['../classjwt_1_1header.html#a6904ba9440815ca602f5a819224333b6',1,'jwt::header']]], + ['has_5fuse_18',['has_use',['../classjwt_1_1jwk.html#aab3976b190dfb7753a67525a1aacf3e9',1,'jwt::jwk']]], + ['has_5fx5c_19',['has_x5c',['../classjwt_1_1jwk.html#a04b9237225866306df0b06d0be1c49df',1,'jwt::jwk']]], + ['has_5fx5t_20',['has_x5t',['../classjwt_1_1jwk.html#aad5f938603c9354d0ef0316dcc55c9e5',1,'jwt::jwk']]], + ['has_5fx5t_5fsha256_21',['has_x5t_sha256',['../classjwt_1_1jwk.html#a1c7acee846b84aa4c26094b8f71739c6',1,'jwt::jwk']]], + ['has_5fx5u_22',['has_x5u',['../classjwt_1_1jwk.html#a92093f86bd99995f21f3efdde09e1370',1,'jwt::jwk']]], + ['header_23',['header',['../classjwt_1_1header.html',1,'jwt::header< json_traits >'],['../classjwt_1_1decoded__jwt.html#a1029396a3c9d1a6a9946ab000546b58f',1,'jwt::decoded_jwt::header']]], + ['header_5fbase64_24',['header_base64',['../classjwt_1_1decoded__jwt.html#a1b5eb0489af7f8158779b59d03bc0431',1,'jwt::decoded_jwt']]], + ['hmacsha_25',['hmacsha',['../structjwt_1_1algorithm_1_1hmacsha.html',1,'jwt::algorithm::hmacsha'],['../structjwt_1_1algorithm_1_1hmacsha.html#adae33c918a428ab910dc83384f15136c',1,'jwt::algorithm::hmacsha::hmacsha()']]], + ['hs256_26',['hs256',['../structjwt_1_1algorithm_1_1hs256.html',1,'jwt::algorithm::hs256'],['../structjwt_1_1algorithm_1_1hs256.html#aeba2d057f0864940ac7970df581a2202',1,'jwt::algorithm::hs256::hs256()']]], + ['hs384_27',['hs384',['../structjwt_1_1algorithm_1_1hs384.html',1,'jwt::algorithm::hs384'],['../structjwt_1_1algorithm_1_1hs384.html#adf9de575602f35da6872d0bc29768d32',1,'jwt::algorithm::hs384::hs384()']]], + ['hs512_28',['hs512',['../structjwt_1_1algorithm_1_1hs512.html',1,'jwt::algorithm::hs512'],['../structjwt_1_1algorithm_1_1hs512.html#aa78caccdfba79b545cd18d94fd9b5da2',1,'jwt::algorithm::hs512::hs512()']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 00000000..14e07ac6 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['insensitive_5fstring_5fclaim_0',['insensitive_string_claim',['../structjwt_1_1verify__ops_1_1insensitive__string__claim.html',1,'jwt::verify_ops']]], + ['installation_1',['Installation',['../md_docs_2install.html',1,'']]], + ['invalid_5fjson_5fexception_2',['invalid_json_exception',['../structjwt_1_1error_1_1invalid__json__exception.html',1,'jwt::error']]], + ['is_5fsubset_5fclaim_3',['is_subset_claim',['../structjwt_1_1verify__ops_1_1is__subset__claim.html',1,'jwt::verify_ops']]], + ['issued_5fat_5fleeway_4',['issued_at_leeway',['../classjwt_1_1verifier.html#a6d5c5569c3ec1f91393ea4dcf6c3e21f',1,'jwt::verifier']]], + ['issues_5',['Reporting Security Issues',['../md__8github_2security.html',1,'']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 00000000..0f65e273 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['json_20traits_0',['JSON Traits',['../md_docs_2traits.html',1,'']]], + ['jwk_1',['jwk',['../classjwt_1_1jwk.html',1,'jwt']]], + ['jwks_2',['jwks',['../classjwt_1_1jwks.html',1,'jwt::jwks< json_traits >'],['../classjwt_1_1jwks.html#a35532c5a8f559739bef25edafebd7561',1,'jwt::jwks::jwks()=default'],['../classjwt_1_1jwks.html#ad0fedb031f3b2f6ebf62e1e66b3451c2',1,'jwt::jwks::jwks(const typename json_traits::string_type &str)']]], + ['jwks_2dverify_2ecpp_3',['jwks-verify.cpp',['../jwks-verify_8cpp.html',1,'']]], + ['jwks_5ft_4',['jwks_t',['../classjwt_1_1jwks.html#a25df35cca51f36672dc34ce86f292c7b',1,'jwt::jwks']]], + ['jwks_5fvector_5ft_5',['jwks_vector_t',['../classjwt_1_1jwks.html#ac1999abc822287e49bb86d89b47e1a25',1,'jwt::jwks']]], + ['jwt_6',['jwt',['../namespacejwt.html',1,'jwt'],['../structjwt_1_1verify__ops_1_1verify__context.html#ae9662ab8311e90d4209859a8446eca37',1,'jwt::verify_ops::verify_context::jwt']]], + ['jwt_20cpp_7',['JWT-CPP',['../index.html',1,'']]], + ['jwt_3a_3aalgorithm_8',['algorithm',['../namespacejwt_1_1algorithm.html',1,'jwt']]], + ['jwt_3a_3aalphabet_9',['alphabet',['../namespacejwt_1_1alphabet.html',1,'jwt']]], + ['jwt_3a_3abase_10',['base',['../namespacejwt_1_1base.html',1,'jwt']]], + ['jwt_3a_3aerror_11',['error',['../namespacejwt_1_1error.html',1,'jwt']]], + ['jwt_3a_3ahelper_12',['helper',['../namespacejwt_1_1helper.html',1,'jwt']]], + ['jwt_3a_3ajson_13',['json',['../namespacejwt_1_1json.html',1,'jwt']]], + ['jwt_3a_3atraits_14',['traits',['../namespacejwt_1_1traits.html',1,'jwt']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 00000000..0391e2d8 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kazuho_5fpicojson_0',['kazuho_picojson',['../structjwt_1_1traits_1_1kazuho__picojson.html',1,'jwt::traits']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 00000000..25d86959 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['leeway_0',['leeway',['../classjwt_1_1verifier.html#abb8a3e9d1decf63758baec48e964e3cd',1,'jwt::verifier']]], + ['libraries_1',['Cryptography Libraries',['../md_docs_2ssl.html',1,'']]], + ['list_2',['Deprecated List',['../deprecated.html',1,'']]], + ['load_5fprivate_5fec_5fkey_5ffrom_5fstring_3',['load_private_ec_key_from_string',['../namespacejwt_1_1helper.html#a63731359f8e1b6d0b31f3a768fc355f1',1,'jwt::helper::load_private_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#ad23f6478334425f86a75b659981187ca',1,'jwt::helper::load_private_ec_key_from_string(const std::string &key, const std::string &password="")']]], + ['load_5fprivate_5fkey_5ffrom_5fstring_4',['load_private_key_from_string',['../namespacejwt_1_1helper.html#acbfd2c904cc2d2f603ef3524930c9802',1,'jwt::helper::load_private_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a5091f944a41985bf1c72117bf7a87368',1,'jwt::helper::load_private_key_from_string(const std::string &key, const std::string &password="")']]], + ['load_5fpublic_5fec_5fkey_5ffrom_5fstring_5',['load_public_ec_key_from_string',['../namespacejwt_1_1helper.html#a366b03033ec53d5321256b9f05238b38',1,'jwt::helper::load_public_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a7ca85602a4520008b1b624e1b175bba5',1,'jwt::helper::load_public_ec_key_from_string(const std::string &key, const std::string &password="")']]], + ['load_5fpublic_5fkey_5ffrom_5fstring_6',['load_public_key_from_string',['../namespacejwt_1_1helper.html#a46af07b491df1bb8ce2f91419167bddf',1,'jwt::helper::load_public_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a305734040e76012a413378d65fad2611',1,'jwt::helper::load_public_key_from_string(const std::string &key, const std::string &password="")']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 00000000..c46f27c4 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['make_5ferror_5fcode_0',['make_error_code',['../namespacejwt_1_1error.html#ac6388f2c4e7f4ab3178053ad31d8960a',1,'jwt::error::make_error_code(rsa_error e)'],['../namespacejwt_1_1error.html#a6f161df364c8c96916102327c44bb222',1,'jwt::error::make_error_code(ecdsa_error e)'],['../namespacejwt_1_1error.html#a10e1eb999b24b20b47a109e2195cdd3f',1,'jwt::error::make_error_code(signature_verification_error e)'],['../namespacejwt_1_1error.html#ada6a1ce2904f5f1bacad36dcdf98bcf1',1,'jwt::error::make_error_code(signature_generation_error e)'],['../namespacejwt_1_1error.html#ade95fa33d7627f499b36643b3280d79f',1,'jwt::error::make_error_code(token_verification_error e)']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 00000000..65cf2bda --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['name_0',['name',['../structjwt_1_1algorithm_1_1none.html#a8f34efd8955d3081f2189c07b9cec4ec',1,'jwt::algorithm::none::name()'],['../structjwt_1_1algorithm_1_1hmacsha.html#a2fd3ec7eadae1febc082d8cd66e3b48f',1,'jwt::algorithm::hmacsha::name()'],['../structjwt_1_1algorithm_1_1rsa.html#a533b279b12503e84d5a450acfe386ee2',1,'jwt::algorithm::rsa::name()'],['../structjwt_1_1algorithm_1_1ecdsa.html#aee414f0164c49a95d3cc06f7248a1c7b',1,'jwt::algorithm::ecdsa::name()'],['../structjwt_1_1algorithm_1_1eddsa.html#a20c350eb747ae9e7ae190fdc2a2a58ce',1,'jwt::algorithm::eddsa::name()'],['../structjwt_1_1algorithm_1_1pss.html#a8dd860877102b864b8a11de2336d57eb',1,'jwt::algorithm::pss::name()']]], + ['nlohmann_5fjson_1',['nlohmann_json',['../structjwt_1_1traits_1_1nlohmann__json.html',1,'jwt::traits']]], + ['none_2',['none',['../structjwt_1_1algorithm_1_1none.html',1,'jwt::algorithm']]], + ['not_5fbefore_5fleeway_3',['not_before_leeway',['../classjwt_1_1verifier.html#a5ae0c09cc67ccc009149ca36d84d0fbf',1,'jwt::verifier']]], + ['now_4',['now',['../structjwt_1_1default__clock.html#a4b274e5dbec28ac3531313b8aefdf691',1,'jwt::default_clock']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 00000000..47a7385c --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['object_5ftype_0',['object_type',['../structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html',1,'jwt::traits::danielaparker_jsoncons::object_type'],['../classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html',1,'jwt::traits::open_source_parsers_jsoncpp::object_type']]], + ['open_5fsource_5fparsers_5fjsoncpp_1',['open_source_parsers_jsoncpp',['../structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html',1,'jwt::traits']]], + ['operator_3c_3c_2',['operator<<',['../classjwt_1_1basic__claim.html#acb0dd9d4a9c683a33877b56c386a1428',1,'jwt::basic_claim']]], + ['operator_3e_3e_3',['operator>>',['../classjwt_1_1basic__claim.html#a81c5d71c9421d074f766e7c5a16106b2',1,'jwt::basic_claim']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 00000000..86f5c342 --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['pad_0',['pad',['../namespacejwt_1_1base.html#ac78a8afb42e050736a6673cd9be38ffa',1,'jwt::base']]], + ['parse_5fjwk_1',['parse_jwk',['../namespacejwt.html#a8948012a32d2d558ced39f6101c5c7e0',1,'jwt::parse_jwk(const typename json_traits::string_type &jwk_)'],['../namespacejwt.html#ace6f81b008c344d9f2a993f0347fce7a',1,'jwt::parse_jwk(const traits::boost_json::string_type &token)']]], + ['parse_5fjwks_2',['parse_jwks',['../namespacejwt.html#a978368e4ebd959166629b689fbe3e4ec',1,'jwt::parse_jwks(const typename json_traits::string_type &jwks_)'],['../namespacejwt.html#a55c19b802020be5175068992bbe6dddb',1,'jwt::parse_jwks(const traits::boost_json::string_type &token)']]], + ['partial_2dclaim_2dverifier_2ecpp_3',['partial-claim-verifier.cpp',['../partial-claim-verifier_8cpp.html',1,'']]], + ['payload_4',['payload',['../classjwt_1_1payload.html',1,'jwt::payload< json_traits >'],['../classjwt_1_1decoded__jwt.html#af9b33ca8b170b91f255ff7afe9fbf3c1',1,'jwt::decoded_jwt::payload']]], + ['payload_5fbase64_5',['payload_base64',['../classjwt_1_1decoded__jwt.html#af9013de47f7e628c23b80f55d84b03d1',1,'jwt::decoded_jwt']]], + ['print_2dclaims_2ecpp_6',['print-claims.cpp',['../print-claims_8cpp.html',1,'']]], + ['private_2dclaims_2ecpp_7',['private-claims.cpp',['../private-claims_8cpp.html',1,'']]], + ['ps256_8',['ps256',['../structjwt_1_1algorithm_1_1ps256.html',1,'jwt::algorithm::ps256'],['../structjwt_1_1algorithm_1_1ps256.html#a58a149697a0a03d79f955c2698233637',1,'jwt::algorithm::ps256::ps256()']]], + ['ps384_9',['ps384',['../structjwt_1_1algorithm_1_1ps384.html',1,'jwt::algorithm::ps384'],['../structjwt_1_1algorithm_1_1ps384.html#a5a9548f6f07d1dbcea66a17c32cdcb71',1,'jwt::algorithm::ps384::ps384()']]], + ['ps512_10',['ps512',['../structjwt_1_1algorithm_1_1ps512.html',1,'jwt::algorithm::ps512'],['../structjwt_1_1algorithm_1_1ps512.html#aeffb86b581f7a6c82a485672527fccb4',1,'jwt::algorithm::ps512::ps512()']]], + ['pss_11',['pss',['../structjwt_1_1algorithm_1_1pss.html',1,'jwt::algorithm::pss'],['../structjwt_1_1algorithm_1_1pss.html#ac42f049712066e8c8b41433185177b01',1,'jwt::algorithm::pss::pss()']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 00000000..178d844f --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['array_5ftype_0',['array_type',['../classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type.html',1,'jwt::traits::danielaparker_jsoncons::array_type'],['../classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html',1,'jwt::traits::open_source_parsers_jsoncpp::array_type']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 00000000..abf1bda9 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['base64_0',['base64',['../structjwt_1_1alphabet_1_1base64.html',1,'jwt::alphabet']]], + ['base64url_1',['base64url',['../structjwt_1_1alphabet_1_1base64url.html',1,'jwt::alphabet']]], + ['base64url_5fpercent_5fencoding_2',['base64url_percent_encoding',['../structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html',1,'jwt::alphabet::helper']]], + ['basic_5fclaim_3',['basic_claim',['../classjwt_1_1basic__claim.html',1,'jwt']]], + ['boost_5fjson_4',['boost_json',['../structjwt_1_1traits_1_1boost__json.html',1,'jwt::traits']]], + ['builder_5',['builder',['../classjwt_1_1builder.html',1,'jwt']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 00000000..926c94fa --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['claim_5fnot_5fpresent_5fexception_0',['claim_not_present_exception',['../structjwt_1_1error_1_1claim__not__present__exception.html',1,'jwt::error']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 00000000..a1b62a8f --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['danielaparker_5fjsoncons_0',['danielaparker_jsoncons',['../structjwt_1_1traits_1_1danielaparker__jsoncons.html',1,'jwt::traits']]], + ['date_5fafter_5fclaim_1',['date_after_claim',['../structjwt_1_1verify__ops_1_1date__after__claim.html',1,'jwt::verify_ops']]], + ['date_5fbefore_5fclaim_2',['date_before_claim',['../structjwt_1_1verify__ops_1_1date__before__claim.html',1,'jwt::verify_ops']]], + ['decoded_5fjwt_3',['decoded_jwt',['../classjwt_1_1decoded__jwt.html',1,'jwt']]], + ['default_5fclock_4',['default_clock',['../structjwt_1_1default__clock.html',1,'jwt']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 00000000..09d4eb2a --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['ecdsa_0',['ecdsa',['../structjwt_1_1algorithm_1_1ecdsa.html',1,'jwt::algorithm']]], + ['ecdsa_5fexception_1',['ecdsa_exception',['../structjwt_1_1error_1_1ecdsa__exception.html',1,'jwt::error']]], + ['ed25519_2',['ed25519',['../structjwt_1_1algorithm_1_1ed25519.html',1,'jwt::algorithm']]], + ['ed448_3',['ed448',['../structjwt_1_1algorithm_1_1ed448.html',1,'jwt::algorithm']]], + ['eddsa_4',['eddsa',['../structjwt_1_1algorithm_1_1eddsa.html',1,'jwt::algorithm']]], + ['equals_5fclaim_5',['equals_claim',['../structjwt_1_1verify__ops_1_1equals__claim.html',1,'jwt::verify_ops']]], + ['es256_6',['es256',['../structjwt_1_1algorithm_1_1es256.html',1,'jwt::algorithm']]], + ['es256k_7',['es256k',['../structjwt_1_1algorithm_1_1es256k.html',1,'jwt::algorithm']]], + ['es384_8',['es384',['../structjwt_1_1algorithm_1_1es384.html',1,'jwt::algorithm']]], + ['es512_9',['es512',['../structjwt_1_1algorithm_1_1es512.html',1,'jwt::algorithm']]], + ['evp_5fpkey_5fhandle_10',['evp_pkey_handle',['../classjwt_1_1helper_1_1evp__pkey__handle.html',1,'jwt::helper']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 00000000..cdf92ea5 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['header_0',['header',['../classjwt_1_1header.html',1,'jwt']]], + ['hmacsha_1',['hmacsha',['../structjwt_1_1algorithm_1_1hmacsha.html',1,'jwt::algorithm']]], + ['hs256_2',['hs256',['../structjwt_1_1algorithm_1_1hs256.html',1,'jwt::algorithm']]], + ['hs384_3',['hs384',['../structjwt_1_1algorithm_1_1hs384.html',1,'jwt::algorithm']]], + ['hs512_4',['hs512',['../structjwt_1_1algorithm_1_1hs512.html',1,'jwt::algorithm']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 00000000..bd757e77 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['insensitive_5fstring_5fclaim_0',['insensitive_string_claim',['../structjwt_1_1verify__ops_1_1insensitive__string__claim.html',1,'jwt::verify_ops']]], + ['invalid_5fjson_5fexception_1',['invalid_json_exception',['../structjwt_1_1error_1_1invalid__json__exception.html',1,'jwt::error']]], + ['is_5fsubset_5fclaim_2',['is_subset_claim',['../structjwt_1_1verify__ops_1_1is__subset__claim.html',1,'jwt::verify_ops']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 00000000..e24e33cf --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['jwk_0',['jwk',['../classjwt_1_1jwk.html',1,'jwt']]], + ['jwks_1',['jwks',['../classjwt_1_1jwks.html',1,'jwt']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 00000000..0391e2d8 --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kazuho_5fpicojson_0',['kazuho_picojson',['../structjwt_1_1traits_1_1kazuho__picojson.html',1,'jwt::traits']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 00000000..d55fa8a6 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nlohmann_5fjson_0',['nlohmann_json',['../structjwt_1_1traits_1_1nlohmann__json.html',1,'jwt::traits']]], + ['none_1',['none',['../structjwt_1_1algorithm_1_1none.html',1,'jwt::algorithm']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 00000000..81d465ab --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['object_5ftype_0',['object_type',['../structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html',1,'jwt::traits::danielaparker_jsoncons::object_type'],['../classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html',1,'jwt::traits::open_source_parsers_jsoncpp::object_type']]], + ['open_5fsource_5fparsers_5fjsoncpp_1',['open_source_parsers_jsoncpp',['../structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html',1,'jwt::traits']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 00000000..3a962cbd --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['payload_0',['payload',['../classjwt_1_1payload.html',1,'jwt']]], + ['ps256_1',['ps256',['../structjwt_1_1algorithm_1_1ps256.html',1,'jwt::algorithm']]], + ['ps384_2',['ps384',['../structjwt_1_1algorithm_1_1ps384.html',1,'jwt::algorithm']]], + ['ps512_3',['ps512',['../structjwt_1_1algorithm_1_1ps512.html',1,'jwt::algorithm']]], + ['pss_4',['pss',['../structjwt_1_1algorithm_1_1pss.html',1,'jwt::algorithm']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 00000000..860b075a --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['rs256_0',['rs256',['../structjwt_1_1algorithm_1_1rs256.html',1,'jwt::algorithm']]], + ['rs384_1',['rs384',['../structjwt_1_1algorithm_1_1rs384.html',1,'jwt::algorithm']]], + ['rs512_2',['rs512',['../structjwt_1_1algorithm_1_1rs512.html',1,'jwt::algorithm']]], + ['rsa_3',['rsa',['../structjwt_1_1algorithm_1_1rsa.html',1,'jwt::algorithm']]], + ['rsa_5fexception_4',['rsa_exception',['../structjwt_1_1error_1_1rsa__exception.html',1,'jwt::error']]] +]; diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 00000000..c1d9d5ec --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['signature_5fgeneration_5fexception_0',['signature_generation_exception',['../structjwt_1_1error_1_1signature__generation__exception.html',1,'jwt::error']]], + ['signature_5fverification_5fexception_1',['signature_verification_exception',['../structjwt_1_1error_1_1signature__verification__exception.html',1,'jwt::error']]] +]; diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 00000000..78bea800 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['token_5fverification_5fexception_0',['token_verification_exception',['../structjwt_1_1error_1_1token__verification__exception.html',1,'jwt::error']]] +]; diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 00000000..e0296083 --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['verifier_0',['verifier',['../classjwt_1_1verifier.html',1,'jwt']]], + ['verify_5fcontext_1',['verify_context',['../structjwt_1_1verify__ops_1_1verify__context.html',1,'jwt::verify_ops']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 00000000..337d6cc1 --- /dev/null +++ b/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 00000000..b7670d6e --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ecdsa_5ferror_0',['ecdsa_error',['../namespacejwt_1_1error.html#a88d41131fbb9462f2f6e269d573484d3',1,'jwt::error']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 00000000..2edd1e11 --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rsa_5ferror_0',['rsa_error',['../namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7',1,'jwt::error']]] +]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 00000000..d58f1a94 --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['signature_5fgeneration_5ferror_0',['signature_generation_error',['../namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cd',1,'jwt::error']]], + ['signature_5fverification_5ferror_1',['signature_verification_error',['../namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244',1,'jwt::error']]] +]; diff --git a/search/enums_3.js b/search/enums_3.js new file mode 100644 index 00000000..8ba1c33c --- /dev/null +++ b/search/enums_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['token_5fverification_5ferror_0',['token_verification_error',['../namespacejwt_1_1error.html#ac047d0bfdb503f2f68c4133f1a69baed',1,'jwt::error']]], + ['type_1',['type',['../namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3e',1,'jwt::json']]] +]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 00000000..f26c2ffa --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['es256k_2ecpp_0',['es256k.cpp',['../es256k_8cpp.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 00000000..394cddcd --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jwks_2dverify_2ecpp_0',['jwks-verify.cpp',['../jwks-verify_8cpp.html',1,'']]] +]; diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 00000000..39f307a2 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['partial_2dclaim_2dverifier_2ecpp_0',['partial-claim-verifier.cpp',['../partial-claim-verifier_8cpp.html',1,'']]], + ['print_2dclaims_2ecpp_1',['print-claims.cpp',['../print-claims_8cpp.html',1,'']]], + ['private_2dclaims_2ecpp_2',['private-claims.cpp',['../private-claims_8cpp.html',1,'']]] +]; diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 00000000..dbad5c6b --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['rsa_2dcreate_2ecpp_0',['rsa-create.cpp',['../rsa-create_8cpp.html',1,'']]], + ['rsa_2dverify_2ecpp_1',['rsa-verify.cpp',['../rsa-verify_8cpp.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 00000000..4d21ccf6 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['allow_5falgorithm_0',['allow_algorithm',['../classjwt_1_1verifier.html#ae2cc9d0125be58b51f4c4aa30878aa41',1,'jwt::verifier']]], + ['as_5farray_1',['as_array',['../classjwt_1_1basic__claim.html#af06fe57ced0b69e5d3e0480b283ac31f',1,'jwt::basic_claim']]], + ['as_5fboolean_2',['as_boolean',['../classjwt_1_1basic__claim.html#a97442d8e2ba7ac24201d1d16d6c32aef',1,'jwt::basic_claim']]], + ['as_5fdate_3',['as_date',['../classjwt_1_1basic__claim.html#aadef1dd6e6275680067940fedb06ab08',1,'jwt::basic_claim']]], + ['as_5finteger_4',['as_integer',['../classjwt_1_1basic__claim.html#ae2c58375c443bfc1037066edaf88be53',1,'jwt::basic_claim']]], + ['as_5fnumber_5',['as_number',['../classjwt_1_1basic__claim.html#a2000561f92e202acdeb532f15056e764',1,'jwt::basic_claim']]], + ['as_5fset_6',['as_set',['../classjwt_1_1basic__claim.html#a33b043d261a23cd108778893a24ae976',1,'jwt::basic_claim']]], + ['as_5fstring_7',['as_string',['../classjwt_1_1basic__claim.html#afe7cd8e0feebff55c05adfe71748e1fd',1,'jwt::basic_claim']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 00000000..eacab035 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bn2raw_0',['bn2raw',['../namespacejwt_1_1helper.html#aa75689cc6b3d9f710b5c050cc9bff5ff',1,'jwt::helper']]], + ['builder_1',['builder',['../classjwt_1_1builder.html#a526a5810677403c5cf4825ff29211bad',1,'jwt::builder']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 00000000..ca52dc76 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['throw_5fif_5ferror_0',['throw_if_error',['../namespacejwt_1_1error.html#a4735679a4ffc8a483f7560d722fdbd4d',1,'jwt::error']]], + ['to_5fjson_1',['to_json',['../classjwt_1_1basic__claim.html#ae47b0e6de750563a2ba1f9e5628b72ee',1,'jwt::basic_claim']]], + ['token_5fverification_5ferror_5fcategory_2',['token_verification_error_category',['../namespacejwt_1_1error.html#a187142c60516cc974c86efb5e277922d',1,'jwt::error']]], + ['trim_3',['trim',['../namespacejwt_1_1base.html#a147e03b002f4a6c272364fa04ce09c6e',1,'jwt::base']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 00000000..32d8530e --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['verifier_0',['verifier',['../classjwt_1_1verifier.html#aa4764c828213d9ef1537d2490ed98b45',1,'jwt::verifier']]], + ['verify_1',['verify',['../structjwt_1_1algorithm_1_1none.html#a7b5d147bcad38fb193d5e21bacd200a2',1,'jwt::algorithm::none::verify()'],['../structjwt_1_1algorithm_1_1hmacsha.html#a8f667034d2f9821f21a430d08e322d5b',1,'jwt::algorithm::hmacsha::verify()'],['../structjwt_1_1algorithm_1_1rsa.html#a0494f35ced969aaa279b431e225ea077',1,'jwt::algorithm::rsa::verify()'],['../structjwt_1_1algorithm_1_1ecdsa.html#a07f0ad6eabfd1dace07e00e51a46cfe1',1,'jwt::algorithm::ecdsa::verify()'],['../structjwt_1_1algorithm_1_1eddsa.html#aeacb514e6be70be3a2874e4c4e1d0852',1,'jwt::algorithm::eddsa::verify()'],['../structjwt_1_1algorithm_1_1pss.html#ad01544d3a3448a2ea611493f68807ea9',1,'jwt::algorithm::pss::verify()'],['../classjwt_1_1verifier.html#aa275e9eedac41ad8d8a0f2a3300acda2',1,'jwt::verifier::verify(const decoded_jwt< json_traits > &jwt) const'],['../classjwt_1_1verifier.html#a448cd954e1ea53ff2bcb39b7cc30cc65',1,'jwt::verifier::verify(const decoded_jwt< json_traits > &jwt, std::error_code &ec) const'],['../namespacejwt.html#a05f9a08741bb8d685f0b2dfbc22820b7',1,'jwt::verify(Clock c)'],['../namespacejwt.html#a68225fdaab1a9a068e28d6acec245694',1,'jwt::verify(default_clock c={})'],['../namespacejwt.html#a64c93da90452a2bf6b4eb81e6560d11c',1,'jwt::verify()']]] +]; diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 00000000..7830ef90 --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['with_5faudience_0',['with_audience',['../classjwt_1_1verifier.html#a7cf070f76669f32c96e38ee4e9c5cb00',1,'jwt::verifier::with_audience(const typename basic_claim_t::set_t &aud)'],['../classjwt_1_1verifier.html#a9e1129b30859be9d617547e333ad0ca8',1,'jwt::verifier::with_audience(const typename json_traits::string_type &aud)']]], + ['with_5fclaim_1',['with_claim',['../classjwt_1_1verifier.html#a1e21d481d69ebddb1d7275449c35be23',1,'jwt::verifier::with_claim(const typename json_traits::string_type &name, verify_check_fn_t fn)'],['../classjwt_1_1verifier.html#a9ad51170089fb1566c5d97314cc33e41',1,'jwt::verifier::with_claim(const typename json_traits::string_type &name, basic_claim_t c)']]], + ['with_5fid_2',['with_id',['../classjwt_1_1verifier.html#af26d00278aca90b1c4ee80531aebb8ed',1,'jwt::verifier']]], + ['with_5fissuer_3',['with_issuer',['../classjwt_1_1verifier.html#ad7cf48fc13d29bc59643379c891232cb',1,'jwt::verifier']]], + ['with_5fsubject_4',['with_subject',['../classjwt_1_1verifier.html#a7ae6f50c039290ac6f87e7dda905c25c',1,'jwt::verifier']]], + ['with_5ftype_5',['with_type',['../classjwt_1_1verifier.html#ae77119a8c25bb7b906191f0055981a7b',1,'jwt::verifier']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 00000000..d96f9a47 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['convert_5fbase64_5fder_5fto_5fpem_0',['convert_base64_der_to_pem',['../namespacejwt_1_1helper.html#a868bab109dbaf38adc80f4025c9ce378',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str, Decode decode, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a8a6dd42aec39dc85dbc3d14df183f125',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str, Decode decode)'],['../namespacejwt_1_1helper.html#ab58e1f3020d0415a71aa9cea1e9fa4f2',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a792fb50c64b41b4546c2a2b2dfb41746',1,'jwt::helper::convert_base64_der_to_pem(const std::string &cert_base64_der_str)']]], + ['convert_5fder_5fto_5fpem_1',['convert_der_to_pem',['../namespacejwt_1_1helper.html#aeb9ab265a9a4baeb4c82288dc869f5b2',1,'jwt::helper::convert_der_to_pem(const std::string &cert_der_str, std::error_code &ec)'],['../namespacejwt_1_1helper.html#aabc2a97481e9cbcee6c4a09705cf4c15',1,'jwt::helper::convert_der_to_pem(const std::string &cert_der_str)']]], + ['create_2',['create',['../namespacejwt.html#a3205457bac493a17fcdd4464d043c397',1,'jwt::create(Clock c)'],['../namespacejwt.html#a6732fc1f53b09fb32826e75b09870a4c',1,'jwt::create(default_clock c={})'],['../namespacejwt.html#ab1def99dc2f348cce1495e6d74fa1614',1,'jwt::create()']]], + ['create_5fpublic_5fkey_5ffrom_5fec_5fcomponents_3',['create_public_key_from_ec_components',['../namespacejwt_1_1helper.html#ac0b56b1459920a749a75f6f3c950e87e',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y, Decode decode, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a40c830b9869c674e5a7c53d211546902',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y, Decode decode)'],['../namespacejwt_1_1helper.html#ac6b7260d5d1fe515aa15a26ba7ddebf8',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y, std::error_code &ec)'],['../namespacejwt_1_1helper.html#ac9e8992adb029afdd8861ffb227ca1c2',1,'jwt::helper::create_public_key_from_ec_components(const std::string &curve, const std::string &x, const std::string &y)']]], + ['create_5fpublic_5fkey_5ffrom_5frsa_5fcomponents_4',['create_public_key_from_rsa_components',['../namespacejwt_1_1helper.html#a5e85008a942e3fb63adcd063cb2fa89a',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, Decode decode, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a3de5fd41491a79bd10e3741af6bb54e9',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, Decode decode)'],['../namespacejwt_1_1helper.html#ab77020dc9808b2384738739ff53b9c60',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a50ee5e3437ce34c0305380dc2ec3febe',1,'jwt::helper::create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent)']]], + ['curve2nid_5',['curve2nid',['../namespacejwt_1_1helper.html#a6c9a8700c42e112d9dde037471201875',1,'jwt::helper']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 00000000..34c5b528 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['decode_0',['decode',['../namespacejwt_1_1base.html#a2679bf11e3757c8b9d035ea82509c895',1,'jwt::base::decode()'],['../namespacejwt.html#aefffdd7d2a79d6872c15a7ec1661b149',1,'jwt::decode(const typename json_traits::string_type &token, Decode decode)'],['../namespacejwt.html#ade66496cbe78db1ca2fd769b6982bbc9',1,'jwt::decode(const typename json_traits::string_type &token)'],['../namespacejwt.html#aee1e0e28b218c18aedc0c9fc4568a108',1,'jwt::decode(const std::string &token)'],['../namespacejwt.html#a1888325882765254b8d2680ff1cf3210',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a98607d668bf63870e5dab3f81afe0320',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a627d2f26db17185e7eb7bb92defa70cc',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a65d515aeb39cb5829c7af774051ae91e',1,'jwt::decode(const std::string &token, Decode decode)'],['../namespacejwt.html#a36eef183151c35ec01ce76484282e14a',1,'jwt::decode(const std::string &token, Decode decode)']]], + ['decoded_5fjwt_1',['decoded_jwt',['../classjwt_1_1decoded__jwt.html#a74547d7eee095f9bb440b572da5edd39',1,'jwt::decoded_jwt::decoded_jwt(const typename json_traits::string_type &token)'],['../classjwt_1_1decoded__jwt.html#a8517ef5dd3f099223ec4477aff546ac8',1,'jwt::decoded_jwt::decoded_jwt(const typename json_traits::string_type &token, Decode decode)']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 00000000..64521f6a --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['ecdsa_0',['ecdsa',['../structjwt_1_1algorithm_1_1ecdsa.html#a26916f3b94cced8e413df2b3312432c5',1,'jwt::algorithm::ecdsa']]], + ['ecdsa_5ferror_5fcategory_1',['ecdsa_error_category',['../namespacejwt_1_1error.html#a641d06c74f6ed676ac0636215b50e2b2',1,'jwt::error']]], + ['ed25519_2',['ed25519',['../structjwt_1_1algorithm_1_1ed25519.html#aa6c66e731c2b597965768cdcdea29b9a',1,'jwt::algorithm::ed25519']]], + ['ed448_3',['ed448',['../structjwt_1_1algorithm_1_1ed448.html#a4fa1fcbc8669ef749f65c39b8a976df7',1,'jwt::algorithm::ed448']]], + ['eddsa_4',['eddsa',['../structjwt_1_1algorithm_1_1eddsa.html#a35aca8602274c1d8afc8ed90532466d1',1,'jwt::algorithm::eddsa']]], + ['empty_5',['empty',['../classjwt_1_1jwk.html#aab2ca3844cbb8338c2f874f522ebe1cf',1,'jwt::jwk']]], + ['encode_6',['encode',['../namespacejwt_1_1base.html#ad2ca00edb94734c69742a1aa867e9d28',1,'jwt::base']]], + ['es256_7',['es256',['../structjwt_1_1algorithm_1_1es256.html#aac62df85a6311e2e3bdfc8821a522127',1,'jwt::algorithm::es256']]], + ['es256k_8',['es256k',['../structjwt_1_1algorithm_1_1es256k.html#ad88e35c7c3494b7da3024f019ab59097',1,'jwt::algorithm::es256k']]], + ['es384_9',['es384',['../structjwt_1_1algorithm_1_1es384.html#a820e0e6673d7c429bfd8bb272d57d849',1,'jwt::algorithm::es384']]], + ['es512_10',['es512',['../structjwt_1_1algorithm_1_1es512.html#aa37f9fe9071c49b7f686fe382d20e7d7',1,'jwt::algorithm::es512']]], + ['evp_5fpkey_5fhandle_11',['evp_pkey_handle',['../classjwt_1_1helper_1_1evp__pkey__handle.html#a8fae1977c01380da9189d10fe429841a',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle() noexcept=default'],['../classjwt_1_1helper_1_1evp__pkey__handle.html#a9948effb83d8dcd17447eff28c852f6f',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle(EVP_PKEY *key) noexcept']]], + ['expires_5fat_5fleeway_12',['expires_at_leeway',['../classjwt_1_1verifier.html#a157d3a7b128aaac1b37a9ba47dd72718',1,'jwt::verifier']]], + ['extract_5fpubkey_5ffrom_5fcert_13',['extract_pubkey_from_cert',['../namespacejwt_1_1helper.html#a29716cee5cd54a7b39de4395ea6cb194',1,'jwt::helper::extract_pubkey_from_cert(const std::string &certstr, const std::string &pw, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a3395ae07af120d7cbd48ea2d5f163e73',1,'jwt::helper::extract_pubkey_from_cert(const std::string &certstr, const std::string &pw="")']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 00000000..a77e73af --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['get_5falgorithm_0',['get_algorithm',['../classjwt_1_1header.html#a8ac7e7c26859e172a3f0f22ded7b307f',1,'jwt::header::get_algorithm()'],['../classjwt_1_1jwk.html#a50b2c64b52a7028acfad1e4ac64c8e66',1,'jwt::jwk::get_algorithm()']]], + ['get_5faudience_1',['get_audience',['../classjwt_1_1payload.html#a0131e3f94dc5deaef9f2128e61675ef3',1,'jwt::payload']]], + ['get_5fclaim_2',['get_claim',['../structjwt_1_1verify__ops_1_1verify__context.html#a8a2aef62f0fb92d3372bdfb2bc35baa2',1,'jwt::verify_ops::verify_context::get_claim(bool in_header, std::error_code &ec) const'],['../structjwt_1_1verify__ops_1_1verify__context.html#a5b4875d47d2f2ebd0055fb1e351bae89',1,'jwt::verify_ops::verify_context::get_claim(bool in_header, json::type t, std::error_code &ec) const'],['../structjwt_1_1verify__ops_1_1verify__context.html#ad2148052b231e8fdfa1c277e3dfaeb1d',1,'jwt::verify_ops::verify_context::get_claim(std::error_code &ec) const'],['../structjwt_1_1verify__ops_1_1verify__context.html#ab3a44096e09225a2623001a4a2e98da9',1,'jwt::verify_ops::verify_context::get_claim(json::type t, std::error_code &ec) const']]], + ['get_5fclaims_3',['get_claims',['../classjwt_1_1jwk.html#a5628cd17ea929a33e6d40eef5b073d0d',1,'jwt::jwk']]], + ['get_5fcontent_5ftype_4',['get_content_type',['../classjwt_1_1header.html#ae2cb8d327ed651286af732663ef23c44',1,'jwt::header']]], + ['get_5fcurve_5',['get_curve',['../classjwt_1_1jwk.html#a09d3afa0dcca94aee47c8cb9eb42dc9f',1,'jwt::jwk']]], + ['get_5fexpires_5fat_6',['get_expires_at',['../classjwt_1_1payload.html#adab036c2f63dad223d163ad6689938e5',1,'jwt::payload']]], + ['get_5fheader_7',['get_header',['../classjwt_1_1decoded__jwt.html#a00a77aedba4b77d9ee0a6f32307c2f92',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fbase64_8',['get_header_base64',['../classjwt_1_1decoded__jwt.html#af55156d334c665ad0b11cb6881d242c2',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fclaim_9',['get_header_claim',['../classjwt_1_1header.html#ad941b52adacc083b2b895fbfa23f938b',1,'jwt::header::get_header_claim()'],['../classjwt_1_1decoded__jwt.html#a807f00ca32b360b69b4d8555f7cb7795',1,'jwt::decoded_jwt::get_header_claim(const typename json_traits::string_type &name) const']]], + ['get_5fheader_5fjson_10',['get_header_json',['../classjwt_1_1decoded__jwt.html#acc90b0d668345b0f3c41d382fe087a08',1,'jwt::decoded_jwt']]], + ['get_5fid_11',['get_id',['../classjwt_1_1payload.html#a0cb0076f6d6ca4c8acb498076c8f5721',1,'jwt::payload']]], + ['get_5fissued_5fat_12',['get_issued_at',['../classjwt_1_1payload.html#aa1efb5105a9c3efb49d08b8651069d15',1,'jwt::payload']]], + ['get_5fissuer_13',['get_issuer',['../classjwt_1_1payload.html#afbad104eceb35855baa247ec211eeac4',1,'jwt::payload']]], + ['get_5fjwk_14',['get_jwk',['../classjwt_1_1jwks.html#a25f52012c42fcc2761331db48b0d6926',1,'jwt::jwks']]], + ['get_5fjwk_5fclaim_15',['get_jwk_claim',['../classjwt_1_1jwk.html#af814feaeb94f0394d14341e4e7024ebb',1,'jwt::jwk']]], + ['get_5fkey_5fid_16',['get_key_id',['../classjwt_1_1header.html#ad9e1ae6bf5aecf92d533028bc6f9b973',1,'jwt::header::get_key_id()'],['../classjwt_1_1jwk.html#a6ff417d9e099f70183e5b065130f420f',1,'jwt::jwk::get_key_id() const']]], + ['get_5fkey_5foperations_17',['get_key_operations',['../classjwt_1_1jwk.html#ae5f0bb1bc9728e721c62e7aa0ab1ce5a',1,'jwt::jwk']]], + ['get_5fkey_5ftype_18',['get_key_type',['../classjwt_1_1jwk.html#afcfb7ade4ffa503db7c5b92280b49514',1,'jwt::jwk']]], + ['get_5fnot_5fbefore_19',['get_not_before',['../classjwt_1_1payload.html#a60f492d8bda3225155b6f10f05273f35',1,'jwt::payload']]], + ['get_5fpayload_20',['get_payload',['../classjwt_1_1decoded__jwt.html#adb1dc325d49e01838e78e9cd809aaa2b',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fbase64_21',['get_payload_base64',['../classjwt_1_1decoded__jwt.html#aa137fa9dfcf54444901618bfa0fc2ac4',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fclaim_22',['get_payload_claim',['../classjwt_1_1payload.html#aabe0fc87ca6261eae5b7b32b7f2fd531',1,'jwt::payload::get_payload_claim()'],['../classjwt_1_1decoded__jwt.html#a6a86e22661351e17f8880d6b4801ea9a',1,'jwt::decoded_jwt::get_payload_claim(const typename json_traits::string_type &name) const']]], + ['get_5fpayload_5fjson_23',['get_payload_json',['../classjwt_1_1decoded__jwt.html#a8a4dea7cc8187e496feaf3112a6de419',1,'jwt::decoded_jwt']]], + ['get_5fsignature_24',['get_signature',['../classjwt_1_1decoded__jwt.html#a715bf6407901d555442ba79e68e96ddb',1,'jwt::decoded_jwt']]], + ['get_5fsignature_5fbase64_25',['get_signature_base64',['../classjwt_1_1decoded__jwt.html#a0210f5688a6b0327b781fbd3d6e124f7',1,'jwt::decoded_jwt']]], + ['get_5fsubject_26',['get_subject',['../classjwt_1_1payload.html#adb0c71f6a7ea21910314ff4372a945dd',1,'jwt::payload']]], + ['get_5ftoken_27',['get_token',['../classjwt_1_1decoded__jwt.html#ac6dce886f27c3a5afadea6ae991063fb',1,'jwt::decoded_jwt']]], + ['get_5ftype_28',['get_type',['../classjwt_1_1basic__claim.html#a59be52f75f5d32386f0e57be25dda38a',1,'jwt::basic_claim::get_type()'],['../classjwt_1_1header.html#a0bed2e5b52abbefda5317a2712c08e8a',1,'jwt::header::get_type()']]], + ['get_5fuse_29',['get_use',['../classjwt_1_1jwk.html#a8581a05f8628ce98a898e36fb30649df',1,'jwt::jwk']]], + ['get_5fx5c_30',['get_x5c',['../classjwt_1_1jwk.html#a50c5eb1410fc69363527329efd58d09c',1,'jwt::jwk']]], + ['get_5fx5c_5fkey_5fvalue_31',['get_x5c_key_value',['../classjwt_1_1jwk.html#a5e3675060ca4b75d675ed4a301abac95',1,'jwt::jwk']]], + ['get_5fx5t_32',['get_x5t',['../classjwt_1_1jwk.html#a5a1e7e2940e23e2e2a4f64e1db9d5f38',1,'jwt::jwk']]], + ['get_5fx5t_5fsha256_33',['get_x5t_sha256',['../classjwt_1_1jwk.html#a6f49dc9f0e73b9f34044ee56b49c8baa',1,'jwt::jwk']]], + ['get_5fx5u_34',['get_x5u',['../classjwt_1_1jwk.html#af9e5af688ecdc3c88579ba5bfcfa4f17',1,'jwt::jwk']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 00000000..566e933c --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['has_5falgorithm_0',['has_algorithm',['../classjwt_1_1header.html#a59cc46de655365a8c1d99c60828051c0',1,'jwt::header::has_algorithm()'],['../classjwt_1_1jwk.html#a7791ca410ed90a89a4325b990efdb1bd',1,'jwt::jwk::has_algorithm()']]], + ['has_5faudience_1',['has_audience',['../classjwt_1_1payload.html#ad9f078e20d3cb6ce1ee135b2698a7059',1,'jwt::payload']]], + ['has_5fcontent_5ftype_2',['has_content_type',['../classjwt_1_1header.html#a9b9e6f2fd191afd8a167591818ad26da',1,'jwt::header']]], + ['has_5fcurve_3',['has_curve',['../classjwt_1_1jwk.html#ae97c9750a6a65d7b6a5cc16a3e3d5c6b',1,'jwt::jwk']]], + ['has_5fexpires_5fat_4',['has_expires_at',['../classjwt_1_1payload.html#a8577be97185f42d58ba0ca0b31c1a116',1,'jwt::payload']]], + ['has_5fheader_5fclaim_5',['has_header_claim',['../classjwt_1_1header.html#a2d5ee46b83e06da380bcbe20c5362b59',1,'jwt::header']]], + ['has_5fid_6',['has_id',['../classjwt_1_1payload.html#a78fd663cc80012d9bbf1a948d246a69d',1,'jwt::payload']]], + ['has_5fissued_5fat_7',['has_issued_at',['../classjwt_1_1payload.html#a0d1df458e88887342373b4ddb1c6b8f2',1,'jwt::payload']]], + ['has_5fissuer_8',['has_issuer',['../classjwt_1_1payload.html#a69dcb60e7108e6d124135e1a079943ca',1,'jwt::payload']]], + ['has_5fjwk_9',['has_jwk',['../classjwt_1_1jwks.html#aedd6c046ef7c08fcf8ab71158d3bafc5',1,'jwt::jwks']]], + ['has_5fjwk_5fclaim_10',['has_jwk_claim',['../classjwt_1_1jwk.html#ac7776dfc51fca7a44ffdf80e1c9e699b',1,'jwt::jwk']]], + ['has_5fkey_5fid_11',['has_key_id',['../classjwt_1_1header.html#af8fb4b77c7c066bb4a6ffefc0d459000',1,'jwt::header::has_key_id()'],['../classjwt_1_1jwk.html#a8fd4f19ffb59645a70182aa53ee773d8',1,'jwt::jwk::has_key_id() const noexcept']]], + ['has_5fkey_5foperations_12',['has_key_operations',['../classjwt_1_1jwk.html#aa774d9e337af22dbb482efe480725593',1,'jwt::jwk']]], + ['has_5fkey_5ftype_13',['has_key_type',['../classjwt_1_1jwk.html#af2955f1903c7c25c07390b8734b1278b',1,'jwt::jwk']]], + ['has_5fnot_5fbefore_14',['has_not_before',['../classjwt_1_1payload.html#a151f3aed388ffeba63e14379808f3e53',1,'jwt::payload']]], + ['has_5fpayload_5fclaim_15',['has_payload_claim',['../classjwt_1_1payload.html#a3d7fce2a8b0ad4965671009baa619fa9',1,'jwt::payload']]], + ['has_5fsubject_16',['has_subject',['../classjwt_1_1payload.html#a3f9fd30aae3e7cb5fa4f5332cf9cc9e6',1,'jwt::payload']]], + ['has_5ftype_17',['has_type',['../classjwt_1_1header.html#a6904ba9440815ca602f5a819224333b6',1,'jwt::header']]], + ['has_5fuse_18',['has_use',['../classjwt_1_1jwk.html#aab3976b190dfb7753a67525a1aacf3e9',1,'jwt::jwk']]], + ['has_5fx5c_19',['has_x5c',['../classjwt_1_1jwk.html#a04b9237225866306df0b06d0be1c49df',1,'jwt::jwk']]], + ['has_5fx5t_20',['has_x5t',['../classjwt_1_1jwk.html#aad5f938603c9354d0ef0316dcc55c9e5',1,'jwt::jwk']]], + ['has_5fx5t_5fsha256_21',['has_x5t_sha256',['../classjwt_1_1jwk.html#a1c7acee846b84aa4c26094b8f71739c6',1,'jwt::jwk']]], + ['has_5fx5u_22',['has_x5u',['../classjwt_1_1jwk.html#a92093f86bd99995f21f3efdde09e1370',1,'jwt::jwk']]], + ['hmacsha_23',['hmacsha',['../structjwt_1_1algorithm_1_1hmacsha.html#adae33c918a428ab910dc83384f15136c',1,'jwt::algorithm::hmacsha']]], + ['hs256_24',['hs256',['../structjwt_1_1algorithm_1_1hs256.html#aeba2d057f0864940ac7970df581a2202',1,'jwt::algorithm::hs256']]], + ['hs384_25',['hs384',['../structjwt_1_1algorithm_1_1hs384.html#adf9de575602f35da6872d0bc29768d32',1,'jwt::algorithm::hs384']]], + ['hs512_26',['hs512',['../structjwt_1_1algorithm_1_1hs512.html#aa78caccdfba79b545cd18d94fd9b5da2',1,'jwt::algorithm::hs512']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 00000000..9b37427c --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['issued_5fat_5fleeway_0',['issued_at_leeway',['../classjwt_1_1verifier.html#a6d5c5569c3ec1f91393ea4dcf6c3e21f',1,'jwt::verifier']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 00000000..83175afa --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jwks_0',['jwks',['../classjwt_1_1jwks.html#a35532c5a8f559739bef25edafebd7561',1,'jwt::jwks::jwks()=default'],['../classjwt_1_1jwks.html#ad0fedb031f3b2f6ebf62e1e66b3451c2',1,'jwt::jwks::jwks(const typename json_traits::string_type &str)']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 00000000..784e3b30 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['leeway_0',['leeway',['../classjwt_1_1verifier.html#abb8a3e9d1decf63758baec48e964e3cd',1,'jwt::verifier']]], + ['load_5fprivate_5fec_5fkey_5ffrom_5fstring_1',['load_private_ec_key_from_string',['../namespacejwt_1_1helper.html#a63731359f8e1b6d0b31f3a768fc355f1',1,'jwt::helper::load_private_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#ad23f6478334425f86a75b659981187ca',1,'jwt::helper::load_private_ec_key_from_string(const std::string &key, const std::string &password="")']]], + ['load_5fprivate_5fkey_5ffrom_5fstring_2',['load_private_key_from_string',['../namespacejwt_1_1helper.html#acbfd2c904cc2d2f603ef3524930c9802',1,'jwt::helper::load_private_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a5091f944a41985bf1c72117bf7a87368',1,'jwt::helper::load_private_key_from_string(const std::string &key, const std::string &password="")']]], + ['load_5fpublic_5fec_5fkey_5ffrom_5fstring_3',['load_public_ec_key_from_string',['../namespacejwt_1_1helper.html#a366b03033ec53d5321256b9f05238b38',1,'jwt::helper::load_public_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a7ca85602a4520008b1b624e1b175bba5',1,'jwt::helper::load_public_ec_key_from_string(const std::string &key, const std::string &password="")']]], + ['load_5fpublic_5fkey_5ffrom_5fstring_4',['load_public_key_from_string',['../namespacejwt_1_1helper.html#a46af07b491df1bb8ce2f91419167bddf',1,'jwt::helper::load_public_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a305734040e76012a413378d65fad2611',1,'jwt::helper::load_public_key_from_string(const std::string &key, const std::string &password="")']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 00000000..c46f27c4 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['make_5ferror_5fcode_0',['make_error_code',['../namespacejwt_1_1error.html#ac6388f2c4e7f4ab3178053ad31d8960a',1,'jwt::error::make_error_code(rsa_error e)'],['../namespacejwt_1_1error.html#a6f161df364c8c96916102327c44bb222',1,'jwt::error::make_error_code(ecdsa_error e)'],['../namespacejwt_1_1error.html#a10e1eb999b24b20b47a109e2195cdd3f',1,'jwt::error::make_error_code(signature_verification_error e)'],['../namespacejwt_1_1error.html#ada6a1ce2904f5f1bacad36dcdf98bcf1',1,'jwt::error::make_error_code(signature_generation_error e)'],['../namespacejwt_1_1error.html#ade95fa33d7627f499b36643b3280d79f',1,'jwt::error::make_error_code(token_verification_error e)']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 00000000..9209b492 --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['name_0',['name',['../structjwt_1_1algorithm_1_1none.html#a8f34efd8955d3081f2189c07b9cec4ec',1,'jwt::algorithm::none::name()'],['../structjwt_1_1algorithm_1_1hmacsha.html#a2fd3ec7eadae1febc082d8cd66e3b48f',1,'jwt::algorithm::hmacsha::name()'],['../structjwt_1_1algorithm_1_1rsa.html#a533b279b12503e84d5a450acfe386ee2',1,'jwt::algorithm::rsa::name()'],['../structjwt_1_1algorithm_1_1ecdsa.html#aee414f0164c49a95d3cc06f7248a1c7b',1,'jwt::algorithm::ecdsa::name()'],['../structjwt_1_1algorithm_1_1eddsa.html#a20c350eb747ae9e7ae190fdc2a2a58ce',1,'jwt::algorithm::eddsa::name()'],['../structjwt_1_1algorithm_1_1pss.html#a8dd860877102b864b8a11de2336d57eb',1,'jwt::algorithm::pss::name()']]], + ['not_5fbefore_5fleeway_1',['not_before_leeway',['../classjwt_1_1verifier.html#a5ae0c09cc67ccc009149ca36d84d0fbf',1,'jwt::verifier']]], + ['now_2',['now',['../structjwt_1_1default__clock.html#a4b274e5dbec28ac3531313b8aefdf691',1,'jwt::default_clock']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 00000000..262cf4f6 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['operator_3c_3c_0',['operator<<',['../classjwt_1_1basic__claim.html#acb0dd9d4a9c683a33877b56c386a1428',1,'jwt::basic_claim']]], + ['operator_3e_3e_1',['operator>>',['../classjwt_1_1basic__claim.html#a81c5d71c9421d074f766e7c5a16106b2',1,'jwt::basic_claim']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 00000000..5e7f00d0 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['pad_0',['pad',['../namespacejwt_1_1base.html#ac78a8afb42e050736a6673cd9be38ffa',1,'jwt::base']]], + ['parse_5fjwk_1',['parse_jwk',['../namespacejwt.html#a8948012a32d2d558ced39f6101c5c7e0',1,'jwt::parse_jwk(const typename json_traits::string_type &jwk_)'],['../namespacejwt.html#ace6f81b008c344d9f2a993f0347fce7a',1,'jwt::parse_jwk(const traits::boost_json::string_type &token)']]], + ['parse_5fjwks_2',['parse_jwks',['../namespacejwt.html#a978368e4ebd959166629b689fbe3e4ec',1,'jwt::parse_jwks(const typename json_traits::string_type &jwks_)'],['../namespacejwt.html#a55c19b802020be5175068992bbe6dddb',1,'jwt::parse_jwks(const traits::boost_json::string_type &token)']]], + ['ps256_3',['ps256',['../structjwt_1_1algorithm_1_1ps256.html#a58a149697a0a03d79f955c2698233637',1,'jwt::algorithm::ps256']]], + ['ps384_4',['ps384',['../structjwt_1_1algorithm_1_1ps384.html#a5a9548f6f07d1dbcea66a17c32cdcb71',1,'jwt::algorithm::ps384']]], + ['ps512_5',['ps512',['../structjwt_1_1algorithm_1_1ps512.html#aeffb86b581f7a6c82a485672527fccb4',1,'jwt::algorithm::ps512']]], + ['pss_6',['pss',['../structjwt_1_1algorithm_1_1pss.html#ac42f049712066e8c8b41433185177b01',1,'jwt::algorithm::pss']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 00000000..b772de2e --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['raw2bn_0',['raw2bn',['../namespacejwt_1_1helper.html#a620f9b2cdcdcbfb8d398411cebd1f83c',1,'jwt::helper::raw2bn(const std::string &raw, std::error_code &ec)'],['../namespacejwt_1_1helper.html#aedff25cd41e1136d225e172e1fa61461',1,'jwt::helper::raw2bn(const std::string &raw)']]], + ['rs256_1',['rs256',['../structjwt_1_1algorithm_1_1rs256.html#aa87ccde15aad4ad592fa4ac0a2a5f748',1,'jwt::algorithm::rs256']]], + ['rs384_2',['rs384',['../structjwt_1_1algorithm_1_1rs384.html#a3f5bada82c323b97a6b1c5777bc512ef',1,'jwt::algorithm::rs384']]], + ['rs512_3',['rs512',['../structjwt_1_1algorithm_1_1rs512.html#aa3331d1fbe994d97ee57ffdabd05eb1b',1,'jwt::algorithm::rs512']]], + ['rsa_4',['rsa',['../structjwt_1_1algorithm_1_1rsa.html#a505ccbff5695e94370cc4549c2426bc7',1,'jwt::algorithm::rsa']]], + ['rsa_5ferror_5fcategory_5',['rsa_error_category',['../namespacejwt_1_1error.html#a7fd09a10a0c499fe063293a10caf89e9',1,'jwt::error']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 00000000..40e29a5b --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['set_5falgorithm_0',['set_algorithm',['../classjwt_1_1builder.html#a30c8575e0bc051ddbd059cc8f33901af',1,'jwt::builder']]], + ['set_5faudience_1',['set_audience',['../classjwt_1_1builder.html#aa467c6fdecc6eb24a15aa8d12ad8bf3f',1,'jwt::builder::set_audience(typename json_traits::array_type a)'],['../classjwt_1_1builder.html#a0802e89ea6f786e5054e65706519a7fc',1,'jwt::builder::set_audience(typename json_traits::string_type aud)']]], + ['set_5fcontent_5ftype_2',['set_content_type',['../classjwt_1_1builder.html#ac981cab62339602cde466e485fd8ba73',1,'jwt::builder']]], + ['set_5fexpires_5fat_3',['set_expires_at',['../classjwt_1_1builder.html#a3a86ce9d30ba356d635096aa52edce59',1,'jwt::builder']]], + ['set_5fexpires_5fin_4',['set_expires_in',['../classjwt_1_1builder.html#a2676613dcdb3e323ba413732fecc5ce2',1,'jwt::builder']]], + ['set_5fheader_5fclaim_5',['set_header_claim',['../classjwt_1_1builder.html#a9d38527f7bc6a602398d31463e02cd45',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)'],['../classjwt_1_1builder.html#aa1a54e4729b429f39d0653dc8ab68c05',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)']]], + ['set_5fid_6',['set_id',['../classjwt_1_1builder.html#a84f4a5eb95b2b1062ac35535e722b2db',1,'jwt::builder']]], + ['set_5fissued_5fat_7',['set_issued_at',['../classjwt_1_1builder.html#a5f04f42f90eac4ae249fc1ad8714389e',1,'jwt::builder']]], + ['set_5fissued_5fnow_8',['set_issued_now',['../classjwt_1_1builder.html#aebdd8cc359dd83a93d16356e7e0d3ec9',1,'jwt::builder']]], + ['set_5fissuer_9',['set_issuer',['../classjwt_1_1builder.html#af3fac73d576d0faa6e876f02d99c9823',1,'jwt::builder']]], + ['set_5fkey_5fid_10',['set_key_id',['../classjwt_1_1builder.html#af20342c125d75feef037649b74c56e94',1,'jwt::builder']]], + ['set_5fnot_5fbefore_11',['set_not_before',['../classjwt_1_1builder.html#ae0246e2cb498e06541ca2980c9da6c76',1,'jwt::builder']]], + ['set_5fpayload_5fclaim_12',['set_payload_claim',['../classjwt_1_1builder.html#a8290a4ad976f0d36f4da6b2310ad847a',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)'],['../classjwt_1_1builder.html#a0e7800e32fa1012cbeaf283786a5e586',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)']]], + ['set_5fsubject_13',['set_subject',['../classjwt_1_1builder.html#ae5722127fba2d9567c6b68a741cbba2f',1,'jwt::builder']]], + ['set_5ftype_14',['set_type',['../classjwt_1_1builder.html#a49a4e85df1c98faf540b4056a1d00f11',1,'jwt::builder']]], + ['sign_15',['sign',['../structjwt_1_1algorithm_1_1none.html#ad672c49fb2931f1fe5daae3595daf090',1,'jwt::algorithm::none::sign()'],['../structjwt_1_1algorithm_1_1hmacsha.html#a1c4b1e54522894fb83c18b52dd06fc70',1,'jwt::algorithm::hmacsha::sign()'],['../structjwt_1_1algorithm_1_1rsa.html#a35ceb620da332ce4b487866a4bb16eb4',1,'jwt::algorithm::rsa::sign()'],['../structjwt_1_1algorithm_1_1ecdsa.html#a1498ffe04434510bc854e20f9c6c81ed',1,'jwt::algorithm::ecdsa::sign()'],['../structjwt_1_1algorithm_1_1eddsa.html#a696fec4d3122fa795c9cf4c2d41f58aa',1,'jwt::algorithm::eddsa::sign()'],['../structjwt_1_1algorithm_1_1pss.html#ad1a33f36e7f0e3cd73024920504ed596',1,'jwt::algorithm::pss::sign()'],['../classjwt_1_1builder.html#aa25101397fd0eedd6e7025e72e4ebfc0',1,'jwt::builder::sign(const Algo &algo, Encode encode) const'],['../classjwt_1_1builder.html#a7e07c097549542adbafbcdaaf3f96edd',1,'jwt::builder::sign(const Algo &algo) const'],['../classjwt_1_1builder.html#ab3a46c8adeb6b9e5dc76a753bb78cd14',1,'jwt::builder::sign(const Algo &algo, Encode encode, std::error_code &ec) const'],['../classjwt_1_1builder.html#a563bd0c77e05a6ca908aee9b0a8b97e9',1,'jwt::builder::sign(const Algo &algo, std::error_code &ec) const']]], + ['signature_5fgeneration_5ferror_5fcategory_16',['signature_generation_error_category',['../namespacejwt_1_1error.html#a86c5b0c1df898d66161455b323b8053e',1,'jwt::error']]], + ['signature_5fverification_5ferror_5fcategory_17',['signature_verification_error_category',['../namespacejwt_1_1error.html#a7c0e4691aa8c55743300cd068ad23aec',1,'jwt::error']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 00000000..ffb6cf0d --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 00000000..4122773f --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 00000000..553dba87 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 00000000..c906f84c --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 00000000..293882df --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['jwt_0',['jwt',['../namespacejwt.html',1,'']]], + ['jwt_3a_3aalgorithm_1',['algorithm',['../namespacejwt_1_1algorithm.html',1,'jwt']]], + ['jwt_3a_3aalphabet_2',['alphabet',['../namespacejwt_1_1alphabet.html',1,'jwt']]], + ['jwt_3a_3abase_3',['base',['../namespacejwt_1_1base.html',1,'jwt']]], + ['jwt_3a_3aerror_4',['error',['../namespacejwt_1_1error.html',1,'jwt']]], + ['jwt_3a_3ahelper_5',['helper',['../namespacejwt_1_1helper.html',1,'jwt']]], + ['jwt_3a_3ajson_6',['json',['../namespacejwt_1_1json.html',1,'jwt']]], + ['jwt_3a_3atraits_7',['traits',['../namespacejwt_1_1traits.html',1,'jwt']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 00000000..2706a2db --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['asked_20questions_0',['Frequently Asked Questions',['../md_docs_2faqs.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 00000000..fbea7999 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['cpp_0',['JWT-CPP',['../index.html',1,'']]], + ['cryptography_20libraries_1',['Cryptography Libraries',['../md_docs_2ssl.html',1,'']]] +]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 00000000..4d858458 --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/search/pages_3.js b/search/pages_3.js new file mode 100644 index 00000000..546872a2 --- /dev/null +++ b/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frequently_20asked_20questions_0',['Frequently Asked Questions',['../md_docs_2faqs.html',1,'']]] +]; diff --git a/search/pages_4.js b/search/pages_4.js new file mode 100644 index 00000000..44c8c534 --- /dev/null +++ b/search/pages_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['installation_0',['Installation',['../md_docs_2install.html',1,'']]], + ['issues_1',['Reporting Security Issues',['../md__8github_2security.html',1,'']]] +]; diff --git a/search/pages_5.js b/search/pages_5.js new file mode 100644 index 00000000..e68d43f4 --- /dev/null +++ b/search/pages_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['json_20traits_0',['JSON Traits',['../md_docs_2traits.html',1,'']]], + ['jwt_20cpp_1',['JWT-CPP',['../index.html',1,'']]] +]; diff --git a/search/pages_6.js b/search/pages_6.js new file mode 100644 index 00000000..1404d4ae --- /dev/null +++ b/search/pages_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['libraries_0',['Cryptography Libraries',['../md_docs_2ssl.html',1,'']]], + ['list_1',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/search/pages_7.js b/search/pages_7.js new file mode 100644 index 00000000..6178922e --- /dev/null +++ b/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['questions_0',['Frequently Asked Questions',['../md_docs_2faqs.html',1,'']]] +]; diff --git a/search/pages_8.js b/search/pages_8.js new file mode 100644 index 00000000..587c8b7f --- /dev/null +++ b/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reporting_20security_20issues_0',['Reporting Security Issues',['../md__8github_2security.html',1,'']]] +]; diff --git a/search/pages_9.js b/search/pages_9.js new file mode 100644 index 00000000..b1254b5b --- /dev/null +++ b/search/pages_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['security_20issues_0',['Reporting Security Issues',['../md__8github_2security.html',1,'']]], + ['signing_20tokens_1',['Signing Tokens',['../md_docs_2signing.html',1,'']]] +]; diff --git a/search/pages_a.js b/search/pages_a.js new file mode 100644 index 00000000..0370adb3 --- /dev/null +++ b/search/pages_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tokens_0',['Signing Tokens',['../md_docs_2signing.html',1,'']]], + ['traits_1',['JSON Traits',['../md_docs_2traits.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 00000000..d7b0f90b --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: url('mag_sel.svg'); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: url('mag.svg'); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial,Verdana,sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: black; +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial,Verdana,sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: black; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: black; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: white; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid black; + background-color: #EEF1F7; + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: #EEF1F7; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial,Verdana,sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial,Verdana,sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 00000000..666af01e --- /dev/null +++ b/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ecdsa Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::ecdsa, including all inherited members.

    + + + + + +
    ecdsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)jwt::algorithm::ecdsainline
    name() constjwt::algorithm::ecdsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::ecdsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::ecdsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ecdsa.html b/structjwt_1_1algorithm_1_1ecdsa.html new file mode 100644 index 00000000..6e12c7b4 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ecdsa.html @@ -0,0 +1,315 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ecdsa Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::ecdsa Struct Reference
    +
    +
    + +

    Base class for ECDSA family of algorithms. + More...

    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::ecdsa:
    +
    +
    +
    [legend]
    + + + + + + + + + + +

    +Public Member Functions

     ecdsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    Base class for ECDSA family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ecdsa()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::ecdsa::ecdsa (const std::string & public_key,
    const std::string & private_key,
    const std::string & public_key_password,
    const std::string & private_key_password,
    const EVP_MD *(*)() md,
    std::string name,
    size_t siglen )
    +
    +inline
    +
    +

    Construct new ecdsa algorithm

    +
    Parameters
    + + + + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail
    public_key_passwordPassword to decrypt public key pem
    private_key_passwordPassword to decrypt private key pem
    mdPointer to hash function
    nameName of the algorithm
    siglenThe bit length of the signature
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ name()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::algorithm::ecdsa::name () const
    +
    +inline
    +
    +

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::algorithm::ecdsa::sign (const std::string & data,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Sign jwt data

    Parameters
    + + + +
    dataThe data to sign
    ecerror_code filled with details on error
    +
    +
    +
    Returns
    ECDSA signature for the given data
    + +
    +
    + +

    ◆ verify()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void jwt::algorithm::ecdsa::verify (const std::string & data,
    const std::string & signature,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Check if signature is valid

    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details on error
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ecdsa.js b/structjwt_1_1algorithm_1_1ecdsa.js new file mode 100644 index 00000000..69c4e900 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ecdsa.js @@ -0,0 +1,7 @@ +var structjwt_1_1algorithm_1_1ecdsa = +[ + [ "ecdsa", "structjwt_1_1algorithm_1_1ecdsa.html#a26916f3b94cced8e413df2b3312432c5", null ], + [ "name", "structjwt_1_1algorithm_1_1ecdsa.html#aee414f0164c49a95d3cc06f7248a1c7b", null ], + [ "sign", "structjwt_1_1algorithm_1_1ecdsa.html#a1498ffe04434510bc854e20f9c6c81ed", null ], + [ "verify", "structjwt_1_1algorithm_1_1ecdsa.html#a07f0ad6eabfd1dace07e00e51a46cfe1", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.map b/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.map new file mode 100644 index 00000000..f3127b03 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.md5 b/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.md5 new file mode 100644 index 00000000..526273a3 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.md5 @@ -0,0 +1 @@ +c47e78b0be0e616e9ba72e774e0fd9f4 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.svg b/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.svg new file mode 100644 index 00000000..1f64fd67 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ecdsa__inherit__graph.svg @@ -0,0 +1,93 @@ + + + + + + +jwt::algorithm::ecdsa + + +Node1 + + +jwt::algorithm::ecdsa + + + + + +Node2 + + +jwt::algorithm::es256 + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt::algorithm::es256k + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +jwt::algorithm::es384 + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +jwt::algorithm::es512 + + + + + +Node1->Node5 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1ed25519-members.html b/structjwt_1_1algorithm_1_1ed25519-members.html new file mode 100644 index 00000000..f5ec0d91 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ed25519 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::ed25519, including all inherited members.

    + + + + + + +
    ed25519(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::ed25519inlineexplicit
    eddsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)jwt::algorithm::eddsainline
    name() constjwt::algorithm::eddsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::eddsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::eddsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed25519.html b/structjwt_1_1algorithm_1_1ed25519.html new file mode 100644 index 00000000..b3a37679 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519.html @@ -0,0 +1,192 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ed25519 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::ed25519 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::ed25519:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     ed25519 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::eddsa
     eddsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    Ed25519 algorithm

    +

    https://en.wikipedia.org/wiki/EdDSA#Ed25519

    +

    Requires at least OpenSSL 1.1.1.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ed25519()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::ed25519::ed25519 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyEd25519 public key in PEM format
    private_keyEd25519 private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed25519.js b/structjwt_1_1algorithm_1_1ed25519.js new file mode 100644 index 00000000..048afc4e --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1ed25519 = +[ + [ "ed25519", "structjwt_1_1algorithm_1_1ed25519.html#aa6c66e731c2b597965768cdcdea29b9a", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ed25519__inherit__graph.map b/structjwt_1_1algorithm_1_1ed25519__inherit__graph.map new file mode 100644 index 00000000..eb243206 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1ed25519__inherit__graph.md5 b/structjwt_1_1algorithm_1_1ed25519__inherit__graph.md5 new file mode 100644 index 00000000..5d637742 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519__inherit__graph.md5 @@ -0,0 +1 @@ +d2424a773a124cde8df3b4e41d36988d \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ed25519__inherit__graph.svg b/structjwt_1_1algorithm_1_1ed25519__inherit__graph.svg new file mode 100644 index 00000000..12ab3967 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::ed25519 + + +Node1 + + +jwt::algorithm::ed25519 + + + + + +Node2 + + +jwt::algorithm::eddsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1ed448-members.html b/structjwt_1_1algorithm_1_1ed448-members.html new file mode 100644 index 00000000..8fc026fd --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ed448 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::ed448, including all inherited members.

    + + + + + + +
    ed448(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::ed448inlineexplicit
    eddsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)jwt::algorithm::eddsainline
    name() constjwt::algorithm::eddsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::eddsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::eddsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed448.html b/structjwt_1_1algorithm_1_1ed448.html new file mode 100644 index 00000000..3d9f1b72 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448.html @@ -0,0 +1,192 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ed448 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::ed448 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::ed448:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     ed448 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::eddsa
     eddsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    Ed448 algorithm

    +

    https://en.wikipedia.org/wiki/EdDSA#Ed448

    +

    Requires at least OpenSSL 1.1.1.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ed448()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::ed448::ed448 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyEd448 public key in PEM format
    private_keyEd448 private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed448.js b/structjwt_1_1algorithm_1_1ed448.js new file mode 100644 index 00000000..3acc36b5 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1ed448 = +[ + [ "ed448", "structjwt_1_1algorithm_1_1ed448.html#a4fa1fcbc8669ef749f65c39b8a976df7", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ed448__inherit__graph.map b/structjwt_1_1algorithm_1_1ed448__inherit__graph.map new file mode 100644 index 00000000..f795de38 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1ed448__inherit__graph.md5 b/structjwt_1_1algorithm_1_1ed448__inherit__graph.md5 new file mode 100644 index 00000000..5d508863 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448__inherit__graph.md5 @@ -0,0 +1 @@ +eeef63bb0f4340033d9b03cf63f20462 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ed448__inherit__graph.svg b/structjwt_1_1algorithm_1_1ed448__inherit__graph.svg new file mode 100644 index 00000000..f146780c --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::ed448 + + +Node1 + + +jwt::algorithm::ed448 + + + + + +Node2 + + +jwt::algorithm::eddsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1eddsa-members.html b/structjwt_1_1algorithm_1_1eddsa-members.html new file mode 100644 index 00000000..41bc79b2 --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::eddsa Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::eddsa, including all inherited members.

    + + + + + +
    eddsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)jwt::algorithm::eddsainline
    name() constjwt::algorithm::eddsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::eddsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::eddsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1eddsa.html b/structjwt_1_1algorithm_1_1eddsa.html new file mode 100644 index 00000000..804cb2fe --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa.html @@ -0,0 +1,304 @@ + + + + + + + +JWT-CPP: jwt::algorithm::eddsa Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::eddsa Struct Reference
    +
    +
    + +

    Base class for EdDSA family of algorithms. + More...

    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::eddsa:
    +
    +
    +
    [legend]
    + + + + + + + + + + +

    +Public Member Functions

     eddsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    Base class for EdDSA family of algorithms.

    +

    https://tools.ietf.org/html/rfc8032

    +

    The EdDSA algorithms were introduced in OpenSSL v1.1.1, so these algorithms are only available when building against this version or higher.

    +

    Constructor & Destructor Documentation

    + +

    ◆ eddsa()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::eddsa::eddsa (const std::string & public_key,
    const std::string & private_key,
    const std::string & public_key_password,
    const std::string & private_key_password,
    std::string name )
    +
    +inline
    +
    +

    Construct new eddsa algorithm

    Parameters
    + + + + + + +
    public_keyEdDSA public key in PEM format
    private_keyEdDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    nameName of the algorithm
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ name()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::algorithm::eddsa::name () const
    +
    +inline
    +
    +

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::algorithm::eddsa::sign (const std::string & data,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Sign jwt data

    Parameters
    + + + +
    dataThe data to sign
    ecerror_code filled with details on error
    +
    +
    +
    Returns
    EdDSA signature for the given data
    + +
    +
    + +

    ◆ verify()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void jwt::algorithm::eddsa::verify (const std::string & data,
    const std::string & signature,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Check if signature is valid

    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details on error
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1eddsa.js b/structjwt_1_1algorithm_1_1eddsa.js new file mode 100644 index 00000000..8ff501b4 --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa.js @@ -0,0 +1,7 @@ +var structjwt_1_1algorithm_1_1eddsa = +[ + [ "eddsa", "structjwt_1_1algorithm_1_1eddsa.html#a35aca8602274c1d8afc8ed90532466d1", null ], + [ "name", "structjwt_1_1algorithm_1_1eddsa.html#a20c350eb747ae9e7ae190fdc2a2a58ce", null ], + [ "sign", "structjwt_1_1algorithm_1_1eddsa.html#a696fec4d3122fa795c9cf4c2d41f58aa", null ], + [ "verify", "structjwt_1_1algorithm_1_1eddsa.html#aeacb514e6be70be3a2874e4c4e1d0852", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1eddsa__inherit__graph.map b/structjwt_1_1algorithm_1_1eddsa__inherit__graph.map new file mode 100644 index 00000000..5ca31a43 --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/structjwt_1_1algorithm_1_1eddsa__inherit__graph.md5 b/structjwt_1_1algorithm_1_1eddsa__inherit__graph.md5 new file mode 100644 index 00000000..f8086c4b --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa__inherit__graph.md5 @@ -0,0 +1 @@ +845dc252848a5399f312bc731360b767 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1eddsa__inherit__graph.svg b/structjwt_1_1algorithm_1_1eddsa__inherit__graph.svg new file mode 100644 index 00000000..cc901037 --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +jwt::algorithm::eddsa + + +Node1 + + +jwt::algorithm::eddsa + + + + + +Node2 + + +jwt::algorithm::ed25519 + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt::algorithm::ed448 + + + + + +Node1->Node3 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1es256-members.html b/structjwt_1_1algorithm_1_1es256-members.html new file mode 100644 index 00000000..9261915e --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es256 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::es256, including all inherited members.

    + + + + + + +
    ecdsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)jwt::algorithm::ecdsainline
    es256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::es256inlineexplicit
    name() constjwt::algorithm::ecdsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::ecdsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::ecdsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256.html b/structjwt_1_1algorithm_1_1es256.html new file mode 100644 index 00000000..3402eda0 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es256 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::es256 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::es256:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     es256 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::ecdsa
     ecdsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    ES256 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es256()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::es256::es256 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256.js b/structjwt_1_1algorithm_1_1es256.js new file mode 100644 index 00000000..b0426f88 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1es256 = +[ + [ "es256", "structjwt_1_1algorithm_1_1es256.html#aac62df85a6311e2e3bdfc8821a522127", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es256__inherit__graph.map b/structjwt_1_1algorithm_1_1es256__inherit__graph.map new file mode 100644 index 00000000..0ea1596a --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1es256__inherit__graph.md5 b/structjwt_1_1algorithm_1_1es256__inherit__graph.md5 new file mode 100644 index 00000000..b8521bed --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256__inherit__graph.md5 @@ -0,0 +1 @@ +8590520d7265c03d0d97075958df31f4 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es256__inherit__graph.svg b/structjwt_1_1algorithm_1_1es256__inherit__graph.svg new file mode 100644 index 00000000..385dd6e5 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::es256 + + +Node1 + + +jwt::algorithm::es256 + + + + + +Node2 + + +jwt::algorithm::ecdsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1es256k-members.html b/structjwt_1_1algorithm_1_1es256k-members.html new file mode 100644 index 00000000..c1ce8f1c --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es256k Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::es256k, including all inherited members.

    + + + + + + +
    ecdsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)jwt::algorithm::ecdsainline
    es256k(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::es256kinlineexplicit
    name() constjwt::algorithm::ecdsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::ecdsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::ecdsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256k.html b/structjwt_1_1algorithm_1_1es256k.html new file mode 100644 index 00000000..54723434 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es256k Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::es256k Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::es256k:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     es256k (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::ecdsa
     ecdsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    ES256K algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es256k()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::es256k::es256k (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256k.js b/structjwt_1_1algorithm_1_1es256k.js new file mode 100644 index 00000000..9e464728 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1es256k = +[ + [ "es256k", "structjwt_1_1algorithm_1_1es256k.html#ad88e35c7c3494b7da3024f019ab59097", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es256k__inherit__graph.map b/structjwt_1_1algorithm_1_1es256k__inherit__graph.map new file mode 100644 index 00000000..fc21cc51 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1es256k__inherit__graph.md5 b/structjwt_1_1algorithm_1_1es256k__inherit__graph.md5 new file mode 100644 index 00000000..4e3f28d8 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k__inherit__graph.md5 @@ -0,0 +1 @@ +797994bba5d31f565d31af4ad9b0e767 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es256k__inherit__graph.svg b/structjwt_1_1algorithm_1_1es256k__inherit__graph.svg new file mode 100644 index 00000000..2e65dc7a --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::es256k + + +Node1 + + +jwt::algorithm::es256k + + + + + +Node2 + + +jwt::algorithm::ecdsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1es384-members.html b/structjwt_1_1algorithm_1_1es384-members.html new file mode 100644 index 00000000..f7a911f9 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es384 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::es384, including all inherited members.

    + + + + + + +
    ecdsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)jwt::algorithm::ecdsainline
    es384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::es384inlineexplicit
    name() constjwt::algorithm::ecdsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::ecdsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::ecdsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es384.html b/structjwt_1_1algorithm_1_1es384.html new file mode 100644 index 00000000..a62145e4 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es384 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::es384 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::es384:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     es384 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::ecdsa
     ecdsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    ES384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es384()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::es384::es384 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es384.js b/structjwt_1_1algorithm_1_1es384.js new file mode 100644 index 00000000..cac769b5 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1es384 = +[ + [ "es384", "structjwt_1_1algorithm_1_1es384.html#a820e0e6673d7c429bfd8bb272d57d849", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es384__inherit__graph.map b/structjwt_1_1algorithm_1_1es384__inherit__graph.map new file mode 100644 index 00000000..ba2f6a39 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1es384__inherit__graph.md5 b/structjwt_1_1algorithm_1_1es384__inherit__graph.md5 new file mode 100644 index 00000000..ff51f235 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384__inherit__graph.md5 @@ -0,0 +1 @@ +d58d5c0839277102f330aabfe405a9e7 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es384__inherit__graph.svg b/structjwt_1_1algorithm_1_1es384__inherit__graph.svg new file mode 100644 index 00000000..d9d24f39 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::es384 + + +Node1 + + +jwt::algorithm::es384 + + + + + +Node2 + + +jwt::algorithm::ecdsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1es512-members.html b/structjwt_1_1algorithm_1_1es512-members.html new file mode 100644 index 00000000..3b30addf --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es512 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::es512, including all inherited members.

    + + + + + + +
    ecdsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)jwt::algorithm::ecdsainline
    es512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::es512inlineexplicit
    name() constjwt::algorithm::ecdsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::ecdsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::ecdsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es512.html b/structjwt_1_1algorithm_1_1es512.html new file mode 100644 index 00000000..c8f31f74 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es512 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::es512 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::es512:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     es512 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::ecdsa
     ecdsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    ES512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es512()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::es512::es512 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es512.js b/structjwt_1_1algorithm_1_1es512.js new file mode 100644 index 00000000..fc4a64cf --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1es512 = +[ + [ "es512", "structjwt_1_1algorithm_1_1es512.html#aa37f9fe9071c49b7f686fe382d20e7d7", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es512__inherit__graph.map b/structjwt_1_1algorithm_1_1es512__inherit__graph.map new file mode 100644 index 00000000..6c8eb242 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1es512__inherit__graph.md5 b/structjwt_1_1algorithm_1_1es512__inherit__graph.md5 new file mode 100644 index 00000000..1061e319 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512__inherit__graph.md5 @@ -0,0 +1 @@ +053dd1421a66620eb6d92fff336225e2 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1es512__inherit__graph.svg b/structjwt_1_1algorithm_1_1es512__inherit__graph.svg new file mode 100644 index 00000000..d48d39d9 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::es512 + + +Node1 + + +jwt::algorithm::es512 + + + + + +Node2 + + +jwt::algorithm::ecdsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1hmacsha-members.html b/structjwt_1_1algorithm_1_1hmacsha-members.html new file mode 100644 index 00000000..7b103c28 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hmacsha Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::hmacsha, including all inherited members.

    + + + + + +
    hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)jwt::algorithm::hmacshainline
    name() constjwt::algorithm::hmacshainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::hmacshainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::hmacshainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hmacsha.html b/structjwt_1_1algorithm_1_1hmacsha.html new file mode 100644 index 00000000..45134688 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha.html @@ -0,0 +1,294 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hmacsha Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::hmacsha Struct Reference
    +
    +
    + +

    Base class for HMAC family of algorithms. + More...

    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::hmacsha:
    +
    +
    +
    [legend]
    + + + + + + + + + + +

    +Public Member Functions

     hmacsha (std::string key, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    Base class for HMAC family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ hmacsha()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    jwt::algorithm::hmacsha::hmacsha (std::string key,
    const EVP_MD *(*)() md,
    std::string name )
    +
    +inline
    +
    +

    Construct new hmac algorithm

    +
    Parameters
    + + + + +
    keyKey to use for HMAC
    mdPointer to hash function
    nameName of the algorithm
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ name()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::algorithm::hmacsha::name () const
    +
    +inline
    +
    +

    Returns the algorithm name provided to the constructor

    +
    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::algorithm::hmacsha::sign (const std::string & data,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Sign jwt data

    +
    Parameters
    + + + +
    dataThe data to sign
    ecerror_code filled with details on error
    +
    +
    +
    Returns
    HMAC signature for the given data
    + +
    +
    + +

    ◆ verify()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void jwt::algorithm::hmacsha::verify (const std::string & data,
    const std::string & signature,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Check if signature is valid

    +
    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details about failure.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hmacsha.js b/structjwt_1_1algorithm_1_1hmacsha.js new file mode 100644 index 00000000..4862ebc4 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha.js @@ -0,0 +1,7 @@ +var structjwt_1_1algorithm_1_1hmacsha = +[ + [ "hmacsha", "structjwt_1_1algorithm_1_1hmacsha.html#adae33c918a428ab910dc83384f15136c", null ], + [ "name", "structjwt_1_1algorithm_1_1hmacsha.html#a2fd3ec7eadae1febc082d8cd66e3b48f", null ], + [ "sign", "structjwt_1_1algorithm_1_1hmacsha.html#a1c4b1e54522894fb83c18b52dd06fc70", null ], + [ "verify", "structjwt_1_1algorithm_1_1hmacsha.html#a8f667034d2f9821f21a430d08e322d5b", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.map b/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.map new file mode 100644 index 00000000..38a7ffa6 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.md5 b/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.md5 new file mode 100644 index 00000000..84f7d3cb --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.md5 @@ -0,0 +1 @@ +debc9ed25d9ef188a394e670705a7bad \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.svg b/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.svg new file mode 100644 index 00000000..6358609b --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha__inherit__graph.svg @@ -0,0 +1,75 @@ + + + + + + +jwt::algorithm::hmacsha + + +Node1 + + +jwt::algorithm::hmacsha + + + + + +Node2 + + +jwt::algorithm::hs256 + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt::algorithm::hs384 + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +jwt::algorithm::hs512 + + + + + +Node1->Node4 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1hs256-members.html b/structjwt_1_1algorithm_1_1hs256-members.html new file mode 100644 index 00000000..2bf59f4c --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hs256 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::hs256, including all inherited members.

    + + + + + + +
    hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)jwt::algorithm::hmacshainline
    hs256(std::string key)jwt::algorithm::hs256inlineexplicit
    name() constjwt::algorithm::hmacshainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::hmacshainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::hmacshainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs256.html b/structjwt_1_1algorithm_1_1hs256.html new file mode 100644 index 00000000..d6d11b72 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256.html @@ -0,0 +1,173 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hs256 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::hs256 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::hs256:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     hs256 (std::string key)
     
    - Public Member Functions inherited from jwt::algorithm::hmacsha
     hmacsha (std::string key, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    HS256 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ hs256()

    + +
    +
    + + + + + +
    + + + + + + + +
    jwt::algorithm::hs256::hs256 (std::string key)
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + +
    keyHMAC signing key
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs256.js b/structjwt_1_1algorithm_1_1hs256.js new file mode 100644 index 00000000..8c870ca7 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1hs256 = +[ + [ "hs256", "structjwt_1_1algorithm_1_1hs256.html#aeba2d057f0864940ac7970df581a2202", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hs256__inherit__graph.map b/structjwt_1_1algorithm_1_1hs256__inherit__graph.map new file mode 100644 index 00000000..2e9d09d9 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1hs256__inherit__graph.md5 b/structjwt_1_1algorithm_1_1hs256__inherit__graph.md5 new file mode 100644 index 00000000..5fe81153 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256__inherit__graph.md5 @@ -0,0 +1 @@ +ac9cdaf5994c26b9b6f19085070a3458 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hs256__inherit__graph.svg b/structjwt_1_1algorithm_1_1hs256__inherit__graph.svg new file mode 100644 index 00000000..e22d1719 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::hs256 + + +Node1 + + +jwt::algorithm::hs256 + + + + + +Node2 + + +jwt::algorithm::hmacsha + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1hs384-members.html b/structjwt_1_1algorithm_1_1hs384-members.html new file mode 100644 index 00000000..de57eb17 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hs384 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::hs384, including all inherited members.

    + + + + + + +
    hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)jwt::algorithm::hmacshainline
    hs384(std::string key)jwt::algorithm::hs384inlineexplicit
    name() constjwt::algorithm::hmacshainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::hmacshainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::hmacshainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs384.html b/structjwt_1_1algorithm_1_1hs384.html new file mode 100644 index 00000000..4290c25e --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384.html @@ -0,0 +1,173 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hs384 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::hs384 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::hs384:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     hs384 (std::string key)
     
    - Public Member Functions inherited from jwt::algorithm::hmacsha
     hmacsha (std::string key, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    HS384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ hs384()

    + +
    +
    + + + + + +
    + + + + + + + +
    jwt::algorithm::hs384::hs384 (std::string key)
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + +
    keyHMAC signing key
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs384.js b/structjwt_1_1algorithm_1_1hs384.js new file mode 100644 index 00000000..81fb0910 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1hs384 = +[ + [ "hs384", "structjwt_1_1algorithm_1_1hs384.html#adf9de575602f35da6872d0bc29768d32", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hs384__inherit__graph.map b/structjwt_1_1algorithm_1_1hs384__inherit__graph.map new file mode 100644 index 00000000..049f7da1 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1hs384__inherit__graph.md5 b/structjwt_1_1algorithm_1_1hs384__inherit__graph.md5 new file mode 100644 index 00000000..4a720aeb --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384__inherit__graph.md5 @@ -0,0 +1 @@ +26768c1c0e6ec3dbb21c3bc50c8abce1 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hs384__inherit__graph.svg b/structjwt_1_1algorithm_1_1hs384__inherit__graph.svg new file mode 100644 index 00000000..641951fd --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::hs384 + + +Node1 + + +jwt::algorithm::hs384 + + + + + +Node2 + + +jwt::algorithm::hmacsha + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1hs512-members.html b/structjwt_1_1algorithm_1_1hs512-members.html new file mode 100644 index 00000000..386f105a --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hs512 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::hs512, including all inherited members.

    + + + + + + +
    hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)jwt::algorithm::hmacshainline
    hs512(std::string key)jwt::algorithm::hs512inlineexplicit
    name() constjwt::algorithm::hmacshainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::hmacshainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::hmacshainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs512.html b/structjwt_1_1algorithm_1_1hs512.html new file mode 100644 index 00000000..7dc4747f --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512.html @@ -0,0 +1,173 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hs512 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::hs512 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::hs512:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     hs512 (std::string key)
     
    - Public Member Functions inherited from jwt::algorithm::hmacsha
     hmacsha (std::string key, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    HS512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ hs512()

    + +
    +
    + + + + + +
    + + + + + + + +
    jwt::algorithm::hs512::hs512 (std::string key)
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + +
    keyHMAC signing key
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs512.js b/structjwt_1_1algorithm_1_1hs512.js new file mode 100644 index 00000000..55000cc3 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1hs512 = +[ + [ "hs512", "structjwt_1_1algorithm_1_1hs512.html#aa78caccdfba79b545cd18d94fd9b5da2", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hs512__inherit__graph.map b/structjwt_1_1algorithm_1_1hs512__inherit__graph.map new file mode 100644 index 00000000..55ee94e0 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1hs512__inherit__graph.md5 b/structjwt_1_1algorithm_1_1hs512__inherit__graph.md5 new file mode 100644 index 00000000..1becc04b --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512__inherit__graph.md5 @@ -0,0 +1 @@ +866436bcfbaef31f1da3120e12ae03b2 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1hs512__inherit__graph.svg b/structjwt_1_1algorithm_1_1hs512__inherit__graph.svg new file mode 100644 index 00000000..e1f3211b --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::hs512 + + +Node1 + + +jwt::algorithm::hs512 + + + + + +Node2 + + +jwt::algorithm::hmacsha + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1none-members.html b/structjwt_1_1algorithm_1_1none-members.html new file mode 100644 index 00000000..639554c7 --- /dev/null +++ b/structjwt_1_1algorithm_1_1none-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::none Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::none, including all inherited members.

    + + + + +
    name() constjwt::algorithm::noneinline
    sign(const std::string &, std::error_code &ec) constjwt::algorithm::noneinline
    verify(const std::string &, const std::string &signature, std::error_code &ec) constjwt::algorithm::noneinline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1none.html b/structjwt_1_1algorithm_1_1none.html new file mode 100644 index 00000000..dddeb2e2 --- /dev/null +++ b/structjwt_1_1algorithm_1_1none.html @@ -0,0 +1,184 @@ + + + + + + + +JWT-CPP: jwt::algorithm::none Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::none Struct Reference
    +
    +
    + +

    "none" algorithm. + More...

    + +

    #include <jwt.h>

    + + + + + + + + + + + +

    +Public Member Functions

    +std::string sign (const std::string &, std::error_code &ec) const
     Return an empty string.
     
    void verify (const std::string &, const std::string &signature, std::error_code &ec) const
     Check if the given signature is empty.
     
    +std::string name () const
     Get algorithm name.
     
    +

    Detailed Description

    +

    "none" algorithm.

    +

    Returns and empty signature and checks if the given signature is empty. See RFC 7518 Section 3.6 for more information.

    +

    Member Function Documentation

    + +

    ◆ verify()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void jwt::algorithm::none::verify (const std::string & ,
    const std::string & signature,
    std::error_code & ec ) const
    +
    +inline
    +
    + +

    Check if the given signature is empty.

    +

    JWT's with "none" algorithm should not contain a signature.

    Parameters
    + + + +
    signatureSignature data to verify
    ecerror_code filled with details about the error
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1none.js b/structjwt_1_1algorithm_1_1none.js new file mode 100644 index 00000000..31b294c3 --- /dev/null +++ b/structjwt_1_1algorithm_1_1none.js @@ -0,0 +1,6 @@ +var structjwt_1_1algorithm_1_1none = +[ + [ "name", "structjwt_1_1algorithm_1_1none.html#a8f34efd8955d3081f2189c07b9cec4ec", null ], + [ "sign", "structjwt_1_1algorithm_1_1none.html#ad672c49fb2931f1fe5daae3595daf090", null ], + [ "verify", "structjwt_1_1algorithm_1_1none.html#a7b5d147bcad38fb193d5e21bacd200a2", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ps256-members.html b/structjwt_1_1algorithm_1_1ps256-members.html new file mode 100644 index 00000000..6a3fe43a --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ps256 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::ps256, including all inherited members.

    + + + + + + +
    name() constjwt::algorithm::pssinline
    ps256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::ps256inlineexplicit
    pss(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::pssinline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::pssinline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::pssinline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps256.html b/structjwt_1_1algorithm_1_1ps256.html new file mode 100644 index 00000000..c0cfb7f9 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ps256 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::ps256 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::ps256:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     ps256 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::pss
     pss (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    PS256 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ ps256()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::ps256::ps256 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps256.js b/structjwt_1_1algorithm_1_1ps256.js new file mode 100644 index 00000000..a38e1358 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1ps256 = +[ + [ "ps256", "structjwt_1_1algorithm_1_1ps256.html#a58a149697a0a03d79f955c2698233637", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ps256__inherit__graph.map b/structjwt_1_1algorithm_1_1ps256__inherit__graph.map new file mode 100644 index 00000000..8a4e9009 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1ps256__inherit__graph.md5 b/structjwt_1_1algorithm_1_1ps256__inherit__graph.md5 new file mode 100644 index 00000000..76e40132 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256__inherit__graph.md5 @@ -0,0 +1 @@ +ee28dbd8b551992105e54ebc5e34814f \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ps256__inherit__graph.svg b/structjwt_1_1algorithm_1_1ps256__inherit__graph.svg new file mode 100644 index 00000000..11df54ae --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::ps256 + + +Node1 + + +jwt::algorithm::ps256 + + + + + +Node2 + + +jwt::algorithm::pss + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1ps384-members.html b/structjwt_1_1algorithm_1_1ps384-members.html new file mode 100644 index 00000000..465703da --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ps384 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::ps384, including all inherited members.

    + + + + + + +
    name() constjwt::algorithm::pssinline
    ps384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::ps384inlineexplicit
    pss(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::pssinline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::pssinline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::pssinline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps384.html b/structjwt_1_1algorithm_1_1ps384.html new file mode 100644 index 00000000..8dca5f8b --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ps384 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::ps384 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::ps384:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     ps384 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::pss
     pss (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    PS384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ ps384()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::ps384::ps384 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps384.js b/structjwt_1_1algorithm_1_1ps384.js new file mode 100644 index 00000000..158ae0c8 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1ps384 = +[ + [ "ps384", "structjwt_1_1algorithm_1_1ps384.html#a5a9548f6f07d1dbcea66a17c32cdcb71", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ps384__inherit__graph.map b/structjwt_1_1algorithm_1_1ps384__inherit__graph.map new file mode 100644 index 00000000..03a9b985 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1ps384__inherit__graph.md5 b/structjwt_1_1algorithm_1_1ps384__inherit__graph.md5 new file mode 100644 index 00000000..a65811f2 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384__inherit__graph.md5 @@ -0,0 +1 @@ +d20163b056c7eac89385225a6a698f8d \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ps384__inherit__graph.svg b/structjwt_1_1algorithm_1_1ps384__inherit__graph.svg new file mode 100644 index 00000000..dbd7c737 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::ps384 + + +Node1 + + +jwt::algorithm::ps384 + + + + + +Node2 + + +jwt::algorithm::pss + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1ps512-members.html b/structjwt_1_1algorithm_1_1ps512-members.html new file mode 100644 index 00000000..1c8784fe --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ps512 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::ps512, including all inherited members.

    + + + + + + +
    name() constjwt::algorithm::pssinline
    ps512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::ps512inlineexplicit
    pss(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::pssinline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::pssinline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::pssinline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps512.html b/structjwt_1_1algorithm_1_1ps512.html new file mode 100644 index 00000000..ee085bd1 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ps512 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::ps512 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::ps512:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     ps512 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::pss
     pss (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    PS512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ ps512()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::ps512::ps512 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps512.js b/structjwt_1_1algorithm_1_1ps512.js new file mode 100644 index 00000000..ccf3c89a --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1ps512 = +[ + [ "ps512", "structjwt_1_1algorithm_1_1ps512.html#aeffb86b581f7a6c82a485672527fccb4", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ps512__inherit__graph.map b/structjwt_1_1algorithm_1_1ps512__inherit__graph.map new file mode 100644 index 00000000..b0923f05 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1ps512__inherit__graph.md5 b/structjwt_1_1algorithm_1_1ps512__inherit__graph.md5 new file mode 100644 index 00000000..f71f7b3f --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512__inherit__graph.md5 @@ -0,0 +1 @@ +9f949169d4a942d504b237047846401f \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1ps512__inherit__graph.svg b/structjwt_1_1algorithm_1_1ps512__inherit__graph.svg new file mode 100644 index 00000000..5695c0db --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::ps512 + + +Node1 + + +jwt::algorithm::ps512 + + + + + +Node2 + + +jwt::algorithm::pss + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1pss-members.html b/structjwt_1_1algorithm_1_1pss-members.html new file mode 100644 index 00000000..d77db6db --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::pss Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::pss, including all inherited members.

    + + + + + +
    name() constjwt::algorithm::pssinline
    pss(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::pssinline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::pssinline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::pssinline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1pss.html b/structjwt_1_1algorithm_1_1pss.html new file mode 100644 index 00000000..89201d73 --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss.html @@ -0,0 +1,308 @@ + + + + + + + +JWT-CPP: jwt::algorithm::pss Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::pss Struct Reference
    +
    +
    + +

    Base class for PSS-RSA family of algorithms. + More...

    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::pss:
    +
    +
    +
    [legend]
    + + + + + + + + + + +

    +Public Member Functions

     pss (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    Base class for PSS-RSA family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ pss()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::pss::pss (const std::string & public_key,
    const std::string & private_key,
    const std::string & public_key_password,
    const std::string & private_key_password,
    const EVP_MD *(*)() md,
    std::string name )
    +
    +inline
    +
    +

    Construct new pss algorithm

    Parameters
    + + + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    mdPointer to hash function
    nameName of the algorithm
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ name()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::algorithm::pss::name () const
    +
    +inline
    +
    +

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::algorithm::pss::sign (const std::string & data,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Sign jwt data

    Parameters
    + + + +
    dataThe data to sign
    ecerror_code filled with details on error
    +
    +
    +
    Returns
    ECDSA signature for the given data
    + +
    +
    + +

    ◆ verify()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void jwt::algorithm::pss::verify (const std::string & data,
    const std::string & signature,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Check if signature is valid

    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with error details
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1pss.js b/structjwt_1_1algorithm_1_1pss.js new file mode 100644 index 00000000..dae32b0b --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss.js @@ -0,0 +1,7 @@ +var structjwt_1_1algorithm_1_1pss = +[ + [ "pss", "structjwt_1_1algorithm_1_1pss.html#ac42f049712066e8c8b41433185177b01", null ], + [ "name", "structjwt_1_1algorithm_1_1pss.html#a8dd860877102b864b8a11de2336d57eb", null ], + [ "sign", "structjwt_1_1algorithm_1_1pss.html#ad1a33f36e7f0e3cd73024920504ed596", null ], + [ "verify", "structjwt_1_1algorithm_1_1pss.html#ad01544d3a3448a2ea611493f68807ea9", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1pss__inherit__graph.map b/structjwt_1_1algorithm_1_1pss__inherit__graph.map new file mode 100644 index 00000000..6d35c833 --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1pss__inherit__graph.md5 b/structjwt_1_1algorithm_1_1pss__inherit__graph.md5 new file mode 100644 index 00000000..b40400a3 --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss__inherit__graph.md5 @@ -0,0 +1 @@ +0856a4d6476c5fc02a7b066528198fc8 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1pss__inherit__graph.svg b/structjwt_1_1algorithm_1_1pss__inherit__graph.svg new file mode 100644 index 00000000..572b5023 --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss__inherit__graph.svg @@ -0,0 +1,75 @@ + + + + + + +jwt::algorithm::pss + + +Node1 + + +jwt::algorithm::pss + + + + + +Node2 + + +jwt::algorithm::ps256 + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt::algorithm::ps384 + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +jwt::algorithm::ps512 + + + + + +Node1->Node4 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1rs256-members.html b/structjwt_1_1algorithm_1_1rs256-members.html new file mode 100644 index 00000000..a6a2ed87 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rs256 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::rs256, including all inherited members.

    + + + + + + +
    name() constjwt::algorithm::rsainline
    rs256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::rs256inlineexplicit
    rsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::rsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::rsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::rsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs256.html b/structjwt_1_1algorithm_1_1rs256.html new file mode 100644 index 00000000..a03fd14e --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256.html @@ -0,0 +1,194 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rs256 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::rs256 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::rs256:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + + +

    +Public Member Functions

     rs256 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     Construct new instance of algorithm.
     
    - Public Member Functions inherited from jwt::algorithm::rsa
     rsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    RS256 algorithm.

    +

    This data structure is used to describe the RSA256 and can be used to verify JWTs

    +

    Constructor & Destructor Documentation

    + +

    ◆ rs256()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::rs256::rs256 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    + +

    Construct new instance of algorithm.

    +
    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs256.js b/structjwt_1_1algorithm_1_1rs256.js new file mode 100644 index 00000000..2fdca23e --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1rs256 = +[ + [ "rs256", "structjwt_1_1algorithm_1_1rs256.html#aa87ccde15aad4ad592fa4ac0a2a5f748", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rs256__inherit__graph.map b/structjwt_1_1algorithm_1_1rs256__inherit__graph.map new file mode 100644 index 00000000..dcad1931 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1rs256__inherit__graph.md5 b/structjwt_1_1algorithm_1_1rs256__inherit__graph.md5 new file mode 100644 index 00000000..7ec792a6 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256__inherit__graph.md5 @@ -0,0 +1 @@ +62a9305ab6749778bec5b4fcd827eca2 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rs256__inherit__graph.svg b/structjwt_1_1algorithm_1_1rs256__inherit__graph.svg new file mode 100644 index 00000000..0f9ebb7c --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::rs256 + + +Node1 + + +jwt::algorithm::rs256 + + + + + +Node2 + + +jwt::algorithm::rsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1rs384-members.html b/structjwt_1_1algorithm_1_1rs384-members.html new file mode 100644 index 00000000..59e755dc --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rs384 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::rs384, including all inherited members.

    + + + + + + +
    name() constjwt::algorithm::rsainline
    rs384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::rs384inlineexplicit
    rsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::rsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::rsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::rsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs384.html b/structjwt_1_1algorithm_1_1rs384.html new file mode 100644 index 00000000..5180012a --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rs384 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::rs384 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::rs384:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     rs384 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::rsa
     rsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    RS384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ rs384()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::rs384::rs384 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs384.js b/structjwt_1_1algorithm_1_1rs384.js new file mode 100644 index 00000000..3af7d03e --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1rs384 = +[ + [ "rs384", "structjwt_1_1algorithm_1_1rs384.html#a3f5bada82c323b97a6b1c5777bc512ef", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rs384__inherit__graph.map b/structjwt_1_1algorithm_1_1rs384__inherit__graph.map new file mode 100644 index 00000000..dd01df38 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1rs384__inherit__graph.md5 b/structjwt_1_1algorithm_1_1rs384__inherit__graph.md5 new file mode 100644 index 00000000..4a3e39d0 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384__inherit__graph.md5 @@ -0,0 +1 @@ +4b655cdea821901db5c5ef75cc92ec16 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rs384__inherit__graph.svg b/structjwt_1_1algorithm_1_1rs384__inherit__graph.svg new file mode 100644 index 00000000..4638ec5d --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::rs384 + + +Node1 + + +jwt::algorithm::rs384 + + + + + +Node2 + + +jwt::algorithm::rsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1rs512-members.html b/structjwt_1_1algorithm_1_1rs512-members.html new file mode 100644 index 00000000..950a54c1 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rs512 Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::rs512, including all inherited members.

    + + + + + + +
    name() constjwt::algorithm::rsainline
    rs512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")jwt::algorithm::rs512inlineexplicit
    rsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::rsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::rsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::rsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs512.html b/structjwt_1_1algorithm_1_1rs512.html new file mode 100644 index 00000000..1ace229f --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rs512 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::rs512 Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::rs512:
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + +

    +Public Member Functions

     rs512 (const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
     
    - Public Member Functions inherited from jwt::algorithm::rsa
     rsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    RS512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ rs512()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::rs512::rs512 (const std::string & public_key,
    const std::string & private_key = "",
    const std::string & public_key_password = "",
    const std::string & private_key_password = "" )
    +
    +inlineexplicit
    +
    +

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs512.js b/structjwt_1_1algorithm_1_1rs512.js new file mode 100644 index 00000000..7069663b --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512.js @@ -0,0 +1,4 @@ +var structjwt_1_1algorithm_1_1rs512 = +[ + [ "rs512", "structjwt_1_1algorithm_1_1rs512.html#aa3331d1fbe994d97ee57ffdabd05eb1b", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rs512__inherit__graph.map b/structjwt_1_1algorithm_1_1rs512__inherit__graph.map new file mode 100644 index 00000000..83709818 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1algorithm_1_1rs512__inherit__graph.md5 b/structjwt_1_1algorithm_1_1rs512__inherit__graph.md5 new file mode 100644 index 00000000..93745d16 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512__inherit__graph.md5 @@ -0,0 +1 @@ +065cdc8f3257881ca1361bccce9085a8 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rs512__inherit__graph.svg b/structjwt_1_1algorithm_1_1rs512__inherit__graph.svg new file mode 100644 index 00000000..4e863212 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::algorithm::rs512 + + +Node1 + + +jwt::algorithm::rs512 + + + + + +Node2 + + +jwt::algorithm::rsa + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1rsa-members.html b/structjwt_1_1algorithm_1_1rsa-members.html new file mode 100644 index 00000000..e1af504d --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rsa Member List
    +
    +
    + +

    This is the complete list of members for jwt::algorithm::rsa, including all inherited members.

    + + + + + +
    name() constjwt::algorithm::rsainline
    rsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)jwt::algorithm::rsainline
    sign(const std::string &data, std::error_code &ec) constjwt::algorithm::rsainline
    verify(const std::string &data, const std::string &signature, std::error_code &ec) constjwt::algorithm::rsainline
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rsa.html b/structjwt_1_1algorithm_1_1rsa.html new file mode 100644 index 00000000..6988a51c --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa.html @@ -0,0 +1,310 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rsa Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::algorithm::rsa Struct Reference
    +
    +
    + +

    Base class for RSA family of algorithms. + More...

    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::algorithm::rsa:
    +
    +
    +
    [legend]
    + + + + + + + + + + +

    +Public Member Functions

     rsa (const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
     
    std::string sign (const std::string &data, std::error_code &ec) const
     
    void verify (const std::string &data, const std::string &signature, std::error_code &ec) const
     
    std::string name () const
     
    +

    Detailed Description

    +

    Base class for RSA family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ rsa()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    jwt::algorithm::rsa::rsa (const std::string & public_key,
    const std::string & private_key,
    const std::string & public_key_password,
    const std::string & private_key_password,
    const EVP_MD *(*)() md,
    std::string name )
    +
    +inline
    +
    +

    Construct new rsa algorithm

    +
    Parameters
    + + + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    mdPointer to hash function
    nameName of the algorithm
    +
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ name()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string jwt::algorithm::rsa::name () const
    +
    +inline
    +
    +

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::string jwt::algorithm::rsa::sign (const std::string & data,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Sign jwt data

    Parameters
    + + + +
    dataThe data to sign
    ecerror_code filled with details on error
    +
    +
    +
    Returns
    RSA signature for the given data
    + +
    +
    + +

    ◆ verify()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void jwt::algorithm::rsa::verify (const std::string & data,
    const std::string & signature,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Check if signature is valid

    +
    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details on failure
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rsa.js b/structjwt_1_1algorithm_1_1rsa.js new file mode 100644 index 00000000..1eaee175 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa.js @@ -0,0 +1,7 @@ +var structjwt_1_1algorithm_1_1rsa = +[ + [ "rsa", "structjwt_1_1algorithm_1_1rsa.html#a505ccbff5695e94370cc4549c2426bc7", null ], + [ "name", "structjwt_1_1algorithm_1_1rsa.html#a533b279b12503e84d5a450acfe386ee2", null ], + [ "sign", "structjwt_1_1algorithm_1_1rsa.html#a35ceb620da332ce4b487866a4bb16eb4", null ], + [ "verify", "structjwt_1_1algorithm_1_1rsa.html#a0494f35ced969aaa279b431e225ea077", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rsa__inherit__graph.map b/structjwt_1_1algorithm_1_1rsa__inherit__graph.map new file mode 100644 index 00000000..ea6a8123 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/structjwt_1_1algorithm_1_1rsa__inherit__graph.md5 b/structjwt_1_1algorithm_1_1rsa__inherit__graph.md5 new file mode 100644 index 00000000..2b26a0d4 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa__inherit__graph.md5 @@ -0,0 +1 @@ +643b1c27b8b8578da00de9b1b3b3ace8 \ No newline at end of file diff --git a/structjwt_1_1algorithm_1_1rsa__inherit__graph.svg b/structjwt_1_1algorithm_1_1rsa__inherit__graph.svg new file mode 100644 index 00000000..0e4b747c --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa__inherit__graph.svg @@ -0,0 +1,75 @@ + + + + + + +jwt::algorithm::rsa + + +Node1 + + +jwt::algorithm::rsa + + + + + +Node2 + + +jwt::algorithm::rs256 + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt::algorithm::rs384 + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +jwt::algorithm::rs512 + + + + + +Node1->Node4 + + + + + + + + diff --git a/structjwt_1_1alphabet_1_1base64-members.html b/structjwt_1_1alphabet_1_1base64-members.html new file mode 100644 index 00000000..eb8f8812 --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::alphabet::base64 Member List
    +
    +
    + +

    This is the complete list of members for jwt::alphabet::base64, including all inherited members.

    + + + + +
    data() (defined in jwt::alphabet::base64)jwt::alphabet::base64inlinestatic
    fill() (defined in jwt::alphabet::base64)jwt::alphabet::base64inlinestatic
    rdata() (defined in jwt::alphabet::base64)jwt::alphabet::base64inlinestatic
    +
    + + + + diff --git a/structjwt_1_1alphabet_1_1base64.html b/structjwt_1_1alphabet_1_1base64.html new file mode 100644 index 00000000..4ec148d5 --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64.html @@ -0,0 +1,138 @@ + + + + + + + +JWT-CPP: jwt::alphabet::base64 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet::base64 Struct Reference
    +
    +
    + +

    valid list of character when working with Base64 + More...

    + +

    #include <base.h>

    + + + + + + + + +

    +Static Public Member Functions

    +static const std::array< char, 64 > & data ()
     
    +static const std::array< int8_t, 256 > & rdata ()
     
    +static const std::string & fill ()
     
    +

    Detailed Description

    +

    valid list of character when working with Base64

    +

    As directed in X.509 Parameter certificate chains are base64-encoded as per Section 4 of RFC4648

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structjwt_1_1alphabet_1_1base64url-members.html b/structjwt_1_1alphabet_1_1base64url-members.html new file mode 100644 index 00000000..9528a0ce --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64url-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::alphabet::base64url Member List
    +
    +
    + +

    This is the complete list of members for jwt::alphabet::base64url, including all inherited members.

    + + + + +
    data() (defined in jwt::alphabet::base64url)jwt::alphabet::base64urlinlinestatic
    fill() (defined in jwt::alphabet::base64url)jwt::alphabet::base64urlinlinestatic
    rdata() (defined in jwt::alphabet::base64url)jwt::alphabet::base64urlinlinestatic
    +
    + + + + diff --git a/structjwt_1_1alphabet_1_1base64url.html b/structjwt_1_1alphabet_1_1base64url.html new file mode 100644 index 00000000..377ef728 --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64url.html @@ -0,0 +1,141 @@ + + + + + + + +JWT-CPP: jwt::alphabet::base64url Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet::base64url Struct Reference
    +
    +
    + +

    valid list of character when working with Base64URL + More...

    + +

    #include <base.h>

    + + + + + + + + +

    +Static Public Member Functions

    +static const std::array< char, 64 > & data ()
     
    +static const std::array< int8_t, 256 > & rdata ()
     
    +static const std::string & fill ()
     
    +

    Detailed Description

    +

    valid list of character when working with Base64URL

    +

    As directed by RFC 7519 Terminology set the definition of Base64URL encoding as that in RFC 7515 that states:

    +
    +

    ‍Base64 encoding using the URL- and filename-safe character set defined in Section 5 of RFC 4648 RFC4648, with all trailing '=' characters omitted

    +
    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding-members.html b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding-members.html new file mode 100644 index 00000000..df18bfd0 --- /dev/null +++ b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::alphabet::helper::base64url_percent_encoding Member List
    +
    + +
    + + + + diff --git a/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html new file mode 100644 index 00000000..d69069ca --- /dev/null +++ b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html @@ -0,0 +1,138 @@ + + + + + + + +JWT-CPP: jwt::alphabet::helper::base64url_percent_encoding Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet::helper::base64url_percent_encoding Struct Reference
    +
    +
    + +

    A General purpose base64url alphabet respecting the URI Case Normalization + More...

    + +

    #include <base.h>

    + + + + + + + + +

    +Static Public Member Functions

    +static const std::array< char, 64 > & data ()
     
    +static const std::array< int8_t, 256 > & rdata ()
     
    +static const std::vector< std::string > & fill ()
     
    +

    Detailed Description

    +

    A General purpose base64url alphabet respecting the URI Case Normalization

    +

    This is useful in situations outside of JWT encoding/decoding and is provided as a helper

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structjwt_1_1default__clock-members.html b/structjwt_1_1default__clock-members.html new file mode 100644 index 00000000..522c1a1a --- /dev/null +++ b/structjwt_1_1default__clock-members.html @@ -0,0 +1,114 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::default_clock Member List
    +
    +
    + +

    This is the complete list of members for jwt::default_clock, including all inherited members.

    + + +
    now() constjwt::default_clockinline
    +
    + + + + diff --git a/structjwt_1_1default__clock.html b/structjwt_1_1default__clock.html new file mode 100644 index 00000000..03cbe139 --- /dev/null +++ b/structjwt_1_1default__clock.html @@ -0,0 +1,154 @@ + + + + + + + +JWT-CPP: jwt::default_clock Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::default_clock Struct Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    date now () const
     
    +

    Detailed Description

    +

    Default clock class using std::chrono::system_clock as a backend.

    +

    Member Function Documentation

    + +

    ◆ now()

    + +
    +
    + + + + + +
    + + + + + + + +
    date jwt::default_clock::now () const
    +
    +inline
    +
    +

    Gets the current system time

    Returns
    time_point of the host system
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1default__clock.js b/structjwt_1_1default__clock.js new file mode 100644 index 00000000..cb10bf6b --- /dev/null +++ b/structjwt_1_1default__clock.js @@ -0,0 +1,4 @@ +var structjwt_1_1default__clock = +[ + [ "now", "structjwt_1_1default__clock.html#a4b274e5dbec28ac3531313b8aefdf691", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1error_1_1claim__not__present__exception-members.html b/structjwt_1_1error_1_1claim__not__present__exception-members.html new file mode 100644 index 00000000..1facb127 --- /dev/null +++ b/structjwt_1_1error_1_1claim__not__present__exception-members.html @@ -0,0 +1,114 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::claim_not_present_exception Member List
    +
    +
    + +

    This is the complete list of members for jwt::error::claim_not_present_exception, including all inherited members.

    + + +
    claim_not_present_exception() (defined in jwt::error::claim_not_present_exception)jwt::error::claim_not_present_exceptioninline
    +
    + + + + diff --git a/structjwt_1_1error_1_1claim__not__present__exception.html b/structjwt_1_1error_1_1claim__not__present__exception.html new file mode 100644 index 00000000..be880a51 --- /dev/null +++ b/structjwt_1_1error_1_1claim__not__present__exception.html @@ -0,0 +1,125 @@ + + + + + + + +JWT-CPP: jwt::error::claim_not_present_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::error::claim_not_present_exception Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::error::claim_not_present_exception:
    +
    +
    +
    [legend]
    +

    Detailed Description

    +

    Attempt to access claim was unsuccessful

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.map b/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.map new file mode 100644 index 00000000..e93efbab --- /dev/null +++ b/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.md5 b/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.md5 new file mode 100644 index 00000000..05340f28 --- /dev/null +++ b/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.md5 @@ -0,0 +1 @@ +7c3753f977e4edf2b2941a19582e57b1 \ No newline at end of file diff --git a/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.svg b/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.svg new file mode 100644 index 00000000..7cbe5cb1 --- /dev/null +++ b/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.svg @@ -0,0 +1,76 @@ + + + + + + +jwt::error::claim_not_present_exception + + +Node1 + + +jwt::error::claim_not +_present_exception + + + + + +Node2 + + +std::out_of_range + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +std::logic_error + + + + + +Node3->Node2 + + + + + + + + +Node4 + + +std::exception + + + + + +Node4->Node3 + + + + + + + + diff --git a/structjwt_1_1error_1_1ecdsa__exception.html b/structjwt_1_1error_1_1ecdsa__exception.html new file mode 100644 index 00000000..eef242c1 --- /dev/null +++ b/structjwt_1_1error_1_1ecdsa__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::ecdsa_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::ecdsa_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::ecdsa_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.map b/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.map new file mode 100644 index 00000000..e2843bc3 --- /dev/null +++ b/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.md5 b/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.md5 new file mode 100644 index 00000000..5d827f34 --- /dev/null +++ b/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.md5 @@ -0,0 +1 @@ +dee3d841b698f216b178da61597b0d78 \ No newline at end of file diff --git a/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.svg b/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.svg new file mode 100644 index 00000000..923e4b77 --- /dev/null +++ b/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::error::ecdsa_exception + + +Node1 + + +jwt::error::ecdsa_exception + + + + + +Node2 + + +std::system_error + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1error_1_1invalid__json__exception-members.html b/structjwt_1_1error_1_1invalid__json__exception-members.html new file mode 100644 index 00000000..0a3239ef --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception-members.html @@ -0,0 +1,114 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::invalid_json_exception Member List
    +
    +
    + +

    This is the complete list of members for jwt::error::invalid_json_exception, including all inherited members.

    + + +
    invalid_json_exception() (defined in jwt::error::invalid_json_exception)jwt::error::invalid_json_exceptioninline
    +
    + + + + diff --git a/structjwt_1_1error_1_1invalid__json__exception.html b/structjwt_1_1error_1_1invalid__json__exception.html new file mode 100644 index 00000000..9642fb21 --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception.html @@ -0,0 +1,125 @@ + + + + + + + +JWT-CPP: jwt::error::invalid_json_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::error::invalid_json_exception Struct Reference
    +
    +
    + +

    #include <jwt.h>

    +
    +Inheritance diagram for jwt::error::invalid_json_exception:
    +
    +
    +
    [legend]
    +

    Detailed Description

    +

    Attempt to parse JSON was unsuccessful

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.map b/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.map new file mode 100644 index 00000000..5769fe43 --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.md5 b/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.md5 new file mode 100644 index 00000000..fa5a6edb --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.md5 @@ -0,0 +1 @@ +e4b7a445f0833e263ffff82dfd0deb38 \ No newline at end of file diff --git a/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.svg b/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.svg new file mode 100644 index 00000000..f68cb808 --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.svg @@ -0,0 +1,58 @@ + + + + + + +jwt::error::invalid_json_exception + + +Node1 + + +jwt::error::invalid +_json_exception + + + + + +Node2 + + +std::runtime_error + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +std::exception + + + + + +Node3->Node2 + + + + + + + + diff --git a/structjwt_1_1error_1_1rsa__exception.html b/structjwt_1_1error_1_1rsa__exception.html new file mode 100644 index 00000000..155e6666 --- /dev/null +++ b/structjwt_1_1error_1_1rsa__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::rsa_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::rsa_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::rsa_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1rsa__exception__inherit__graph.map b/structjwt_1_1error_1_1rsa__exception__inherit__graph.map new file mode 100644 index 00000000..d67a95b5 --- /dev/null +++ b/structjwt_1_1error_1_1rsa__exception__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1error_1_1rsa__exception__inherit__graph.md5 b/structjwt_1_1error_1_1rsa__exception__inherit__graph.md5 new file mode 100644 index 00000000..cb1aa205 --- /dev/null +++ b/structjwt_1_1error_1_1rsa__exception__inherit__graph.md5 @@ -0,0 +1 @@ +4eeb7bc7c0621bb1a607010d5b86200b \ No newline at end of file diff --git a/structjwt_1_1error_1_1rsa__exception__inherit__graph.svg b/structjwt_1_1error_1_1rsa__exception__inherit__graph.svg new file mode 100644 index 00000000..3109c00d --- /dev/null +++ b/structjwt_1_1error_1_1rsa__exception__inherit__graph.svg @@ -0,0 +1,39 @@ + + + + + + +jwt::error::rsa_exception + + +Node1 + + +jwt::error::rsa_exception + + + + + +Node2 + + +std::system_error + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1error_1_1signature__generation__exception.html b/structjwt_1_1error_1_1signature__generation__exception.html new file mode 100644 index 00000000..fbeb7f46 --- /dev/null +++ b/structjwt_1_1error_1_1signature__generation__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::signature_generation_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::signature_generation_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::signature_generation_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.map b/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.map new file mode 100644 index 00000000..fffb2d1b --- /dev/null +++ b/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.md5 b/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.md5 new file mode 100644 index 00000000..31312e16 --- /dev/null +++ b/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.md5 @@ -0,0 +1 @@ +62698366a2f643dff378a67f8cf6ddec \ No newline at end of file diff --git a/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.svg b/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.svg new file mode 100644 index 00000000..bd7b440f --- /dev/null +++ b/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::error::signature_generation_exception + + +Node1 + + +jwt::error::signature +_generation_exception + + + + + +Node2 + + +std::system_error + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1error_1_1signature__verification__exception.html b/structjwt_1_1error_1_1signature__verification__exception.html new file mode 100644 index 00000000..04c4fb9c --- /dev/null +++ b/structjwt_1_1error_1_1signature__verification__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::signature_verification_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::signature_verification_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::signature_verification_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.map b/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.map new file mode 100644 index 00000000..30d7c660 --- /dev/null +++ b/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.md5 b/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.md5 new file mode 100644 index 00000000..be14f677 --- /dev/null +++ b/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.md5 @@ -0,0 +1 @@ +365da1610143c763e82005ebeddebe04 \ No newline at end of file diff --git a/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.svg b/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.svg new file mode 100644 index 00000000..896841c2 --- /dev/null +++ b/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::error::signature_verification_exception + + +Node1 + + +jwt::error::signature +_verification_exception + + + + + +Node2 + + +std::system_error + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1error_1_1token__verification__exception.html b/structjwt_1_1error_1_1token__verification__exception.html new file mode 100644 index 00000000..7e112593 --- /dev/null +++ b/structjwt_1_1error_1_1token__verification__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::token_verification_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::token_verification_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::token_verification_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1token__verification__exception__inherit__graph.map b/structjwt_1_1error_1_1token__verification__exception__inherit__graph.map new file mode 100644 index 00000000..c484ec40 --- /dev/null +++ b/structjwt_1_1error_1_1token__verification__exception__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1error_1_1token__verification__exception__inherit__graph.md5 b/structjwt_1_1error_1_1token__verification__exception__inherit__graph.md5 new file mode 100644 index 00000000..aa0d90ce --- /dev/null +++ b/structjwt_1_1error_1_1token__verification__exception__inherit__graph.md5 @@ -0,0 +1 @@ +3c9b06cfd36e6e25beec55f10d9f0d96 \ No newline at end of file diff --git a/structjwt_1_1error_1_1token__verification__exception__inherit__graph.svg b/structjwt_1_1error_1_1token__verification__exception__inherit__graph.svg new file mode 100644 index 00000000..8ce255c8 --- /dev/null +++ b/structjwt_1_1error_1_1token__verification__exception__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::error::token_verification_exception + + +Node1 + + +jwt::error::token_verification +_exception + + + + + +Node2 + + +std::system_error + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1traits_1_1boost__json-members.html b/structjwt_1_1traits_1_1boost__json-members.html new file mode 100644 index 00000000..f844353c --- /dev/null +++ b/structjwt_1_1traits_1_1boost__json-members.html @@ -0,0 +1,129 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::boost_json Member List
    +
    +
    + +

    This is the complete list of members for jwt::traits::boost_json, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    array_type typedef (defined in jwt::traits::boost_json)jwt::traits::boost_json
    as_array(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    as_boolean(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    as_integer(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    as_number(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    as_object(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    as_string(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    boolean_type typedef (defined in jwt::traits::boost_json)jwt::traits::boost_json
    get_type(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    integer_type typedef (defined in jwt::traits::boost_json)jwt::traits::boost_json
    number_type typedef (defined in jwt::traits::boost_json)jwt::traits::boost_json
    object_type typedef (defined in jwt::traits::boost_json)jwt::traits::boost_json
    parse(value_type &val, string_type str) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    serialize(const value_type &val) (defined in jwt::traits::boost_json)jwt::traits::boost_jsoninlinestatic
    string_type typedef (defined in jwt::traits::boost_json)jwt::traits::boost_json
    value_type typedef (defined in jwt::traits::boost_json)jwt::traits::boost_json
    +
    + + + + diff --git a/structjwt_1_1traits_1_1boost__json.html b/structjwt_1_1traits_1_1boost__json.html new file mode 100644 index 00000000..aa76876c --- /dev/null +++ b/structjwt_1_1traits_1_1boost__json.html @@ -0,0 +1,180 @@ + + + + + + + +JWT-CPP: jwt::traits::boost_json Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits::boost_json Struct Reference
    +
    +
    + +

    basic_claim's JSON trait implementation for Boost.JSON + More...

    + +

    #include <traits.h>

    + + + + + + + + + + + + + + + + +

    +Public Types

    +using value_type = json::value
     
    +using object_type = json::object
     
    +using array_type = json::array
     
    +using string_type = std::string
     
    +using number_type = double
     
    +using integer_type = std::int64_t
     
    +using boolean_type = bool
     
    + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static jwt::json::type get_type (const value_type &val)
     
    +static object_type as_object (const value_type &val)
     
    +static array_type as_array (const value_type &val)
     
    +static string_type as_string (const value_type &val)
     
    +static integer_type as_integer (const value_type &val)
     
    +static boolean_type as_boolean (const value_type &val)
     
    +static number_type as_number (const value_type &val)
     
    +static bool parse (value_type &val, string_type str)
     
    +static std::string serialize (const value_type &val)
     
    +

    Detailed Description

    +

    basic_claim's JSON trait implementation for Boost.JSON

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/boost-json/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons-members.html b/structjwt_1_1traits_1_1danielaparker__jsoncons-members.html new file mode 100644 index 00000000..1fa7c988 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons-members.html @@ -0,0 +1,128 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::danielaparker_jsoncons Member List
    +
    +
    + +

    This is the complete list of members for jwt::traits::danielaparker_jsoncons, including all inherited members.

    + + + + + + + + + + + + + + + + +
    as_array(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    as_boolean(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    as_integer(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    as_number(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    as_object(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    as_string(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    boolean_type typedef (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsoncons
    get_type(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    integer_type typedef (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsoncons
    json typedef (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsoncons
    number_type typedef (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsoncons
    parse(json &val, const std::string &str) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    serialize(const json &val) (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsonconsinlinestatic
    string_type typedef (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsoncons
    value_type typedef (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsoncons
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons.html b/structjwt_1_1traits_1_1danielaparker__jsoncons.html new file mode 100644 index 00000000..691c14d1 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons.html @@ -0,0 +1,185 @@ + + + + + + + +JWT-CPP: jwt::traits::danielaparker_jsoncons Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits::danielaparker_jsoncons Struct Reference
    +
    +
    + +

    basic_claim's JSON trait implementation for jsoncons. + More...

    + +

    #include <traits.h>

    + + + + + + +

    +Classes

    class  array_type
     
    struct  object_type
     
    + + + + + + + + + + + + + +

    +Public Types

    +using json = jsoncons::json
     
    +using value_type = json
     
    +using string_type = std::string
     
    +using number_type = double
     
    +using integer_type = int64_t
     
    +using boolean_type = bool
     
    + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static jwt::json::type get_type (const json &val)
     
    +static object_type as_object (const json &val)
     
    +static array_type as_array (const json &val)
     
    +static string_type as_string (const json &val)
     
    +static number_type as_number (const json &val)
     
    +static integer_type as_integer (const json &val)
     
    +static boolean_type as_boolean (const json &val)
     
    +static bool parse (json &val, const std::string &str)
     
    +static std::string serialize (const json &val)
     
    +

    Detailed Description

    +

    basic_claim's JSON trait implementation for jsoncons.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/danielaparker-jsoncons/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons.js b/structjwt_1_1traits_1_1danielaparker__jsoncons.js new file mode 100644 index 00000000..bb8a5906 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons.js @@ -0,0 +1,5 @@ +var structjwt_1_1traits_1_1danielaparker__jsoncons = +[ + [ "array_type", "classjwt_1_1traits_1_1danielaparker__jsoncons_1_1array__type.html", null ], + [ "object_type", "structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type-members.html b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type-members.html new file mode 100644 index 00000000..023f9c79 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::danielaparker_jsoncons::object_type Member List
    +
    +
    + +

    This is the complete list of members for jwt::traits::danielaparker_jsoncons::object_type, including all inherited members.

    + + + + + + + + + + + + + + + +
    at(const key_type &key) const (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_typeinline
    count(const key_type &key) const (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_typeinline
    mapped_type typedef (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    object_type()=default (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    object_type(const object_type &)=default (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    object_type(const json::object &o) (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_typeinlineexplicit
    object_type(object_type &&)=default (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    object_type(json::object &&o) (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_typeinlineexplicit
    operator=(const object_type &o)=default (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    operator=(object_type &&o) noexcept=default (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    operator[](const key_type &key) (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_typeinline
    size_type typedef (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    value_type typedef (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    ~object_type()=default (defined in jwt::traits::danielaparker_jsoncons::object_type)jwt::traits::danielaparker_jsoncons::object_type
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html new file mode 100644 index 00000000..217b9d75 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html @@ -0,0 +1,166 @@ + + + + + + + +JWT-CPP: jwt::traits::danielaparker_jsoncons::object_type Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits::danielaparker_jsoncons::object_type Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::traits::danielaparker_jsoncons::object_type:
    +
    +
    +
    [legend]
    + + + + + + + + +

    +Public Types

    +using value_type = key_value_type
     
    +using mapped_type = key_value_type::value_type
     
    +using size_type = size_t
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    object_type (const object_type &)=default
     
    object_type (const json::object &o)
     
    object_type (object_type &&)=default
     
    object_type (json::object &&o)
     
    +object_typeoperator= (const object_type &o)=default
     
    +object_typeoperator= (object_type &&o) noexcept=default
     
    +mapped_type & operator[] (const key_type &key)
     
    +const mapped_type & at (const key_type &key) const
     
    +size_type count (const key_type &key) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/danielaparker-jsoncons/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.map b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.map new file mode 100644 index 00000000..c2c0fc21 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.md5 b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.md5 new file mode 100644 index 00000000..4db174cf --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.md5 @@ -0,0 +1 @@ +9521ea75ba125144a1a4bb166a967420 \ No newline at end of file diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.svg b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.svg new file mode 100644 index 00000000..fc8f8cec --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.svg @@ -0,0 +1,40 @@ + + + + + + +jwt::traits::danielaparker_jsoncons::object_type + + +Node1 + + +jwt::traits::danielaparker +_jsoncons::object_type + + + + + +Node2 + + +json::object + + + + + +Node2->Node1 + + + + + + + + diff --git a/structjwt_1_1traits_1_1kazuho__picojson-members.html b/structjwt_1_1traits_1_1kazuho__picojson-members.html new file mode 100644 index 00000000..af7c5908 --- /dev/null +++ b/structjwt_1_1traits_1_1kazuho__picojson-members.html @@ -0,0 +1,129 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::kazuho_picojson Member List
    +
    +
    + +

    This is the complete list of members for jwt::traits::kazuho_picojson, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    array_type typedef (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojson
    as_array(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    as_boolean(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    as_integer(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    as_number(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    as_object(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    as_string(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    boolean_type typedef (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojson
    get_type(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    integer_type typedef (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojson
    number_type typedef (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojson
    object_type typedef (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojson
    parse(picojson::value &val, const std::string &str) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    serialize(const picojson::value &val) (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojsoninlinestatic
    string_type typedef (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojson
    value_type typedef (defined in jwt::traits::kazuho_picojson)jwt::traits::kazuho_picojson
    +
    + + + + diff --git a/structjwt_1_1traits_1_1kazuho__picojson.html b/structjwt_1_1traits_1_1kazuho__picojson.html new file mode 100644 index 00000000..d1d51188 --- /dev/null +++ b/structjwt_1_1traits_1_1kazuho__picojson.html @@ -0,0 +1,180 @@ + + + + + + + +JWT-CPP: jwt::traits::kazuho_picojson Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits::kazuho_picojson Struct Reference
    +
    +
    + +

    basic_claim's JSON trait implementation for picojson + More...

    + +

    #include <traits.h>

    + + + + + + + + + + + + + + + + +

    +Public Types

    +using value_type = picojson::value
     
    +using object_type = picojson::object
     
    +using array_type = picojson::array
     
    +using string_type = std::string
     
    +using number_type = double
     
    +using integer_type = int64_t
     
    +using boolean_type = bool
     
    + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static json::type get_type (const picojson::value &val)
     
    +static picojson::object as_object (const picojson::value &val)
     
    +static std::string as_string (const picojson::value &val)
     
    +static picojson::array as_array (const picojson::value &val)
     
    +static int64_t as_integer (const picojson::value &val)
     
    +static bool as_boolean (const picojson::value &val)
     
    +static double as_number (const picojson::value &val)
     
    +static bool parse (picojson::value &val, const std::string &str)
     
    +static std::string serialize (const picojson::value &val)
     
    +

    Detailed Description

    +

    basic_claim's JSON trait implementation for picojson

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/kazuho-picojson/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1nlohmann__json-members.html b/structjwt_1_1traits_1_1nlohmann__json-members.html new file mode 100644 index 00000000..f8d13d80 --- /dev/null +++ b/structjwt_1_1traits_1_1nlohmann__json-members.html @@ -0,0 +1,130 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::nlohmann_json Member List
    +
    +
    + +

    This is the complete list of members for jwt::traits::nlohmann_json, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    array_type typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    as_array(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    as_boolean(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    as_integer(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    as_number(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    as_object(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    as_string(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    boolean_type typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    get_type(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    integer_type typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    json typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    number_type typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    object_type typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    parse(json &val, std::string str) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    serialize(const json &val) (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_jsoninlinestatic
    string_type typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    value_type typedef (defined in jwt::traits::nlohmann_json)jwt::traits::nlohmann_json
    +
    + + + + diff --git a/structjwt_1_1traits_1_1nlohmann__json.html b/structjwt_1_1traits_1_1nlohmann__json.html new file mode 100644 index 00000000..d23e28fd --- /dev/null +++ b/structjwt_1_1traits_1_1nlohmann__json.html @@ -0,0 +1,183 @@ + + + + + + + +JWT-CPP: jwt::traits::nlohmann_json Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits::nlohmann_json Struct Reference
    +
    +
    + +

    basic_claim's JSON trait implementation for Modern C++ JSON + More...

    + +

    #include <traits.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Types

    +using json = nlohmann::json
     
    +using value_type = json
     
    +using object_type = json::object_t
     
    +using array_type = json::array_t
     
    +using string_type = std::string
     
    +using number_type = json::number_float_t
     
    +using integer_type = json::number_integer_t
     
    +using boolean_type = json::boolean_t
     
    + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static jwt::json::type get_type (const json &val)
     
    +static json::object_t as_object (const json &val)
     
    +static std::string as_string (const json &val)
     
    +static json::array_t as_array (const json &val)
     
    +static int64_t as_integer (const json &val)
     
    +static bool as_boolean (const json &val)
     
    +static double as_number (const json &val)
     
    +static bool parse (json &val, std::string str)
     
    +static std::string serialize (const json &val)
     
    +

    Detailed Description

    +

    basic_claim's JSON trait implementation for Modern C++ JSON

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/nlohmann-json/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1open__source__parsers__jsoncpp-members.html b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp-members.html new file mode 100644 index 00000000..e806ab8f --- /dev/null +++ b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::open_source_parsers_jsoncpp Member List
    +
    +
    + +

    This is the complete list of members for jwt::traits::open_source_parsers_jsoncpp, including all inherited members.

    + + + + + + + + + + + + + + + +
    as_array(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    as_boolean(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    as_integer(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    as_number(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    as_object(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    as_string(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    boolean_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncpp
    get_type(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    integer_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncpp
    number_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncpp
    parse(value_type &val, string_type str) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    serialize(const value_type &val) (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncppinlinestatic
    string_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncpp
    value_type typedef (defined in jwt::traits::open_source_parsers_jsoncpp)jwt::traits::open_source_parsers_jsoncpp
    +
    + + + + diff --git a/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html new file mode 100644 index 00000000..96691620 --- /dev/null +++ b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html @@ -0,0 +1,182 @@ + + + + + + + +JWT-CPP: jwt::traits::open_source_parsers_jsoncpp Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits::open_source_parsers_jsoncpp Struct Reference
    +
    +
    + +

    basic_claim's JSON trait implementation for jsoncpp + More...

    + +

    #include <traits.h>

    + + + + + + +

    +Classes

    class  array_type
     
    class  object_type
     
    + + + + + + + + + + + +

    +Public Types

    +using value_type = Json::Value
     
    +using string_type = std::string
     
    +using number_type = double
     
    +using integer_type = Json::Value::Int
     
    +using boolean_type = bool
     
    + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static jwt::json::type get_type (const value_type &val)
     
    +static integer_type as_integer (const value_type &val)
     
    +static boolean_type as_boolean (const value_type &val)
     
    +static number_type as_number (const value_type &val)
     
    +static string_type as_string (const value_type &val)
     
    +static object_type as_object (const value_type &val)
     
    +static array_type as_array (const value_type &val)
     
    +static bool parse (value_type &val, string_type str)
     
    +static string_type serialize (const value_type &val)
     
    +

    Detailed Description

    +

    basic_claim's JSON trait implementation for jsoncpp

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/open-source-parsers-jsoncpp/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.js b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.js new file mode 100644 index 00000000..32291ecd --- /dev/null +++ b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.js @@ -0,0 +1,5 @@ +var structjwt_1_1traits_1_1open__source__parsers__jsoncpp = +[ + [ "array_type", "classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html", null ], + [ "object_type", "classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1verify__ops_1_1date__after__claim-members.html b/structjwt_1_1verify__ops_1_1date__after__claim-members.html new file mode 100644 index 00000000..13be1138 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__after__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::date_after_claim< json_traits, in_header > Member List
    +
    +
    + +

    This is the complete list of members for jwt::verify_ops::date_after_claim< json_traits, in_header >, including all inherited members.

    + + + +
    leeway (defined in jwt::verify_ops::date_after_claim< json_traits, in_header >)jwt::verify_ops::date_after_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::date_after_claim< json_traits, in_header >)jwt::verify_ops::date_after_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1date__after__claim.html b/structjwt_1_1verify__ops_1_1date__after__claim.html new file mode 100644 index 00000000..93124665 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__after__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::date_after_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::date_after_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const size_t leeway
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::date_after_claim< json_traits, in_header >

    Checks that the current time is after the time specified in the given claim. This is identical to how the "nbf" and "iat" check works.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1date__before__claim-members.html b/structjwt_1_1verify__ops_1_1date__before__claim-members.html new file mode 100644 index 00000000..801de42a --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__before__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::date_before_claim< json_traits, in_header > Member List
    +
    +
    + +

    This is the complete list of members for jwt::verify_ops::date_before_claim< json_traits, in_header >, including all inherited members.

    + + + +
    leeway (defined in jwt::verify_ops::date_before_claim< json_traits, in_header >)jwt::verify_ops::date_before_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::date_before_claim< json_traits, in_header >)jwt::verify_ops::date_before_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1date__before__claim.html b/structjwt_1_1verify__ops_1_1date__before__claim.html new file mode 100644 index 00000000..a54cce72 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__before__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::date_before_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::date_before_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const size_t leeway
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::date_before_claim< json_traits, in_header >

    Checks that the current time is before the time specified in the given claim. This is identical to how the "exp" check works.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1equals__claim-members.html b/structjwt_1_1verify__ops_1_1equals__claim-members.html new file mode 100644 index 00000000..96659cd1 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1equals__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::equals_claim< json_traits, in_header > Member List
    +
    +
    + +

    This is the complete list of members for jwt::verify_ops::equals_claim< json_traits, in_header >, including all inherited members.

    + + + +
    expected (defined in jwt::verify_ops::equals_claim< json_traits, in_header >)jwt::verify_ops::equals_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::equals_claim< json_traits, in_header >)jwt::verify_ops::equals_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1equals__claim.html b/structjwt_1_1verify__ops_1_1equals__claim.html new file mode 100644 index 00000000..220ef6d8 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1equals__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::equals_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::equals_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const basic_claim< json_traits > expected
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::equals_claim< json_traits, in_header >

    This is the default operation and does case sensitive matching

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html b/structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html new file mode 100644 index 00000000..4622fc8f --- /dev/null +++ b/structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::insensitive_string_claim< json_traits, in_header > Member List
    +
    + +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1insensitive__string__claim.html b/structjwt_1_1verify__ops_1_1insensitive__string__claim.html new file mode 100644 index 00000000..817835a2 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1insensitive__string__claim.html @@ -0,0 +1,149 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::insensitive_string_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::insensitive_string_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + + + +

    +Public Member Functions

    insensitive_string_claim (const typename json_traits::string_type &e, std::locale loc)
     
    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Static Public Member Functions

    +static std::string to_lower_unicode (const std::string &str, const std::locale &loc)
     
    + + + + + +

    +Public Attributes

    +const json_traits::string_type expected
     
    +std::locale locale
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::insensitive_string_claim< json_traits, in_header >

    Checks if the claim is a string and does an case insensitive comparison.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1is__subset__claim-members.html b/structjwt_1_1verify__ops_1_1is__subset__claim-members.html new file mode 100644 index 00000000..7fa58b23 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1is__subset__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::is_subset_claim< json_traits, in_header > Member List
    +
    +
    + +

    This is the complete list of members for jwt::verify_ops::is_subset_claim< json_traits, in_header >, including all inherited members.

    + + + +
    expected (defined in jwt::verify_ops::is_subset_claim< json_traits, in_header >)jwt::verify_ops::is_subset_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::is_subset_claim< json_traits, in_header >)jwt::verify_ops::is_subset_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1is__subset__claim.html b/structjwt_1_1verify__ops_1_1is__subset__claim.html new file mode 100644 index 00000000..2276ceeb --- /dev/null +++ b/structjwt_1_1verify__ops_1_1is__subset__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::is_subset_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::is_subset_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const basic_claim< json_traits >::set_t expected
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::is_subset_claim< json_traits, in_header >

    Checks if the given set is a subset of the set inside the token. If the token value is a string it is treated as a set with a single element. The comparison is case sensitive.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1verify__context-members.html b/structjwt_1_1verify__ops_1_1verify__context-members.html new file mode 100644 index 00000000..84b77849 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context-members.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::verify_context< json_traits > Member List
    +
    + +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1verify__context.html b/structjwt_1_1verify__ops_1_1verify__context.html new file mode 100644 index 00000000..6d89bb7b --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context.html @@ -0,0 +1,324 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::verify_context< json_traits > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::verify_context< json_traits > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + + + + + + + + + + + + +

    +Public Member Functions

    verify_context (date ctime, const decoded_jwt< json_traits > &j, size_t l)
     
    basic_claim< json_traits > get_claim (bool in_header, std::error_code &ec) const
     Helper method to get a claim from the jwt in this context.
     
    basic_claim< json_traits > get_claim (bool in_header, json::type t, std::error_code &ec) const
     
    basic_claim< json_traits > get_claim (std::error_code &ec) const
     Helper method to get a payload claim from the jwt.
     
    basic_claim< json_traits > get_claim (json::type t, std::error_code &ec) const
     Helper method to get a payload claim of a specific type from the jwt.
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +date current_time
     Current time, retrieved from the verifiers clock and cached for performance and consistency.
     
    +const decoded_jwt< json_traits > & jwt
     The jwt passed to the verifier.
     
    +size_t default_leeway {0}
     The configured default leeway for this verification.
     
    +json_traits::string_type claim_key {}
     The claim key to apply this comparison on.
     
    +

    Detailed Description

    +
    template<typename json_traits>
    +struct jwt::verify_ops::verify_context< json_traits >

    This is the base container which holds the token that need to be verified

    +

    Member Function Documentation

    + +

    ◆ get_claim() [1/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + + + + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (bool in_header,
    json::type t,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Helper method to get a claim of a specific type from the jwt in this context

    Parameters
    + + + + +
    in_headercheck JWT header or payload sections
    tthe expected type of the claim
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    + +

    ◆ get_claim() [2/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (bool in_header,
    std::error_code & ec ) const
    +
    +inline
    +
    + +

    Helper method to get a claim from the jwt in this context.

    +
    Parameters
    + + + +
    in_headercheck JWT header or payload sections
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    + +

    ◆ get_claim() [3/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (json::type t,
    std::error_code & ec ) const
    +
    +inline
    +
    + +

    Helper method to get a payload claim of a specific type from the jwt.

    +
    Parameters
    + + + +
    tthe expected type of the claim
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    + +

    ◆ get_claim() [4/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (std::error_code & ec) const
    +
    +inline
    +
    + +

    Helper method to get a payload claim from the jwt.

    +
    Parameters
    + + +
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1verify__context.js b/structjwt_1_1verify__ops_1_1verify__context.js new file mode 100644 index 00000000..915122b2 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context.js @@ -0,0 +1,11 @@ +var structjwt_1_1verify__ops_1_1verify__context = +[ + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#a5b4875d47d2f2ebd0055fb1e351bae89", null ], + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#a8a2aef62f0fb92d3372bdfb2bc35baa2", null ], + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#ab3a44096e09225a2623001a4a2e98da9", null ], + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#ad2148052b231e8fdfa1c277e3dfaeb1d", null ], + [ "claim_key", "structjwt_1_1verify__ops_1_1verify__context.html#ae17bf5d6d68a5138b7b05ef0cd45365b", null ], + [ "current_time", "structjwt_1_1verify__ops_1_1verify__context.html#a17a600462f21974dfc97ff60fd2e2747", null ], + [ "default_leeway", "structjwt_1_1verify__ops_1_1verify__context.html#a84d6ff2a4a9704af5ffc93a587d4cc95", null ], + [ "jwt", "structjwt_1_1verify__ops_1_1verify__context.html#ae9662ab8311e90d4209859a8446eca37", null ] +]; \ No newline at end of file diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 00000000..3b443fc6 Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 00000000..e08320fb Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 00000000..3b725c41 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 00000000..e34850ac Binary files /dev/null and b/tab_ad.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 00000000..e2b4a863 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_bd.png b/tab_bd.png new file mode 100644 index 00000000..91c25249 Binary files /dev/null and b/tab_bd.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 00000000..fd5cb705 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_hd.png b/tab_hd.png new file mode 100644 index 00000000..2489273d Binary files /dev/null and b/tab_hd.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 00000000..ab478c95 Binary files /dev/null and b/tab_s.png differ diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 00000000..757a565c Binary files /dev/null and b/tab_sd.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 00000000..6c21d61c --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} \ No newline at end of file